示例#1
0
        public BlocksAcceptor(string listenHost, int listenPort, MessageReceived messageReceived, MessageSended messageSended,
                              ConnectionAccepted connectionAccepted, ReceiveFailed receiveFailed, SendFailed sendFailed)
        {
            log = LogManager.GetLogger(typeof(BlocksAcceptor));

            this.listenHost = listenHost;
            this.listenPort = listenPort;

            this.messageReceived    = messageReceived;
            this.messageSended      = messageSended;
            this.connectionAccepted = connectionAccepted;
            this.receiveFailed      = receiveFailed;
            this.sendFailed         = sendFailed;

            receivePrefixHandler    = new ReceivePrefixHandler();
            receiveMessageHandler   = new ReceiveMessageHandler();
            receiveTypeSelector     = new ReceiveTypeSelector();
            receiveResponseHandler  = new ReceiveResponseHandler();
            receiveAllReadedHandler = new ReceiveAllReadedHandler();
            receiveUPhotoHandler    = new ReceiveUPhotoHandler();

            blockAcceptEventHandler = new EventHandler <SocketAsyncEventArgs>(acceptEvent);
            receiveEventHandler     = new EventHandler <SocketAsyncEventArgs>(receiveEvent);
            blockSendEventHandler   = new EventHandler <SocketAsyncEventArgs>(sendEvent);
        }
 public MonConnector(string monHost, int monPort, MessageReceived messageReceived, BaseConnector.MessageSended messageSended,
                     ReceiveFailed receiveFailed, SendFailed sendFailed, int attemptConnect, int timeoutConnect)
     : this(monHost, monPort, messageReceived, messageSended, receiveFailed, sendFailed)
 {
     this.attemptConnect = attemptConnect;
     this.timeoutConnect = timeoutConnect;
 }
示例#3
0
        private string Receive()
        {
            try
            {
                return(_remoteRx.ReadLine());
            }
            catch (Exception e)
            {
                Dispose();
                ReceiveFailed?.Invoke(e);
            }

            return(null);
        }
        public MonConnector(string monHost, int monPort, MessageReceived messageReceived, BaseConnector.MessageSended messageSended,
                            ReceiveFailed receiveFailed, SendFailed sendFailed)
        {
            this.monHost = monHost;
            this.monPort = monPort;
            var monIPAddress = IPAddress.Parse(monHost);

            monEndPoint = new IPEndPoint(monIPAddress, monPort);

            this.messageReceived = messageReceived;
            this.messageSended   = messageSended;
            this.receiveFailed   = receiveFailed;
            this.sendFailed      = sendFailed;

            sendEventHandler    = new EventHandler <SocketAsyncEventArgs>(sendEvent);
            receiveEventHandler = new EventHandler <SocketAsyncEventArgs>(receiveEvent);

            log = LogManager.GetLogger(typeof(MonConnector));
        }
示例#5
0
        public async Task <ResponseInfo> SendAsync(
            Func <HttpRequestMessage> generator,
            int maximalRetryAttempt = 5)
        {
            var policy = Policy
                         .Handle <HttpRequestException>()
                         .OrResult <ResponseInfo>(response =>
                                                  response.Status is >= HttpStatusCode.InternalServerError or HttpStatusCode.RequestTimeout)
                         .WaitAndRetryAsync(
                maximalRetryAttempt,
                attempt => TimeSpan.FromSeconds(attempt),
                (result, span, attempt, _) => ReceiveFailed?.Invoke(result, span, attempt));

            ResponseInfo info;

            try
            {
                info = await policy.ExecuteAsync(async() =>
                {
                    using var msg = generator();
                    using var res = await Client.SendAsync(msg);

                    return(await res.Content
                           .Decompress()
                           .ContinueWith(t => new ResponseInfo(t.Result, res.StatusCode)));
                });
            }
            catch (TaskCanceledException)
            {
                TaskCanceled?.Invoke();
                return(null);
            }
            catch (Exception e)
            {
                ExceptionThrown?.Invoke(e);
                return(null);
            }

            return(info);
        }