public bool RegisterListListener(LoginSession session, String server, int list) { try { IListServiceClient callback = _callbackCreator(); lock (_subscribersLock) { if (!_subscribers.Exists(client => client.IsCurrentCallback(callback))) { _subscribers.Add(new AsyncListServiceClient(callback)); } _subscribers.Find(client => client.IsCurrentCallback(callback)).AddChannel(new Channel(server, list)); } CheckClients(null, null); return(true); } catch (CommunicationException ex) { ServiceLogger.Error("Error while registering ListListener", ex); return(false); } }
public AsyncListServiceClient(IListServiceClient callback) { _callback = callback; _channels = new List <Channel>(); _servers = new List <string>(); _listLocks = new List <Channel>(); _isDisposed = false; }
public void UnregisterConnectionStateListener(LoginSession session, String server) { try { IListServiceClient callback = _callbackCreator(); lock (_subscribersLock) { if (_subscribers.Exists(client => client.IsCurrentCallback(callback))) { _subscribers.Find(client => client.IsCurrentCallback(callback)).RemoveServer(server); } //_subscribers.RemoveAll(client => !client.HasCallbacks()); RemoveDeadClients(); } } catch (CommunicationException ex) { ServiceLogger.Error("Error while unregistering ConnectionStateListener", ex); } }
public bool RegisterConnectionStateListener(LoginSession session, String server) { try { IListServiceClient callback = _callbackCreator(); lock (_subscribersLock) { if (!_subscribers.Exists(client => client.IsCurrentCallback(callback))) { _subscribers.Add(new AsyncListServiceClient(callback)); } _subscribers.Find(client => client.IsCurrentCallback(callback)).AddServer(server); } return(true); } catch (CommunicationException ex) { ServiceLogger.Error("Error while registering ConnectionStateListener", ex); return(false); } }
protected override void Dispose(Boolean disposing) { if (!_isDisposed) { // Free the Unmanaged Resources if (disposing) { _callback = null; _channels.Clear(); _channels = null; _channelsLocker = null; _listLocks.Clear(); _listLocks = null; _listLocksLocker = null; _servers.Clear(); _servers = null; _serversLocker = null; GC.Collect(); } base.Dispose(disposing); _isDisposed = true; } }
public virtual void ExecuteCallback(IListServiceClient client) { }
public Boolean IsCurrentCallback(IListServiceClient callback) { return(callback.Equals(this._callback)); }