Example #1
0
 public WampSessionCreatedEventArgs(long sessionId, HelloDetails helloDetails, WelcomeDetails welcomeDetails, IWampSessionTerminator terminator)
 {
     SessionId      = sessionId;
     HelloDetails   = helloDetails;
     WelcomeDetails = welcomeDetails;
     Terminator     = terminator;
 }
Example #2
0
        private void OnSessionCreated(object sender, WampSessionCreatedEventArgs e)
        {
            lock (mLock)
            {
                IWampSessionTerminator terminator     = e.Terminator;
                WelcomeDetails         welcomeDetails = e.WelcomeDetails;

                mSessionIdToDetails   = mSessionIdToDetails.SetItem(e.SessionId, new SessionDetails(e.SessionId, e.WelcomeDetails, e.Terminator));
                mAuthIdToTerminator   = RecalculateAuthenticationDetails(mAuthIdToTerminator, welcomeDetails?.AuthenticationId, terminator);
                mAuthRoleToTerminator = RecalculateAuthenticationDetails(mAuthRoleToTerminator, welcomeDetails?.AuthenticationRole, terminator);
            }
        }
Example #3
0
        private ImmutableDictionary <string, ImmutableList <IWampSessionTerminator> > RecalculateAuthenticationDetails(
            ImmutableDictionary <string, ImmutableList <IWampSessionTerminator> > map, string key,
            IWampSessionTerminator terminator)
        {
            var result = map;

            if (key != null)
            {
                if (!map.TryGetValue(key, out var list))
                {
                    list = ImmutableList <IWampSessionTerminator> .Empty;
                }

                result = map.SetItem(key,
                                     list.Add(terminator));
            }

            return(result);
        }
Example #4
0
 public SessionDetails(long session, WelcomeDetails welcomeDetails, IWampSessionTerminator terminator)
 {
     Terminator     = terminator;
     Session        = session;
     WelcomeDetails = welcomeDetails;
 }
Example #5
0
        private ImmutableDictionary <string, ImmutableList <IWampSessionTerminator> > TryRemoveAuthData(
            ImmutableDictionary <string, ImmutableList <IWampSessionTerminator> > map, string key, IWampSessionTerminator terminator)
        {
            var result = map;

            if ((key != null) && (map.TryGetValue(key, out var list)))
            {
                list = list.Remove(terminator);

                if (list.IsEmpty)
                {
                    result = map.Remove(key);
                }
                else
                {
                    result = map.SetItem(key, list);
                }
            }

            return(result);
        }
Example #6
0
 public void Hello(long sessionId, HelloDetails helloDetails, WelcomeDetails welcomeDetails, IWampSessionTerminator terminator)
 {
     RaiseSessionCreated(new WampSessionCreatedEventArgs(sessionId, helloDetails, welcomeDetails, terminator));
 }