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); }
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); } }
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}"); } }