Beispiel #1
0
        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);
            }
        }
Beispiel #2
0
 public static Byte[] Handle(Byte[] data, TcpClientHandlerInfo info)
 {
     lock (data)
     {
         Byte[] outputData = new Byte[data.Length];
         Array.Copy(data, outputData, data.Length);
         return(outputData);
     }
 }
Beispiel #3
0
 public Byte[] OnClientExchange(Byte[] receivedData, TcpClientHandlerInfo info)
 {
     lock (receivedData)
     {
         Byte[] outputData = new Byte[receivedData.Length];
         Array.Copy(receivedData, outputData, receivedData.Length);
         return(outputData);
     }
 }
Beispiel #4
0
        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));
        }
Beispiel #5
0
        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));
            }
        }
Beispiel #6
0
        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));
            }
        }
Beispiel #7
0
 public Byte[] Handle(Byte[] b, TcpClientHandlerInfo hf)
 {
     return(new Byte[0]);
 }