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; }
public void CleanupEndpoint() { foreach (var invite in this.AvInvites) { invite.Decline(); } foreach (Session session in this.Sessions) { session.UccSession = null; } this.IsDisabled = true; this.SelfPresentity.SetAvailability(AvailabilityValues.Unknown); ComEvents.UnadviseAll(this); this.selfPresentityMonitor.DestroyUccPresentity(); if (this.selfSubscription != null && this.selfSubscription.Presentities.Count > 0) { this.selfSubscription.Unsubscribe(null); } this.selfSubscription = null; foreach (Presentity presentity in this.Presentities) { presentity.DestroyUccPresentity(); } if (this.subscription != null && this.subscription.Presentities.Count > 0) { this.subscription.Unsubscribe(null); } this.subscription = null; this.signalingSettings = null; this.mediaEndpointSettings = null; this.userSearchManager = null; this.endpoint = null; }