Return SessionAlreadyExists error in Occupant::add_session
Signed-off-by: Maxime “pep” Buquet <pep@bouah.net>
This commit is contained in:
parent
307a888a0b
commit
f2c8e74ef4
2 changed files with 17 additions and 2 deletions
|
@ -24,6 +24,7 @@ pub enum Error {
|
|||
MismatchJids(Jid, Jid),
|
||||
NickAlreadyAssigned(String),
|
||||
NonexistantSession(FullJid),
|
||||
SessionAlreadyExists(FullJid),
|
||||
XMPPError(TokioXMPPError),
|
||||
}
|
||||
|
||||
|
@ -35,6 +36,7 @@ impl fmt::Display for Error {
|
|||
Error::MismatchJids(jid1, jid2) => write!(f, "Mismatch Jids: {}, {}", jid1, jid2),
|
||||
Error::NickAlreadyAssigned(err) => write!(f, "Nickname already assigned: {}", err),
|
||||
Error::NonexistantSession(err) => write!(f, "Session doesn't exist: {}", err),
|
||||
Error::SessionAlreadyExists(err) => write!(f, "Session already exist: {}", err),
|
||||
Error::XMPPError(err) => write!(f, "XMPP error: {}", err),
|
||||
}
|
||||
}
|
||||
|
|
17
src/room.rs
17
src/room.rs
|
@ -221,15 +221,28 @@ impl Occupant {
|
|||
|
||||
pub fn add_session(&mut self, real: FullJid) -> Result<(), Error> {
|
||||
if BareJid::from(real.clone()) != self.real {
|
||||
return Err(Error::MismatchJids(Jid::from(self.real.clone()), Jid::from(real.clone())));
|
||||
return Err(Error::MismatchJids(
|
||||
Jid::from(self.real.clone()),
|
||||
Jid::from(real.clone()),
|
||||
));
|
||||
}
|
||||
|
||||
for session in &self.sessions {
|
||||
if &real == session {
|
||||
return Err(Error::SessionAlreadyExists(real));
|
||||
}
|
||||
}
|
||||
|
||||
self.sessions.push(real);
|
||||
Ok(())
|
||||
}
|
||||
|
||||
pub fn remove_session(&mut self, real: FullJid) -> Result<(), Error> {
|
||||
if BareJid::from(real.clone()) != self.real {
|
||||
return Err(Error::MismatchJids(Jid::from(self.real.clone()), Jid::from(real.clone())));
|
||||
return Err(Error::MismatchJids(
|
||||
Jid::from(self.real.clone()),
|
||||
Jid::from(real.clone()),
|
||||
));
|
||||
}
|
||||
|
||||
let len = self.sessions.len();
|
||||
|
|
Loading…
Reference in a new issue