protected void OnBeginRequest()
 {
     //默认写法
     //if (BeginRequest != null) BeginRequest(this, new EventArgs());
     //新写法
     BeginRequest?.Invoke(this, new EventArgs());
 }
示例#2
0
 public void ExecuteEventHandler()
 {
     BeginRequest?.Invoke(this, null);
     PostMapRequestHandler?.Invoke(this, null);
     AcquireRequestState?.Invoke(this, null);
     //Error?.Invoke(this, null);这个只有异常才调用,所以不需要在这里调用
 }
        private void StartTimer(TimeSpan timeout, BeginRequest requestToRetry)
        {
            if (timer != null)
            {
                System.Diagnostics.Debug.Assert(timer == null);
            }

            if (logger != null)
            {
                logger.TraceFormat("{0} will time out in {1}", this, timeout);
            }

            timer = new Timer(OnRequestTimeout, requestToRetry, timeout, TimeSpan.FromMilliseconds(-1));
        }
        private void OnRequestCompleted(BeginRequest nextRequest)
        {
            request = null;
            content = null;

            if (nextRequest == null)
            {
                OnConnectionFinished();
            }
            else
            {
                nextRequest();
            }
        }
示例#5
0
            public void SendsAndReceives()
            {
                IClient client = CreateClient();

                _runtime.ReadResponse().Returns(GetOkResponse(new BeginResponse("myPromiseId")));

                BeginRequest request = new BeginRequest
                                       (
                    objectReference: new ObjectReference {
                    { "$jsii.byref", "myRef" }
                },
                    method: "myMethod",
                    arguments: new object[] { "arg1", "arg2" }
                                       );

                client.Begin(request);

                _runtime.Received().WriteRequest(Arg.Is <string>(
                                                     actual => PlatformIndependentEqual(JsonConvert.SerializeObject(request), actual)
                                                     ));
                _runtime.Received().ReadResponse();
            }
        private void OnRequestTimeout(object state)
        {
            if (timer != null)
            {
                timer.Dispose();
                timer = null;
            }

            BeginRequest requestToRetry = (BeginRequest)state;

            request = null;
            content = null;

            if (requestToRetry == null)
            {
                OnConnectionFinished();
            }
            else
            {
                requestToRetry();
            }
        }
示例#7
0
 public BeginResponse Begin(BeginRequest request)
 {
     return(Send <BeginRequest, BeginResponse>(request));
 }
 /// <summary>
 /// Sends a Begin Request to the Arduino.
 /// </summary>
 /// <param name="request">Begin Request</param>
 /// <returns>The Begin Response</returns>
 public async Task <BeginResponse> SendAsync(BeginRequest request)
 {
     return((BeginResponse) await InternalSendAsync(request));
 }
        private void OnRequestFailed(string description, RetryStrategy retryStrategy, BeginRequest requestToRetry)
        {
            CancelTimer();

            request = null;
            content = null;

            if (!isRunning)
            {
                return;
            }

            switch (retryStrategy)
            {
            case RetryStrategy.Immediately:
            {
                if (description != null && logger != null)
                {
                    logger.WarnFormat("{0} Will retry immediately", description);
                }

                requestToRetry();

                break;
            }

            case RetryStrategy.AfterDefaultPeriod:
            {
                if (description != null && logger != null)
                {
                    logger.WarnFormat("{0} Will retry in {1}", description, RetryTimeout);
                }

                StartTimer(RetryTimeout, requestToRetry);

                break;
            }

            case RetryStrategy.WhenAuthenticated:
            {
                if (description != null && logger != null)
                {
                    logger.WarnFormat("{0} Will retry when authenticated", description);
                }

                break;
            }

            case RetryStrategy.Never:
            {
                if (description != null && logger != null)
                {
                    logger.WarnFormat("Failed to send {0}; will not retry", description);
                }

                OnConnectionFinished();

                break;
            }
            }
        }