示例#1
0
        public STMSubscriberWorker(IServicoSTMCallback subscriber)
        {
            subscriberChannel = subscriber;
            queue             = new Queue <object>();
            queueSem          = new Semaphore(1, short.MaxValue);

            guid = Guid.NewGuid();

            eplName1 = guid.ToString() + "-epl1";
            eplName2 = guid.ToString() + "-epl2";
        }
示例#2
0
        public AssinarEventosSTMResponse AssinarEventosSTM(AssinarEventosSTMRequest request)
        {
            AssinarEventosSTMResponse response = new AssinarEventosSTMResponse();

            response.Status = "OK";

            try
            {
                response.Status = "ERRO";

                IServicoSTMCallback subscriber = Ativador.GetCallback <IServicoSTMCallback>();

                logger.Debug("Recebeu pedido de assinatura de mensagens: " + ((IContextChannel)subscriber).RemoteAddress.ToString());

                // Guarda a referencia do assinante na lista interna de
                // assinantes
                if (subscriber != null)
                {
                    lock (_subscribers)
                    {
                        _subscribers.Add(subscriber);
                    }

                    STMSubscriberWorker worker = new STMSubscriberWorker(subscriber);
                    worker.Start();

                    lock (_workers)
                    {
                        _workers.Add(worker);
                    }
                }
            }
            catch (Exception ex)
            {
                logger.Error("AssinarEventosSTM() Erro: " + ex.Message, ex);

                response.Status   = "ERRO";
                response.Mensagem = ex.Message;
            }

            return(response);
        }