public GridNetClient(GridServer server, GridNetClientManager netManager, GridServerNetworkSystem netSystem, string workerName) { WorkerName = workerName; _gridServer = server; _gridServerNetwork = netSystem; _clientNetManager = netManager; _tempReceivedFiles = new List <GridJobFile>(); IsAcceptingNewTasks = true; _isDisconnecting = false; _shouldRemove = false; _checkDisconnectTime = DateTime.Now.Ticks; }
private void AcceptClientAsync(IAsyncResult result) { if (_tcpListener == null) { return; } try { var netManager = new GridNetClientManager(_tcpListener.EndAcceptTcpClient(result)); netManager.GetTcpClient().Client.ReceiveTimeout = _gridServer.Settings.ReceiveTimeout; netManager.SetNetHandler(new NetHandlerGridServer(_gridServer, this, netManager)); Logger.Debug($"Accept client from {netManager.GetTcpClient().Client.RemoteEndPoint as IPEndPoint}"); var task = new Task(() => { while (netManager.IsChannelOpen()) { try { netManager.ChannelRead(); } catch (IOException ioerr) { Logger.Error("Unknown exception during packet reading", ioerr); } } }); task.Start(); } catch (Exception e) { if (_isRequestShutdown) { return; } Logger.Error("Unable to accept new network worker client", e); } finally { try { _tcpListener?.BeginAcceptTcpClient(AcceptClientAsync, null); } catch { ; } } }