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); } }
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); }
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); } }
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); }