public void DoLogOn(AuthData authData) { Trace.WriteLine("Entering RTCPresenceCore.DoLogOn"); if (authData == null || !authData.IsValid()) { this.presenceUI.OnLoggedOff(); return; } if (this.profile != null) { Trace.WriteLine("Already logged on"); return; } Trace.WriteLine(authData); int lTransport = 0; try { if (authData.Transport != null) { if (authData.Transport == "UDP") { lTransport = RTCConst.RTCTR_UDP; } else if (authData.Transport == "TCP") { lTransport = RTCConst.RTCTR_TCP; } else if (authData.Transport == "TLS") { lTransport = RTCConst.RTCTR_TLS; } } this.client.GetProfile( null, // bstrUserAccount null, // bstrUserPassword authData.Uri, // bstrUserURI authData.Server, // bstrServer lTransport, // lTransport 0 // lCookie ); } catch (COMException ex1COM) { Trace.WriteLine("COMException " + ex1COM.Message); this.presenceUI.OnLoggedOff(); } }
void OnRTCRegistrationStateChangeEvent(IRTCRegistrationStateChangeEvent registerEvent) { Trace.WriteLine("Entering RTCPresenceCore.OnRTCRegistrationStateChangeEvent " + registerEvent.State); switch (registerEvent.State) { case RTC_REGISTRATION_STATE.RTCRS_UNREGISTERING: this.presenceUI.OnLoggingOff(); break; case RTC_REGISTRATION_STATE.RTCRS_NOT_REGISTERED: this.DoDisablePresence(); this.presenceUI.OnLoggedOff(); break; case RTC_REGISTRATION_STATE.RTCRS_REGISTERING: this.presenceUI.OnLoggingOn(); break; case RTC_REGISTRATION_STATE.RTCRS_REGISTERED: this.presenceUI.OnLoggedOn(); break; case RTC_REGISTRATION_STATE.RTCRS_REJECTED: case RTC_REGISTRATION_STATE.RTCRS_ERROR: { int statusCode = registerEvent.StatusCode; Trace.WriteLine("RTCRS_REJECTED/ERROR " + statusCode); // Logon failed. Most likely the server could no be found, // or the user needs to authenticate. if ((statusCode == RTCConst.RTC_E_STATUS_CLIENT_UNAUTHORIZED) || (statusCode == RTCConst.RTC_E_STATUS_CLIENT_PROXY_AUTHENTICATION_REQUIRED) || (statusCode == RTCConst.RTC_E_STATUS_CLIENT_FORBIDDEN) || (statusCode == RTCConst.RTC_E_STATUS_CLIENT_NOT_FOUND)) { AuthData authData = this.presenceUI.ShowAuthDialog(); if (authData != null && authData.IsValid()) { this.DoAuth(authData.Uri, authData.Account, authData.Password); } else { this.DoLogOff(); this.DoDisablePresence(); this.presenceUI.OnLoggedOff(); // If we were logging on the show error if (registrationState == RTC_REGISTRATION_STATE.RTCRS_REGISTERING) { this.presenceUI.ShowMessage("Logon failed!", "Warning"); } return; } } else { // Logon failed this.DoLogOff(); this.DoDisablePresence(); this.presenceUI.OnLoggedOff(); // If we were logging on the show error if (this.registrationState == RTC_REGISTRATION_STATE.RTCRS_REGISTERING) { this.presenceUI.ShowMessage("Logon failed!", "Warning"); } return; } } break; case RTC_REGISTRATION_STATE.RTCRS_LOGGED_OFF: // The server has removed the registration for this profile. // Incoming requests are no longer forwarded. this.DoLogOff(); this.presenceUI.OnLoggingOff(); break; case RTC_REGISTRATION_STATE.RTCRS_LOCAL_PA_LOGGED_OFF: // The server has revoked the status as a presence agent for // this user. Incoming presence subscriptions are no longer // forwarded and our presence status is no longer visible to // others from this client. break; case RTC_REGISTRATION_STATE.RTCRS_REMOTE_PA_LOGGED_OFF: // The client that was the presence agent for this user has // logged off. It may be possible to register as a presence //agent from this client. break; default: break; } this.registrationState = registerEvent.State; }