Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        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);
            }
        }