Inheritance: global::System.IDisposable
 void Start()
 {
     // Get the SessionManager to use later.  Note that if this processes takes the role of a secondary client,
     // then the SessionManager will always be null
     if (SharingStage.Instance != null && SharingStage.Instance.Manager != null)
     {
         this.sessionManager = SharingStage.Instance.Manager.GetSessionManager();
     }
 }
        void Update()
        {
            // Get an instance of the SessionManager if one does not exist.
            if (sessionManager == null && SharingStage.Instance != null && SharingStage.Instance.Manager != null)
            {
                this.sessionManager = SharingStage.Instance.Manager.GetSessionManager();
            }

            // If we are a Primary Client and can join sessions...
            if (this.sessionManager != null && sessionManager.GetSessionCount() > 0)
            {
                // Check to see if we aren't already in the desired session
                Session currentSession = this.sessionManager.GetCurrentSession();

                if (currentSession == null ||                                                       // We aren't in any session
                    currentSession.GetName().GetString() != this.SessionName ||                     // We're in the wrong session
                    currentSession.GetMachineSessionState() == MachineSessionState.DISCONNECTED)    // We aren't joined or joining the right session
                {
                    Debug.Log("Session conn " + sessionManager.IsServerConnected() + " sessions: " + sessionManager.GetSessionCount());
                    Debug.Log("Looking for " + SessionName);
                    bool sessionFound = false;

                    for (int i = 0; i < this.sessionManager.GetSessionCount(); ++i)
                    {
                        Session s = this.sessionManager.GetSession(i);
                        Debug.Log(string.Format("session {0}", s.GetName().GetString()));

                        if (s.GetName().GetString() == this.SessionName)
                        {
                            s.Join();
                            sessionFound = true;
                            break;
                        }
                    }
                    if (sessionManager.IsServerConnected() && !sessionFound)
                    {
                        Debug.Log("Didn't find session, making a new one");
                        sessionManager.CreateSession(new XString(SessionName));

                        for (int i = 0; i < this.sessionManager.GetSessionCount(); ++i)
                        {
                            Session s = this.sessionManager.GetSession(i);
                            if (s.GetName().GetString() == this.SessionName)
                            {
                                s.Join();
                                Debug.Log("Joining our new session");
                                sessionFound = true;
                                break;
                            }
                        }
                    }
                }
            }
        }