Beispiel #1
0
        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;
 }
Beispiel #3
0
 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);
     }
 }
Beispiel #4
0
 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));
 }