5 using System.Collections.Generic;
16 private bool disposed;
36 public List<Session> Sessions {
get;
private set; }
41 public bool IsServerConnected {
get;
private set; }
45 sessionManager = sessionMgr;
46 Sessions =
new List<Session>();
48 if (sessionManager != null)
94 using (
Session currentSession = GetCurrentSession())
96 if (currentSession != null)
98 currentSession.
Leave();
118 private void OnSessionCreatedFail(
XString reason)
122 SessionCreated.RaiseEvent(
false, reason.
GetString());
126 private void OnSessionCreatedSuccess(
Session session)
134 private void OnUserChanged(
Session session,
User user)
136 UserChanged.RaiseEvent(session, user);
139 private void OnUserLeft(
Session session,
User user)
141 UserLeft.RaiseEvent(session, user);
143 if (IsLocalUser(user))
145 CurrentUserLeft.RaiseEvent(session);
149 private void OnUserJoined(
Session session,
User newUser)
151 UserJoined.RaiseEvent(session, newUser);
153 if (IsLocalUser(newUser))
155 CurrentUserJoined.RaiseEvent(session);
159 private void OnSessionAdded(
Session newSession)
161 Sessions.Add(newSession);
162 SessionAdded.RaiseEvent(newSession);
165 private void OnSessionClosed(
Session session)
167 for (
int i = 0; i < Sessions.Count; i++)
169 if (Sessions[i].GetName().ToString().Equals(session.
GetName().
ToString()))
171 SessionClosed.RaiseEvent(Sessions[i]);
172 Sessions.Remove(Sessions[i]);
177 private void OnServerDisconnected()
179 IsServerConnected =
false;
182 for (
int i = 0; i < Sessions.Count; i++)
184 Sessions[i].Dispose();
188 ServerDisconnected.RaiseEvent();
191 private void OnServerConnected()
193 IsServerConnected =
true;
194 ServerConnected.RaiseEvent();
197 private bool IsLocalUser(
User user)
199 int changedUserId = user.
GetID();
202 int localUserId = localUser.
GetID();
203 return localUserId == changedUserId;
212 GC.SuppressFinalize(
this);
215 protected virtual void Dispose(
bool disposing)
219 OnServerDisconnected();
221 if (sessionManagerAdapter != null)
232 sessionManagerAdapter.
Dispose();
233 sessionManagerAdapter = null;
236 if (sessionManager != null)
239 sessionManager = null;