/************************************************************************ * The Input: ImageController a LoggingService and the way to a handler. * The Output: - * The Function operation: The function builds a server. *************************************************************************/ public ImageServer(IImageController controller, ILoggingService logging, string[] handlersPath) { m_controller = controller; m_logging = logging; m_logging.MessageReceived += OnLogMessageReceived; RemoveHandlerCommand removeHandlerCommand = new RemoveHandlerCommand(); removeHandlerCommand.RemoveHandler += OnRemoveHandler; controller.AddCommand(CommandEnum.RemoveHandlerCommand, removeHandlerCommand); commands = new Dictionary <string, CommandEnum>() { { "Close Handler", CommandEnum.CloseCommand } }; serverChannel = new TCPConnectionServer(new ClientHandler(m_controller, m_logging)); serverChannel.Start(); handlers = new List <IDirectoryHandler>(); this.handlersPath = handlersPath; //Creating handlers. for (int i = 0; i < handlersPath.Length; i++) { handlers.Add(new DirectoryHandler(this.m_controller, this.m_logging)); handlers[i].StartHandleDirectory(handlersPath[i]); CommandReceived += handlers[i].OnCommandRecieved; handlers[i].DirectoryClose += OnHandlerClose; // Logging each handler into the entry. m_logging.Log("Directory Handler created at path:" + handlersPath[i], Logging.Modal.MessageTypeEnum.INFO); } }
protected override void OnStart(string[] args) { #region Other eventLog.WriteEntry("In OnStart", EventLogEntryType.Information); // Updates the service state to Start Pending. ServiceStatus serviceStatus = new ServiceStatus { dwCurrentState = ServiceState.ServiceStartPending, dwWaitHint = 100000 }; SetServiceStatus(ServiceHandle, ref serviceStatus); // Updates the service state to Running. serviceStatus.dwCurrentState = ServiceState.ServiceRunning; SetServiceStatus(ServiceHandle, ref serviceStatus); _loggingService = new LoggingService(); _loggingService.MessageRecieved += OnMessegeRecieved; #endregion _controller = new ImageController(); _imageServer = new ImageServer(_controller, _loggingService); _imageServer.DirectoryHandlerClosed += OnDirectoryHandlerClosed; InitializeSettingsInfo(); _model = new ImageServiceModel(_settingsInfo.OutputDirectory, _settingsInfo.ThumbnailSize); // Creates TCP server _tcpServer = new TcpServer(8000, _loggingService, new TcpClientHandlerFactory(_controller)); _tcpServer.NewClientConnected += OnNewClientConnected; eventLog.EntryWritten += _tcpServer.OnLogEntryWritten; _controller.AddCommand(CommandEnum.NewFileCommand, new NewFileCommand(_model)); _controller.AddCommand(CommandEnum.CloseDirectoryHandlerCommand, new CloseDirectoryHandlerCommand(_imageServer)); }
public event EventHandler <CommandReceivedEventArgs> CommandReceived; // The event that notifies about a new Command being recieved #endregion /// <summary> /// The ImageServer's constructor. /// </summary> /// <param name="imageLogger">The image logger</param> /// <param name="imageController">The image controller</param> public ImageServer(ILoggingService imageLogger, IImageController imageController) { controller = imageController; logger = imageLogger; logger.MessageReceived += OnLogMessageReceived; RemoveHandlerCommand removeHandlerCommand = new RemoveHandlerCommand(); removeHandlerCommand.RemoveHandler += OnRemoveHandler; controller.AddCommand(CommandEnum.RemoveHandlerCommand, removeHandlerCommand); commands = new Dictionary <string, CommandEnum>() { { "Close Handler", CommandEnum.CloseCommand } }; //serverChannel = new TCPServerChannel(new ClientHandler(controller, logger)); imageServer = new TCPImageServer(new ImageHandler(controller, logger)); //serverChannel.Start(); imageServer.Start(); //CreateHandlers(); // serverChannel.OnMessageToServer += OnMessageToServerReceived; //maybe outer task it instead of inner task }