Пример #1
0
        internal void DoPauseClient(RequestPauseClient req)
        {
            // Verificar existencia de clave.
            if (!_clientList.ContainsGuid(req.Id))
            {
                //TODO Log clave inexistente.
                return;
            }
#if !TEST
            // Comenzar cambio cuando no se ejecuta queue manager process.
            _areClientUpdate.WaitOne();
#endif
            // Obtener cliente.
            ClientData client = _clientList.GetClient(req.Id);

            // Modificar Status.
            client.Status = ClientStatus.Pausado;

            // Quitar de _workList.
            lock (_workList)
            {
                if (_workList.Contains(client))
                {
                    _workList.Remove(client);
                }
            }
            // Poner en _pausedList.
            lock (_pausedList)
            {
                if (!_pausedList.Contains(client))
                {
                    _pausedList.Add(client);
                }
            }

            // Enviar actualizacion a Supervisor
            SendQueueStatus();

            // Notificar.
            MessageBus.Send(new RequestSendEmail(EMessageAction.Pause, DateTime.Now, client));
            Builder.Output(string.Format("{0} : Cliente {1} movido a cola de Pausado.", ClassName, client.Name), TraceEventType.Verbose);
        }
Пример #2
0
 // Pausar cliente
 public void PauseClient(RequestPauseClient req)
 {
     DoPauseClient(req);
 }