public void RemoveHandler(TcpClientHandlerInfo clientHandlerInfo) { Tuple <TcpClientHandlerInfo, Func <Byte[], TcpClientHandlerInfo, Byte[]> > handler = _clientsHandlers.FirstOrDefault(item => item.Item1.Id.Equals(clientHandlerInfo.Id)); if (handler != null) { _clientsHandlers.Remove(handler); } }
public static Byte[] Handle(Byte[] data, TcpClientHandlerInfo info) { lock (data) { Byte[] outputData = new Byte[data.Length]; Array.Copy(data, outputData, data.Length); return(outputData); } }
public Byte[] OnClientExchange(Byte[] receivedData, TcpClientHandlerInfo info) { lock (receivedData) { Byte[] outputData = new Byte[receivedData.Length]; Array.Copy(receivedData, outputData, receivedData.Length); return(outputData); } }
public static Boolean Select(TcpClientHandlerInfo clientHandlerInfo, TcpClientContext tcpClient) { if (String.Equals(GlobalDefs.AnyIpAddress, clientHandlerInfo.IpAddress) && GlobalDefs.AnyPort == clientHandlerInfo.Port) { return(true); } return(SelectByIpAddressComparison(clientHandlerInfo.IpAddress, tcpClient.Client) && SelectByPortComparison(clientHandlerInfo.Port, tcpClient.Client)); }
public void SendData(TcpClientHandlerInfo clientHandlerInfo, Byte[] data) { IList <TcpClientContext> selectedClients; lock (_tcpClients) { selectedClients = _tcpClients.Where(item => TcpClientHandlerSelector.Select(clientHandlerInfo, item)).ToList(); } foreach (TcpClientContext client in selectedClients) { TcpClientContext clientCopy = client; Task.Factory.StartNew(() => SendImpl(clientCopy, data)); } }
public void AddHandler(TcpClientHandlerInfo clientHandlerInfo, Func <Byte[], TcpClientHandlerInfo, Byte[]> handler) { if (clientHandlerInfo == null) { throw new ArgumentNullException("clientHandlerInfo"); } if (handler == null) { throw new ArgumentNullException("handler"); } Tuple <TcpClientHandlerInfo, Func <Byte[], TcpClientHandlerInfo, Byte[]> > existingHandler = _clientsHandlers.FirstOrDefault(item => item.Item1.Id.Equals(clientHandlerInfo.Id)); if (existingHandler == null) { _clientsHandlers.Add(new Tuple <TcpClientHandlerInfo, Func <Byte[], TcpClientHandlerInfo, Byte[]> >(clientHandlerInfo, handler)); } }
public Byte[] Handle(Byte[] b, TcpClientHandlerInfo hf) { return(new Byte[0]); }