示例#1
0
        /// <summary>
        /// c'tor
        /// </summary>
        /// <param name="m_controller"></param> to execute commands from its dictionary
        /// <param name="m_logging"></param> to send logs
        public ImageServer(IImageController m_controller, ILoggingService m_logging)
        {
            this._mController = m_controller;
            this._mLogging    = m_logging;
            string[] directories = (ConfigurationManager.AppSettings.Get("Handler").Split(';'));
            foreach (string dir in directories)
            {
                if (Directory.Exists(dir))
                {
                    createHandler(dir);
                }
                else
                {   // if dir is not exists
                    bool     result;
                    string[] args = { dir };
                    m_controller.ExecuteCommand((int)CommandEnum.CloseCommand, args, out result);
                    m_logging.Log("Not such file or directory: " + dir, MessageTypeEnum.WARNING);
                }
            }

            // get comunication details to connect the server
            string ip   = ConfigurationManager.AppSettings.Get("Ip");
            int    port = Int32.Parse(ConfigurationManager.AppSettings.Get("Port"));

            serverChannel                 = new TcpServerChannel(port, ip);
            serverChannel.NewHandler     += OnNewClient;        // for new client
            ClientHandler.MessageRecived += GetMessageFromUser; // for msg from the user
            serverChannel.Start();
        }
示例#2
0
        protected override void OnStart(string[] args)
        {
            // Update the service state to Start Pending.
            ServiceStatus serviceStatus = new ServiceStatus();

            serviceStatus.dwCurrentState = ServiceState.SERVICE_START_PENDING;
            serviceStatus.dwWaitHint     = 100000;
            SetServiceStatus(this.ServiceHandle, ref serviceStatus);

            eventLog1.WriteEntry("In OnStart");

            // Set up a timer to trigger every minute.
            System.Timers.Timer timer = new System.Timers.Timer();
            timer.Interval = 60000; // 60 seconds
            timer.Elapsed += new System.Timers.ElapsedEventHandler(this.OnTimer);
            timer.Start();

            // Update the service state to Running.
            serviceStatus.dwCurrentState = ServiceState.SERVICE_RUNNING;
            SetServiceStatus(this.ServiceHandle, ref serviceStatus);

            //creating the Logger object used in the system
            ILoggsRecorder logger = new LoggingService();

            logger.MessageRecieved += this.WriteToEventLogger;
            logger.Log("In ImageService created the logging service", MessageTypeEnum.INFO);

            //creating the modal with app config paramaters
            logger.Log("In ImageService starting to create the Modal, Controller and Server", MessageTypeEnum.INFO);
            logger.Log("Here is a warning message1", MessageTypeEnum.WARNING);
            var    appSettings = ConfigurationManager.AppSettings;
            string outputDir   = appSettings["OutputDir"];

            string[] dirsToBeHandled = appSettings["Handler"].Split(';');
            int      thumbnailSize;

            //if conversion failed, put default value
            if (!Int32.TryParse(appSettings["ThumbnailSize"], out thumbnailSize))
            {
                thumbnailSize = 120;
            }

            IImageModal modal      = new ImageModal(logger, outputDir, thumbnailSize);
            IController controller = new Controller.Controller(modal, logger);

            IServerChannel serverChannel      = new TcpServerChannel(8080);
            IServerChannel photoServerChannel = new TcpPhotoChannel(8000);

            serverChannel.Start();
            server = new ImageServer(controller, logger, serverChannel, photoServerChannel, dirsToBeHandled);
            logger.MessageRecieved += serverChannel.NotifyServerOfMessage;
            controller.SetDHManager(server);
            logger.Log("Here is a warning message2", MessageTypeEnum.WARNING);
            logger.Log("In ImageService finished creating the Modal, Controller and Server", MessageTypeEnum.INFO);
            logger.Log("Here is a fail message, for display only", MessageTypeEnum.FAIL);
            logger.Log("Another fail message, for display only", MessageTypeEnum.FAIL);
        }
        public bool Start()
        {
            HostServices.HostServices.Start();

            Log.LogInfo("----------------------------------------------------------");


            try
            {
                int port = Constants.DefaultPort;

                if (File.Exists(Constants.NodeConfigFileName))
                {
                    try
                    {
                        var nodeConfig = SerializationHelper.FormattedSerializer.Deserialize <NodeConfig>(new JsonTextReader(new StringReader(File.ReadAllText(Constants.NodeConfigFileName))));
                        port = nodeConfig.TcpPort;
                    }
                    catch (Exception e)
                    {
                        Log.LogError($"Error reading configuration file {Constants.NodeConfigFileName} : {e.Message}");
                    }
                }
                else
                {
                    Log.LogWarning($"Configuration file {Constants.NodeConfigFileName} not found. Using defaults");
                }
                _cacheServer = new Server.Server(new ServerConfig(), true);

                _listener            = new TcpServerChannel();
                _cacheServer.Channel = _listener;
                _listener.Init(port);
                _listener.Start();


                Log.LogInfo("Starting hosted service on port " + port);

                _cacheServer.StopRequired += (sender, args) =>
                {
                    HostServices.HostServices.Stop();
                    Stop();

                    _stopEvent.Set();
                };
                _cacheServer.Start();
            }
            catch (Exception e)
            {
                Log.LogError($"Failed to start host: {e}");

                return(false);
            }

            Log.LogInfo("Host started successfully");

            return(true);
        }
        public void Init()
        {
            _serverChannel = new TcpServerChannel();

            _server = new Server.Server(new ServerConfig())
            {
                Channel = _serverChannel
            };
            _serverPort = _serverChannel.Init();
            _serverChannel.Start();
            _server.Start();
            Thread.Sleep(500); //be sure the server is started
        }
示例#5
0
        public void Init()
        {
            _serverChannel1 = new TcpServerChannel();
            _server1        = new Server.Server(new NodeConfig {
                DataPath = "server1"
            })
            {
                Channel = _serverChannel1
            };
            _serverPort1 = _serverChannel1.Init();
            _serverChannel1.Start();
            _server1.Start();

            _serverChannel2 = new TcpServerChannel();
            _server2        = new Server.Server(new NodeConfig {
                DataPath = "server2"
            })
            {
                Channel = _serverChannel2
            };
            _serverPort2 = _serverChannel2.Init();
            _serverChannel2.Start();
            _server2.Start();


            Thread.Sleep(500); //be sure the server nodes are started

            _client1 = new DataClient
            {
                Channel     = new TcpClientChannel(new TcpClientPool(4, 1, "localhost", _serverPort1)),
                ShardIndex  = 0,
                ShardsCount = 2
            };

            _client2 = new DataClient
            {
                Channel     = new TcpClientChannel(new TcpClientPool(4, 1, "localhost", _serverPort2)),
                ShardIndex  = 1,
                ShardsCount = 2
            };

            _aggregator = new DataAggregator {
                CacheClients = { _client1, _client2 }
            };


            _aggregator.DeclareCollection <CacheableTypeOk>();
        }
示例#6
0
        public void Init()
        {
            _serverChannel1 = new TcpServerChannel();
            _server1        = new Server.Server(new ServerConfig())
            {
                Channel = _serverChannel1
            };
            _serverPort1 = _serverChannel1.Init();
            _serverChannel1.Start();
            _server1.Start();

            _serverChannel2 = new TcpServerChannel();
            _server2        = new Server.Server(new ServerConfig())
            {
                Channel = _serverChannel2
            };
            _serverPort2 = _serverChannel2.Init();
            _serverChannel2.Start();
            _server2.Start();


            Thread.Sleep(500); //be sure the server nodes are started

            _client1 = new CacheClient
            {
                Channel =
                    new TcpClientChannel(new TcpClientPool(4, 1, "localhost",
                                                           _serverPort1)),
                ShardIndex  = 0,
                ShardsCount = 2
            };

            _client2 = new CacheClient
            {
                Channel =
                    new TcpClientChannel(new TcpClientPool(4, 1, "localhost",
                                                           _serverPort2)),
                ShardIndex  = 1,
                ShardsCount = 2
            };

            _aggregator = new Aggregator {
                CacheClients = { _client1, _client2 }
            };


            _aggregator.RegisterTypeIfNeeded(typeof(CacheableTypeOk));
        }
示例#7
0
        public void Init()
        {
            _serverChannel = new TcpServerChannel();

            _server = new Server.Server(new NodeConfig())
            {
                Channel = _serverChannel
            };
            _serverPort = _serverChannel.Init();
            _serverChannel.Start();
            _server.Start();

            _client = NewClient();


            _client.DeclareCollection <CacheableTypeOk>();
        }
示例#8
0
        public void Init()
        {
            _serverChannel = new TcpServerChannel();

            _server = new Server.Server(new ServerConfig())
            {
                Channel = _serverChannel
            };
            _serverPort = _serverChannel.Init();
            _serverChannel.Start();
            _server.Start();

            Thread.Sleep(500); //be sure the server is started

            _client = NewClient();


            _client.RegisterTypeIfNeeded(typeof(CacheableTypeOk));
        }
示例#9
0
        public bool Start(string instance)
        {
            try
            {
                var configFile = Constants.NodeConfigFileName;

                if (instance != null)
                {
                    var baseName = configFile.Split('.').FirstOrDefault();
                    configFile = $"{baseName}_{instance}.json";
                }

                var nodeConfig = new NodeConfig {TcpPort = Constants.DefaultPort, IsPersistent = true};

                if (File.Exists(configFile))
                {
                    try
                    {
                        var configFromFile = SerializationHelper.FormattedSerializer.Deserialize<NodeConfig>(
                            new JsonTextReader(new StringReader(File.ReadAllText(configFile))));

                        nodeConfig = configFromFile;

                        HostServices.HostServices.Start(configFromFile.DataPath);

                        Log.LogInfo("----------------------------------------------------------");
                        Log.LogInfo($"Reading configuration file {configFile} ");
                    }
                    catch (Exception e)
                    {
                        Log.LogError($"Error reading configuration file {configFile} : {e.Message}");
                    }
                }
                else
                {
                    HostServices.HostServices.Start(nodeConfig.DataPath);
                    Log.LogWarning($"Configuration file {configFile} not found. Using defaults");
                }

                _cacheServer = new global::Server.Server(nodeConfig);

                _listener = new TcpServerChannel();
                _cacheServer.Channel = _listener;
                _listener.Init(nodeConfig.TcpPort);
                _listener.Start();

                var fullDataPath = Path.GetFullPath(nodeConfig.DataPath ?? Constants.DataPath);

                var persistentDescription = nodeConfig.IsPersistent ? fullDataPath : " NO";

                try
                {
                    Console.Title = $"Cachalot Core on port {nodeConfig.TcpPort} persistent = {persistentDescription}";
                }
                catch (Exception )
                {
                    //ignore this may throw an exception when run in service mode
                }

                Log.LogInfo(
                    $"Starting hosted service on port {nodeConfig.TcpPort} persistent = {persistentDescription}");

                _cacheServer.StopRequired += (sender, args) =>
                {
                    HostServices.HostServices.Stop();
                    Stop();

                    _stopEvent.Set();
                };
                _cacheServer.Start();
            }
            catch (Exception e)
            {
                Log.LogError($"Failed to start host: {e}");

                return false;
            }

            Log.LogInfo("Host started successfully");

            return true;
        }
示例#10
0
        public bool Start(HostControl hostControl)
        {
            HostServices.HostServices.Start();

            Log.LogInfo("----------------------------------------------------------");


            try
            {
                var nodeConfig = new NodeConfig
                {
                    TcpPort      = Constants.DefaultPort,
                    IsPersistent = true
                };

                if (File.Exists(Constants.NodeConfigFileName))
                {
                    try
                    {
                        var configFromFile = SerializationHelper.FormattedSerializer.Deserialize <NodeConfig>(
                            new JsonTextReader(new StringReader(File.ReadAllText(Constants.NodeConfigFileName))));

                        nodeConfig = configFromFile;
                    }
                    catch (Exception e)
                    {
                        Log.LogError($"Error reading configuration file {Constants.NodeConfigFileName} : {e.Message}");
                    }
                }
                else
                {
                    Log.LogWarning($"Configuration file {Constants.NodeConfigFileName} not found. Using defaults");
                }

                _cacheServer = new Server.Server(nodeConfig);

                _listener            = new TcpServerChannel();
                _cacheServer.Channel = _listener;
                _listener.Init(nodeConfig.TcpPort);
                _listener.Start();

                var fullDataPath = Path.GetFullPath(nodeConfig.DataPath ?? Constants.DataPath);

                var persistentDescription = nodeConfig.IsPersistent ? fullDataPath : " NO";

                Log.LogInfo(
                    $"Starting Cachalot server on port {nodeConfig.TcpPort}  persistent {persistentDescription}");

                Console.Title = $"Cachalot server on port {nodeConfig.TcpPort} persistent = {persistentDescription}";


                _cacheServer.Start();
            }
            catch (Exception e)
            {
                Log.LogError($"Failed to start host: {e}");

                return(false);
            }

            Log.LogInfo("Host started successfully");

            return(true);
        }
示例#11
0
        //[PermissionSet(SecurityAction.Assert, Unrestricted = true)]
        private void InternalStart()
        {
            try
            {
                //System.Security.SecurityRules(RuleSet=System.Security.SecurityRuleSet.Level2)

                //using (FileStream fs = new FileStream(@"D:\Nistec\Services\Logs\qlog.log", FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.ReadWrite))
                //{
                //    StreamWriter w = new StreamWriter(fs);     // create a Char writer
                //    w.BaseStream.Seek(0, SeekOrigin.End);      // set the file pointer to the end
                //    w.Write("log test" + "\r\n");
                //    w.Flush();  // update underlying file
                //}


                Netlog.Debug(serviceName + " start...");

                //m_enableQueueController = AgentManager.Settings.EnableQueueController;
                //m_enableTopicController = AgentManager.Settings.EnableTopicController;

                AgentManager.Start();// m_enableQueueController, m_enableTopicController);

                if (AgentManager.Settings.EnablePipeProducer)
                {
                    m_PipeServerProducer = new PipeServerChannel(QueueChannel.Producer, QueueSettings.DefaultQueueProducer);
                    m_PipeServerProducer.Start();
                    //QLogger.Info("PipeServerChannel started...");
                }


                if (AgentManager.Settings.EnablePipeConsumer)
                {
                    m_PipeServerConsumer = new PipeServerChannel(QueueChannel.Consumer, QueueSettings.DefaultQueueConsumer);
                    m_PipeServerConsumer.Start();
                    //QLogger.Info("PipeServerListener started...");
                }


                //m_ServerDequeue = new PipeServerDequeue();
                //m_ServerDequeue.Start(false);


                if (AgentManager.Settings.EnableTcpProducer)
                {
                    m_TcpServerProducer = new TcpServerChannel(QueueChannel.Producer, QueueSettings.DefaultQueueProducer);
                    m_TcpServerProducer.Start();
                    //QLogger.Info("TcpServerChannel started...");
                }
                if (AgentManager.Settings.EnableTcpConsumer)
                {
                    m_TcpServerConsumer = new TcpServerChannel(QueueChannel.Consumer, QueueSettings.DefaultQueueConsumer);
                    m_TcpServerConsumer.Start();
                    //QLogger.Info("TcpServerListener started...");
                }
                if (AgentManager.Settings.EnableHttpProducer)
                {
                    m_HttpServerProducer = new HttpServerChannel(QueueChannel.Producer, QueueSettings.DefaultQueueProducer);
                    m_HttpServerProducer.Start();
                    //QLogger.Info("HttpServerChannel started...");
                }
                if (AgentManager.Settings.EnableHttpConsumer)
                {
                    m_HttpServerConsumer = new HttpServerChannel(QueueChannel.Consumer, QueueSettings.DefaultQueueConsumer);
                    m_HttpServerConsumer.Start();
                    //QLogger.Info("HttpServerListener started...");
                }

                if (AgentManager.Settings.EnableQueueManager)
                {
                    m_ServerQueueManager         = new PipeServerChannel(QueueChannel.Manager, QueueSettings.DefaultQueueManager);
                    m_ServerQueueManager.IsAsync = false;
                    m_ServerQueueManager.Start();// (false);
                    //QLogger.Info("ServerQueueManager started...");
                }

                //if (AgentManager.Settings.EnableFolderListener)
                //{
                //    m_FolderServer = new FolderServerListener();
                //    m_FolderServer.Start();
                //}
                //if (AgentManager.Settings.EnableDbListener)
                //{
                //    m_DbServer = new DbServerListener();
                //    m_DbServer.Start();
                //}


                //svr.Start();//McLock.Lock.ValidateLock(), true);
                //host_serviceStart();
                Netlog.Debug(serviceName + " started!");
            }
            catch (Exception ex)
            {
                Netlog.Exception(serviceName + " InternalStart error ", ex, true, true);

                //File.AppendAllText(@"D:\Nistec\Services\MQueue.Agent\error.log", "error: " + ex.Message);
            }
        }