/// <summary> /// Opens a new Session with the given connection parameters /// </summary> /// <param name = "connectionString">Connection parameters</param> public IXmppSession Open(string connectionString) { if (connection != null && connection.State == XmppConnectionState.Open) { throw new XmppException("The session is already open"); } State = XmppSessionState.LoggingIn; // Wire XmppConnection events Subscribe(); // Perform the authentication connection.Open(connectionString); if (connection != null && connection.State == XmppConnectionState.Open) { // Send Roster Request Roster.RequestRosterList(); // Set initial Presence status Presence.SetInitialPresence(); // Advertise Capabilities Capabilities.AdvertiseCapabilities(); // Discover server services ServiceDiscovery.DiscoverServices(); // Discover personal eventing support PersonalEventing.DiscoverSupport(); // Set as Logged In State = XmppSessionState.LoggedIn; } else { State = XmppSessionState.Error; } return(this); }