private void RegisterComponent(int port, string name, RemoteMonitor instance) { TcpDuplexServerProtocolSetup protocol = new TcpDuplexServerProtocolSetup(port); _znHost = new ZyanComponentHost(name, protocol); //_znHost.EnableDiscovery(); //_znHost.RegisterComponent<IMonitor, RemoteMonitor>(ActivationType.Singleton); _znHost.RegisterComponent <IMonitor, RemoteMonitor>(instance); _znHost.ClientLoggedOn += ClientLoggedOn; _znHost.ClientLoggedOff += ClientLoggedOff; Builder.Output(string.Format(ClassName + ": registrado componente {0} en puerto {1}.", name, port), TraceEventType.Verbose); }
static private bool IniciarComponentes() { try { // Iniciar componentes //TODO Iniciar componentes como tareas que devuelven Result. //TODO Usar Barrera para esperar inicio de todos los componentes. Builder.Output("Iniciando componentes."); // Notifier Inicio _areEsperaOperacion.Reset(); MessageBus.Register <RequestStart>(_notifier.Start); MessageBus.Register <RequestStop>(_notifier.Stop); MessageBus.Register <ReplyOK>(NotifierStartOK); MessageBus.Register <ReplyError>(ModuleStartError); MessageBus.Send(new RequestStart()); Detenerse = false; // Esperar por respuesta de Notifier _areEsperaOperacion.WaitOne(); if (Detenerse) { // ocurrio un error TerminarNotifier(_errMsg); return(false); } // Registrando mensaje de envio de email MessageBus.Register <RequestSendEmail>(_notifier.DoSendEmail); // Notifier Fin // ClientManager Inicio _areEsperaOperacion.Reset(); MessageBus.Register <RequestStart>(_clientManager.Start); MessageBus.Register <RequestStop>(_clientManager.Stop); MessageBus.Register <ReplyOK>(ClientManagerStartOK); MessageBus.Register <ReplyError>(ModuleStartError); MessageBus.Send(new RequestStart()); Detenerse = false; // Esperar por respuesta de ClientManager _areEsperaOperacion.WaitOne(); if (Detenerse) { // ocurrio un error TerminarClientManager(_errMsg); return(false); } // ClientManager Fin // ZyanServer Inicio // Remote Monitor Proxy _remoteMonitor = new RemoteMonitor(); // Registrando mensajes del proxy MessageBus.Register <SendClientConfig>(_remoteMonitor.DoReplyClientConfig); MessageBus.Register <SendSystemConfig>(_remoteMonitor.DoReplySystemConfig); MessageBus.Register <SendQueueInfo>(_remoteMonitor.DoReplyQueueInfo); // Asignando Proxy a Zyan server _zyanServer.Proxy = _remoteMonitor; _areEsperaOperacion.Reset(); MessageBus.Register <RequestStart>(_zyanServer.Start); MessageBus.Register <RequestStop>(_zyanServer.Stop); MessageBus.Register <ReplyOK>(ZyanServerStartOK); MessageBus.Register <ReplyError>(ModuleStartError); MessageBus.Send(new RequestStart()); Detenerse = false; _areEsperaOperacion.WaitOne(); if (Detenerse) { // ocurrio un error TerminarZyanServer(_errMsg); return(false); } // ZyanServer Fin Builder.Output("Componentes iniciados."); return(true); } catch (Exception ex) { Builder.Output(string.Format("{0}.IniciarComponentes: ocurrio una excepcion: {1}", ClassName, ex.Message), System.Diagnostics.TraceEventType.Error); return(false); } }