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"; }
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); }