Example #1
0
 public void SendPresenceToSignalR(Presence presence, XmppSessionManager sessionManager)
 {
     try
     {
         var state = SignalRHelper.GetState(presence.Show, presence.Type);
         if (state == SignalRHelper.USER_OFFLINE && sessionManager != null)
         {
             var jidSessions = sessionManager.GetBareJidSessions(presence.From).
                               Where(s => !s.IsSignalRFake && s.Presence.Type != PresenceType.unavailable);
             if (jidSessions.Count() > 0)
             {
                 int priority    = jidSessions.First().Priority;
                 var bestSession = jidSessions.First();
                 foreach (var session in jidSessions)
                 {
                     if (session.Priority > priority)
                     {
                         priority    = session.Priority;
                         bestSession = session;
                     }
                 }
                 _reverseJabberServiceClient.SendState(bestSession.Presence.From.User.ToLowerInvariant(),
                                                       SignalRHelper.GetState(bestSession.Presence.Show, bestSession.Presence.Type), -1, bestSession.Presence.From.Server);
                 return;
             }
         }
         _reverseJabberServiceClient.SendState(presence.From.User.ToLowerInvariant(), state, -1, presence.From.Server);
     }
     catch (Exception e)
     {
         _log.ErrorFormat("Can not send to {0} to SignalR: {1} {2}", presence, e.Message, e.StackTrace);
     }
 }
Example #2
0
        public void OnRegister(IServiceProvider serviceProvider)
        {
            offlineStore   = ((StorageManager)serviceProvider.GetService(typeof(StorageManager))).OfflineStorage;
            rosterStore    = ((StorageManager)serviceProvider.GetService(typeof(StorageManager))).RosterStorage;
            sender         = (IXmppSender)serviceProvider.GetService(typeof(IXmppSender));
            sessionManager = (XmppSessionManager)serviceProvider.GetService(typeof(XmppSessionManager));
            handlerManager = (XmppHandlerManager)serviceProvider.GetService(typeof(XmppHandlerManager));

            sessionManager.SessionAvailable   += SessionAvailable;
            sessionManager.SessionUnavailable += SessionUnavailable;
        }
        public XmppHandlerManager(XmppSessionManager sessionManager, IXmppResolver resolver)
        {
            Args.NotNull(sessionManager, "sessionManager");
            Args.NotNull(resolver, "resolver");

            this.router         = new XmppHandlerRouter();
            this.sessionManager = sessionManager;
            this.resolver       = resolver;
            this.context        = new XmppHandlerContext(this, resolver);

            this.defaultHandler          = new XmppDefaultHandler();
            this.defaultInvoker          = new XmppHandlerRouter.Invoker <Element>(defaultHandler.ProcessElement, "DefaultHandler");
            this.SupportedAuthMechanisms = new List <Mechanism>();
        }
        public XmppServer()
        {
            StorageManager = new StorageManager();
            userManager    = new UserManager(StorageManager);
            AuthManager    = new AuthManager();

            StreamManager  = new XmppStreamManager();
            SessionManager = new XmppSessionManager();

            gateway = new XmppGateway();
            sender  = new XmppSender(gateway);

            serviceManager = new XmppServiceManager(this);
            HandlerManager = new XmppHandlerManager(StreamManager, gateway, sender, this);
        }
Example #5
0
 public void SendPresenceToSignalR(Presence presence, XmppSessionManager sessionManager)
 {
     try
     {
         var state = SignalRHelper.GetState(presence.Show, presence.Type);
         if (state == SignalRHelper.USER_OFFLINE && sessionManager != null)
         {
             //sessionManager.CloseSession(presence.From.BareJid);
         }
         SignalrServiceClient.SendState(presence.From.User.ToLowerInvariant(), state, -1, presence.From.Server);
     }
     catch (Exception e)
     {
         _log.ErrorFormat("Can not send to {0} to SignalR: {1} {2}", presence, e.Message, e.StackTrace);
     }
 }
Example #6
0
 public override void OnRegister(IServiceProvider serviceProvider)
 {
     storages       = (StorageManager)serviceProvider.GetService(typeof(StorageManager));
     sender         = (IXmppSender)serviceProvider.GetService(typeof(IXmppSender));
     sessionManager = (XmppSessionManager)serviceProvider.GetService(typeof(XmppSessionManager));
 }
 public override void OnRegister(IServiceProvider serviceProvider)
 {
     sessionManager = (XmppSessionManager)serviceProvider.GetService(typeof(XmppSessionManager));
     xmppSender     = (IXmppSender)serviceProvider.GetService(typeof(IXmppSender));
     base.OnRegister(serviceProvider);
 }