コード例 #1
0
        public NetServerService(PacketHandler packetHandler, ILog logger, int maxConnection, int bufferSize, int keepAliveTime, int keepAliveInterval, bool onMonitoring)
            : base(packetHandler, logger, bufferSize, keepAliveTime, keepAliveInterval, onMonitoring)
        {
            _listener = new Listener();
            _listener.OnNewClientCallback += OnConnectedClient;


            // SocketAsyncEventArgs object pool 생성
            _receiveEventAragePool = new SocketAsyncEventArgsPool(maxConnection);
            _sendEventAragePool    = new SocketAsyncEventArgsPool(maxConnection);



            // 버퍼 할당
            _bufferHandler = new BufferHandler(maxConnection * bufferSize * preAllocCount, bufferSize);
            _bufferHandler.InitBuffer();


            // SocketAsyncEventArgs object pool 할당
            SocketAsyncEventArgs args;

            for (int i = 0; i < maxConnection; i++)
            {
                ClientSession clientSession = new ClientSession(_logger, bufferSize);
                clientSession.CompletedMessageCallback += OnMessageCompleted;


                // receive pool
                {
                    args            = new SocketAsyncEventArgs();
                    args.Completed += new EventHandler <SocketAsyncEventArgs>(OnReceiveCompleted);
                    args.UserToken  = clientSession;

                    _bufferHandler.SetBuffer(args);
                    _receiveEventAragePool.Push(args);
                }

                // send pool
                {
                    args            = new SocketAsyncEventArgs();
                    args.Completed += new EventHandler <SocketAsyncEventArgs>(OnSendCompleted);
                    args.UserToken  = clientSession;

                    _bufferHandler.SetBuffer(args);
                    _sendEventAragePool.Push(args);
                }
            }


            _authedClientSessions    = new Dictionary <string, ClientSession>();
            _reconnectClientSessions = new List <ClientSession>();
            _expiredClientSessions   = new List <string>();

            _removeClientSessionTick = DateTime.UtcNow.AddSeconds(10).Ticks;

            _netMonitorHandler = new MonitorHandler(logger, 10);
        }
コード例 #2
0
ファイル: Monitor.cs プロジェクト: gongfuPanada/gnome-sharp
        private void OnMonitorEvent(string monitorUri, string uri, MonitorEventType eventType)
        {
            MonitorHandler handler = null;

            switch (eventType)
            {
            case MonitorEventType.Changed:
                handler = Changed;
                break;

            case MonitorEventType.Deleted:
                handler = Deleted;
                break;

            case MonitorEventType.Startexecuting:
                handler = Startexecuting;
                break;

            case MonitorEventType.Stopexecuting:
                handler = Stopexecuting;
                break;

            case MonitorEventType.Created:
                handler = Created;
                break;

            case MonitorEventType.MetadataChanged:
                handler = MetadataChanged;
                break;
            }

            if (handler != null)
            {
                handler(monitorUri, uri);
            }
        }
コード例 #3
0
        static void Main(string[] args)
        {
            try
            {
                //args = new string[] { "-a", "192.168.1.118", "-t", "0", "-p", "700", "-w", "10", "-o", "10", "-l", "-1" };
                //args = new string[] { "-tp" };

                Settings = new Api.ObjectModel.RpmMonitorSettings();

                showHeader();

                if (args == null || args.Length == 0)
                {
                    Console.WriteLine("ERROR: Required options not set. Use -h for help.");
                }
                else if (args.Any(x => x.Equals("-h", StringComparison.InvariantCultureIgnoreCase)))
                {
                    showHelp();
                }
                else if (args.Any(x => x.Equals("-tp", StringComparison.InvariantCultureIgnoreCase)))
                {
                    showTpLinkDevices();
                }
                else
                {
                    parseArgs(args);

                    if (string.IsNullOrWhiteSpace(Settings.IpAddress))
                    {
                        Console.WriteLine("ERROR: Ip address not set. Use -h for help.");
                    }
                    else if (Settings.PowerConsumptionThreshold == 0)
                    {
                        Console.WriteLine("ERROR: Minimum power consumption threshold not set. Use -h for help.");
                    }
                    else if (!string.IsNullOrWhiteSpace(Settings.TextbeltApiKey) && string.IsNullOrWhiteSpace(Settings.MobileNumber))
                    {
                        Console.WriteLine("ERROR: Textbelt API key set, but mobile number is not set. Use -h for help.");
                    }
                    else if (string.IsNullOrWhiteSpace(Settings.TextbeltApiKey) && !string.IsNullOrWhiteSpace(Settings.MobileNumber))
                    {
                        Console.WriteLine("ERROR: Mobile number is set, but Textbelt API key is not set. Use -h for help.");
                    }
                    else
                    {
                        showDonationInfo();

                        using (var monitor = new MonitorHandler(Settings))
                        {
                            monitor.OnLogEntriesAdded          += Monitor_OnLogEntriesAdded;
                            monitor.OnLogOperationFailed       += Monitor_OnLogOperationFailed;
                            monitor.OnSmartPlugPoweredOffAndOn += Monitor_OnSmartPlugPoweredOffAndOn;

                            monitor.Monitor();
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine($"ERROR: {ex.Message}");
            }
        }