Example #1
0
 public BaseRouterIO(IDeltaLogger baseLogger, IRouterTransport transport, MinorMajorVersionPair appVersion)
 {
     this.baseLogger         = baseLogger;
     this.transport          = transport;
     this.appVersion         = appVersion;
     outgoingMessageId       = new Random().Next(1, int.MaxValue - 1);
     receivingPackets        = new Dictionary <ulong, RouterMessage>();
     waitingResponseSessions = new ConcurrentDictionary <int, Channel <RouterMessage> >();
 }
Example #2
0
        public ClientRouterIO(IDeltaLogger logger, IRouterTransport transport, MinorMajorVersionPair libVersion, IPEndPoint routerEndpoint) : base(logger, transport, libVersion)
        {
            this.routerEndpoint = routerEndpoint;
            outgoingPackets     = new ConcurrentQueue <RouterPacket>();
            handlingMessages    = new ConcurrentQueue <RouterMessage>();

            //Create net worker
            netWorkerThread = new Thread(RunNetWorkerThread);
            netWorkerThread.IsBackground = true;
            netWorkerThread.Start();

            //Create handler worker
            handlerWorkingThread = new Thread(RunHandlerThread);
            handlerWorkingThread.IsBackground = true;
            handlerWorkingThread.Start();
        }
Example #3
0
        public ServerRouterIO(IDeltaLogger baseLogger, IRouterTransport transport, MinorMajorVersionPair appVersion, IPEndPoint bindAddr, RouterServerMakeClient <T> funcConstructClient)
        {
            this.baseLogger          = baseLogger;
            this.transport           = transport;
            this.appVersion          = appVersion;
            this.funcConstructClient = funcConstructClient;
            connectedClients         = new List <T>();
            queuedOutgoingPackets    = new ConcurrentQueue <Tuple <T, RouterPacket> >();

            //Spin up worker therad
            workerThread = new Thread(OutgoingQueueWorkerThread);
            workerThread.IsBackground = true;
            workerThread.Start();

            //Open server
            serverSock = new Socket(SocketType.Stream, ProtocolType.Tcp);
            serverSock.Bind(bindAddr);
            serverSock.Listen(10);
            serverSock.BeginAccept(ClientAccepted, null);
        }