Ejemplo n.º 1
0
 public TransportGatewayAsync(TelegramDC dc)
 {
     this.dc           = dc;
     socket            = null;
     input             = new CborInputMoveBuffer(512 * 1024);
     input.InputEvent += CheckInput;
 }
Ejemplo n.º 2
0
        private bool Connect(TelegramDC dc) {
            if (state == NetworkGatewayState.INIT) {
                logger.info("connecing to {0}:{1}", dc.Endpoints[endpointIndex].Host, dc.Endpoints[endpointIndex].Port);
                this.dc = dc;
                var args = new SocketAsyncEventArgs();
                args.RemoteEndPoint = new DnsEndPoint(dc.Endpoints[endpointIndex].Host, dc.Endpoints[endpointIndex].Port);
                args.Completed += OnConnected;
                socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
                state = NetworkGatewayState.CONNECTING;
                bool async = socket.ConnectAsync(args);
                if (!async) {
                    OnConnected(this, args);
                }

                return true;
            }

            throw new InvalidOperationException("connect in not INIT state");
        }
Ejemplo n.º 3
0
 public async Task ConnectAsync(TelegramDC dc, int maxRetries)
 {
     logger.info("transport gateway connect async...");
     connectRetries = maxRetries;
     endpointIndex  = 0;
     connectTaskCompletionSource = new TaskCompletionSource <object>();
     try {
         if (Connect(dc))
         {
             await connectTaskCompletionSource.Task;
         }
         else
         {
             throw new TransportConnectException();
         }
     } finally {
         connectTaskCompletionSource = new TaskCompletionSource <object>();
     }
     logger.info("transport gateway connected");
 }
Ejemplo n.º 4
0
        private bool Connect(TelegramDC dc)
        {
            if (state == NetworkGatewayState.INIT)
            {
                logger.info("connecing to {0}:{1}", dc.Endpoints[endpointIndex].Host, dc.Endpoints[endpointIndex].Port);
                this.dc = dc;
                var args = new SocketAsyncEventArgs();
                args.RemoteEndPoint = new DnsEndPoint(dc.Endpoints[endpointIndex].Host, dc.Endpoints[endpointIndex].Port);
                args.Completed     += OnConnected;
                socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
                state  = NetworkGatewayState.CONNECTING;
                bool async = socket.ConnectAsync(args);
                if (!async)
                {
                    OnConnected(this, args);
                }

                return(true);
            }

            throw new InvalidOperationException("connect in not INIT state");
        }
Ejemplo n.º 5
0
 public TransportGatewayAsync(TelegramDC dc) {
     this.dc = dc;
     socket = null;
     input = new CborInputMoveBuffer(512 * 1024);
     input.InputEvent += CheckInput;
 }
Ejemplo n.º 6
0
 public async Task ConnectAsync(TelegramDC dc, int maxRetries) {
     logger.info("transport gateway connect async...");
     connectRetries = maxRetries;
     endpointIndex = 0;
     connectTaskCompletionSource = new TaskCompletionSource<object>();
     try {
         if(Connect(dc)) {
             await connectTaskCompletionSource.Task;
         } else {
             throw new TransportConnectException();
         }
     } finally {
         connectTaskCompletionSource = new TaskCompletionSource<object>();    
     }
     logger.info("transport gateway connected");
 }