public ServerConnectionLifetimeScope(ICliServer server, ILifetimeScope parentLifetimeScope) { this.server = server; this.parentLifetimeScope = parentLifetimeScope; server.Connected += ServerOnConnected; server.Disconnected += ServerOnDisconnected; }
protected override async Task <int> Execute(ICommandManager commandManager) { ExecutionContext context = LifetimeScope.Resolve <ExecutionContext>(); ContainerBuilder serverBuilder = new ContainerBuilder(); serverBuilder.RegisterModule <NamedPipeServer.DiModule>(); serverBuilder.RegisterInstance(new CommandLineLifetimeScope(LifetimeScope)) .AsSelf(); serverBuilder.RegisterInstance(LifetimeScope.Resolve <ILog>()).As <ILog>(); using (IContainer serverHost = serverBuilder.Build()) using (ManualResetEvent serverStoppedEvent = new ManualResetEvent(false)) { ICliServer server = serverHost.Resolve <ICliServer>(); server.Disconnected += ServerOnDisconnected; context.WriteInformation(string.Format(CultureInfo.InvariantCulture, MessageResources.StartingServerMessage, ServerName)); bool result = await server.Start(ServerName, HeartbeatEnabled).ConfigureAwait(false); if (!result) { return(-1); } context.WriteInformation(MessageResources.ServerStartedMessage); serverStoppedEvent.WaitOne(-1, true); void ServerOnDisconnected(object sender, EventArgs e) { server.Disconnected -= ServerOnDisconnected; serverStoppedEvent.Set(); } } context.WriteInformation(MessageResources.ServerStopped); return(0); }
public CommandLineMediator(IMessageParser messageParser, ICommandLineFacade commandLine, ICliServer server, IMessageSender messageSender, ILog logger) { this.messageParser = messageParser; this.commandLine = commandLine; this.server = server; this.messageSender = messageSender; this.logger = logger; messageParser.CommandIssued += MessageParserOnCommandIssued; messageParser.CommandCanceled += MessageParserOnCommandCanceled; messageParser.SuicideIssued += MessageParserOnSuicideIssued; messageParser.HandshakeCompleted += MessageParserOnHandshakeCompleted; commandLine.MessageReceived += CommandLineOnMessageReceived; commandLine.ProgressReceived += CommandLineOnProgressReceived; commandLine.InfiniteProgressStarted += CommandLineOnInfiniteProgressStarted; }