public override void HandlePresence(Streams.XmppStream stream, Presence presence, XmppHandlerContext context)
 {
     if (presence.Type == PresenceType.available || presence.Type == PresenceType.unavailable)
     {
         if (!ReferenceEquals(Member.Stream, stream))
         {
             //Set stream
             Member.Stream = stream;
             if (presence.Type == PresenceType.available)
             {
                 //If stream changed then we should broadcast presences
                 Member.ReEnterRoom();
             }
         }
         Member.ChangePesence(presence);
     }
     else
     {
         //Bad request                
         presence.SwitchDirection();
         presence.From = Member.RoomFrom;
         presence.Type = PresenceType.error;
         presence.Error = new Error(ErrorCondition.BadRequest);
         context.Sender.SendTo(stream, presence);
     }
 }
 public override void HandlePresence(XmppStream stream, Presence presence, XmppHandlerContext context)
 {
     //Presence to open new room
     if (MucHelpers.IsJoinRequest(presence))
     {
         //Register
         Service.CreateRoom(new Jid(presence.To.Bare), null);
         Service.HandlerManager.ProcessStreamElement(presence, stream);//Forward to room
     }
     else
     {
         //Return error
         presence.Type = PresenceType.error;
         presence.Error = new Error(ErrorType.cancel, ErrorCondition.NotAllowed);
         presence.SwitchDirection();
         context.Sender.SendTo(stream, presence);
     }
 }
Beispiel #3
0
		private void ErrorPresence(Presence presence, ErrorCondition condition, int code)
		{
			presence.Type = PresenceType.error;
			presence.RemoveAllChildNodes();
			presence.Error = new Error(condition);
			if (code != -1)
			{
				presence.Error.Code = (ErrorCode)code;
			}
			presence.SwitchDirection();
			presence.From = Jid;
		}
 private static void ErrorPresence(Presence presence, ErrorCondition condition) {
     presence.SwitchDirection();
     presence.RemoveAllChildNodes();
     presence.AddChild(new Muc());
     presence.Type = PresenceType.error;
     presence.Error = new Error(condition);
 }