public GwTcpListener(Gateway gateway, ChainSide side, IPEndPoint ipSource) { this.gateway = gateway; this.ipSource = ipSource; this.side = side; tcpListener = new TcpListener(ipSource); tcpListener.Start(10); tcpListener.BeginAcceptSocket(ReceiveConn, tcpListener); if (Log.WillDisplay(System.Diagnostics.TraceEventType.Start)) Log.TraceEvent(System.Diagnostics.TraceEventType.Start, -1, "TCP Listener " + side.ToString() + " on " + ipSource); }
/// <summary> /// Used to populate the chain based on a list of types /// </summary> /// <param name="gateway"></param> /// <param name="side"> </param> /// <param name="workersNeeded"></param> /// <param name="client"></param> /// <param name="server"></param> /// <returns></returns> static WorkerChain PopulateChain(Gateway gateway, ChainSide side, IEnumerable<Type> workersNeeded, IPEndPoint client, IPEndPoint server) { WorkerChain chain = new WorkerChain { ClientEndPoint = client, ServerEndPoint = server, Gateway = gateway, Side = side }; foreach (Type t in workersNeeded) { // ReSharper disable PossibleNullReferenceException Worker w = (Worker)t.GetConstructor(new Type[] { }).Invoke(new object[] { }); // ReSharper restore PossibleNullReferenceException w.Chain = chain; w.ClientEndPoint = client; w.ServerEndPoint = server; chain.Add(w); } /*lock (lockChainManagement) { knownChains.Add(chain); }*/ knownChains.Add(chain); return chain; }
/// <summary> /// Creates a request UDP chain /// </summary> /// <param name="gateway"></param> /// <param name="side"> </param> /// <param name="client"></param> /// <param name="server"></param> /// <returns></returns> public static WorkerChain UdpResponseChain(Gateway gateway, ChainSide side, IPEndPoint client, List<IPEndPoint> server) { return PopulateChain(gateway, side, udpResponseChainList, client, server[0]); }
/// <summary> /// Creates a request UDP chain /// </summary> /// <param name="gateway"></param> /// <param name="side"> </param> /// <param name="client"></param> /// <param name="server"></param> /// <returns></returns> public static WorkerChain UdpChain(Gateway gateway, ChainSide side, IPEndPoint client, List<IPEndPoint> server) { WorkerChain res = PopulateChain(gateway, side, udpChainList, client, server[0]); res.Destinations = server; return res; }
public static WorkerChain UdpBeaconReceiver(Gateway gateway, ChainSide side, IPEndPoint client, List<IPEndPoint> server) { return PopulateChain(gateway, side, beaconReceiverChainList, client, server[0]); }
/// <summary> /// Creates a response TCP chains /// </summary> /// <param name="gateway"></param> /// <param name="side"> </param> /// <param name="client"></param> /// <param name="server"></param> /// <returns></returns> public static WorkerChain TcpResponseChain(Gateway gateway, ChainSide side, IPEndPoint client, IPEndPoint server) { return PopulateChain(gateway, side, tcpResponseChainList, client, server); }