private void InitializeEndpoint(EndpointConfiguration configuration, AuthenticationMode authMode) { this.CleanupEndpoint(); // set vars if (Helpers.TryParseUri(Helpers.CorrectUri(configuration.Uri), out this.uri) == false) { throw new Exception("Sign-in address is not valid Uri"); } this.selfPresentity.SetUri(this.uri.Value); this.selfPresentityMonitor.SetUri(this.uri); this.disableImSessions = configuration.DisableImSessions; // platform events ComEvents.Advise <_IUccPlatformEvents>(this.platform, this); // create endpoint this.endpoint = this.platform.CreateEndpoint(UCC_ENDPOINT_TYPE.UCCET_PRINCIPAL_SERVER_BASED, this.uri, configuration.EndpoindIdString, null); ComEvents.Advise <_IUccEndpointEvents>(this.endpoint, this); ComEvents.Advise <_IUccSessionManagerEvents>(this.endpoint, this); // server signaling settings this.signalingSettings = (IUccServerSignalingSettings)this.endpoint; ComEvents.Advise <_IUccServerSignalingSettingsEvents>(this.signalingSettings, this); this.signalingSettings.AllowedAuthenticationModes = (int)authMode.ToUccAuthenticationMode(); UccCredential credential = authMode.IsDefaultCreditals() ? this.signalingSettings.CredentialCache.DefaultCredential : this.signalingSettings.CredentialCache.CreateCredential(configuration.Username, configuration.Password, null); this.signalingSettings.CredentialCache.SetCredential(configuration.Realm, credential); // media endpoint settings this.mediaEndpointSettings = (IUccMediaEndpointSettings)this.endpoint; ComEvents.Advise <_IUccMediaEndpointEvents>(this.endpoint, this); // create session manager this.sessionManager = (IUccSessionManager)this.endpoint; ComEvents.Advise <_IUccSessionManagerEvents>(this.sessionManager, this); // create user search manager this.userSearchManager = (IUccUserSearchManager)this.endpoint; }
/// <summary> /// Create Session with appropriate session type /// </summary> /// <param name="sessionType"></param> public void CreateSession(UCC_SESSION_TYPE sessionType) { // Create Session IUccSessionManager sessionManager = this.endpoint as IUccSessionManager; IUccSession session = sessionManager.CreateSession(sessionType, null); // Register to receive events if (sessionType == UCC_SESSION_TYPE.UCCST_INSTANT_MESSAGING) { this.imSession = session; // Advise for InstantMessagingSession Events Advise <_IUccInstantMessagingSessionEvents>(session, this); } else if (sessionType == UCC_SESSION_TYPE.UCCST_AUDIO_VIDEO) { this.avSession = session; } // Advise for SessionParticipantCollectionEvents & SessionEvents Advise <_IUccSessionParticipantCollectionEvents>(session, this); Advise <_IUccSessionEvents>(session, this); }