public void Execute() { _writer.Write("Nuclear.Channels.Server version 1.0"); _writer.Write("Starting the server...."); _initServerCommand.Execute(); _writer.Write("Starting the Server Manager...."); //Wait for handlers to be initialized since IChannelServer will start //a new Task for every ChannelMethod for (var i = 0; i < 10; i++) { _methodHandlersList = _methodHandlers.AsList(); var startingState = 0; foreach (var handler in _methodHandlersList) { if (handler.State == EntityState.Starting) { startingState++; } else if (handler.State != EntityState.Running) { _writer.Write($"{handler.HandlerId} " + $"{handler.Url} " + $"{Enum.GetName(typeof(EntityState),handler.State)}"); } } //Give time for IChannelServer to start all ChannelMethod tasks Thread.Sleep(3000); if (i <= 2 || startingState != 0) { continue; } { foreach (var handler in _methodHandlersList) { _writer.Write($"{handler.HandlerId} {handler.Url} {handler.State}"); } _writer.Write("Server initialized..."); return; } } }
public List <ChannelMethodHandler> ListChannelMethods() { return(_methodHandlers.AsList()); }