public WampSessionCreatedEventArgs(long sessionId, HelloDetails helloDetails, WelcomeDetails welcomeDetails, IWampSessionTerminator terminator) { SessionId = sessionId; HelloDetails = helloDetails; WelcomeDetails = welcomeDetails; Terminator = terminator; }
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); } }
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); }
public SessionDetails(long session, WelcomeDetails welcomeDetails, IWampSessionTerminator terminator) { Terminator = terminator; Session = session; WelcomeDetails = welcomeDetails; }
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); }
public void Hello(long sessionId, HelloDetails helloDetails, WelcomeDetails welcomeDetails, IWampSessionTerminator terminator) { RaiseSessionCreated(new WampSessionCreatedEventArgs(sessionId, helloDetails, welcomeDetails, terminator)); }