public EventSignal<IResponse> PostAsync(string url, Action<IRequest> prepareRequest, Dictionary<string, string> postData)
 {
     var returnSignal = new EventSignal<IResponse>();
     var signal = HttpHelper.PostAsync(url, request => prepareRequest(new HttpWebRequestWrapper(request)), postData);
     signal.Finished += (sender, e) => returnSignal.OnFinish(new HttpWebResponseWrapper(e.Result.Result) { Exception = e.Result.Exception, IsFaulted = e.Result.IsFaulted });
     return returnSignal;
 }
示例#2
0
 public void RegisterEvent(string eventName, Action handler)
 {
     if (!DicEvent.TryGetValue(eventName, out EventEntity eventEntity))
     {
         eventEntity = new EventSignal();
         DicEvent.Add(eventName, eventEntity);
     }
     ((EventSignal)eventEntity).Subscribe(handler);
 }
        public static void ReadAsync(EventSignal <CallbackDetail <int> > signal, Stream stream, byte[] buffer)
        {
            var _state = new StreamState
            {
                Stream   = stream,
                Response = signal,
                Buffer   = buffer
            };

            ReadAsyncInternal(_state);
        }
示例#4
0
 public static EventSignal<CallbackDetail<HttpWebResponse>> GetAsync(string url, Action<HttpWebRequest> requestPreparer)
 {
     var _request = (HttpWebRequest)HttpWebRequest.Create(url);
     if (requestPreparer != null)
     {
         requestPreparer(_request);
     }
     var signal = new EventSignal<CallbackDetail<HttpWebResponse>>();
     GetResponseAsync(_request, signal);
     return signal;
 }
        public static void ReadAsync(EventSignal<CallbackDetail<int>> signal, Stream stream, byte[] buffer)
        {
            var _state = new StreamState
            {
                Stream = stream,
                Response = signal,
                Buffer = buffer
            };

            ReadAsyncInternal(_state);
        }
        public EventSignal<IResponse> GetAsync(string url, Action<IRequest> prepareRequest)
        {
            var _returnSignal = new EventSignal<IResponse>();
            var _signal = HttpHelper.GetAsync(url, request => prepareRequest(new HttpWebRequestWrapper(request)));

            _signal.Finished += (sender, e) => _returnSignal.OnFinish(new HttpWebResponseWrapper(e.Result.Result)
            {
                Exception = e.Result.Exception,
                IsFaulted = e.Result.IsFaulted
            });

            return _returnSignal;
        }
示例#7
0
        public static EventSignal <CallbackDetail <HttpWebResponse> > GetAsync(string url, Action <HttpWebRequest> requestPreparer)
        {
            var _request = (HttpWebRequest)HttpWebRequest.Create(url);

            if (requestPreparer != null)
            {
                requestPreparer(_request);
            }
            var signal = new EventSignal <CallbackDetail <HttpWebResponse> >();

            GetResponseAsync(_request, signal);
            return(signal);
        }
示例#8
0
        public EventSignal <IResponse> GetAsync(string url, Action <IRequest> prepareRequest)
        {
            var _returnSignal = new EventSignal <IResponse>();
            var _signal       = HttpHelper.GetAsync(url, request => prepareRequest(new HttpWebRequestWrapper(request)));

            _signal.Finished += (sender, e) => _returnSignal.OnFinish(new HttpWebResponseWrapper(e.Result.Result)
            {
                Exception = e.Result.Exception,
                IsFaulted = e.Result.IsFaulted
            });

            return(_returnSignal);
        }
示例#9
0
        public static EventSignal <CallbackDetail <HttpWebResponse> > GetAsync(string url, Action <HttpWebRequest> requestPreparer)
        {
            var _request = (HttpWebRequest)HttpWebRequest.Create(url);

            ServicePointManager.ServerCertificateValidationCallback = MyRemoteCertificateValidationCallback;
            if (requestPreparer != null)
            {
                requestPreparer(_request);
            }
            var signal = new EventSignal <CallbackDetail <HttpWebResponse> >();

            GetResponseAsync(_request, signal);
            return(signal);
        }
示例#10
0
        private static EventSignal <CallbackDetail <HttpWebResponse> > PostInternal(
            string url,
            Action <HttpWebRequest> requestPreparer,
            IDictionary <string, string> postData)
        {
            var _request = (HttpWebRequest)HttpWebRequest.Create(url);

            if (requestPreparer != null)
            {
                requestPreparer(_request);
            }

            var buffer = ProcessPostData(postData);

            _request.Method      = "POST";
            _request.ContentType = "application/x-www-form-urlencoded";
            // Set the content length if the buffer is non-null
            _request.ContentLength = buffer != null ? buffer.LongLength : 0;

            EventSignal <CallbackDetail <HttpWebResponse> > _signal =
                new EventSignal <CallbackDetail <HttpWebResponse> >();

            if (buffer == null)
            {
                // If there's nothing to be written to the request then just get the response
                GetResponseAsync(_request, _signal);
                return(_signal);
            }

            RequestState _requestState = new RequestState
            {
                PostData = buffer,
                Request  = _request,
                Response = _signal
            };

            try
            {
                _request.BeginGetRequestStream(GetRequestStreamCallback, _requestState);
            }
            catch (Exception ex)
            {
                _signal.OnFinish(new CallbackDetail <HttpWebResponse> {
                    IsFaulted = true, Exception = ex
                });
            }
            return(_signal);
        }
示例#11
0
 public void RegisterEvent <T, V, A, B>(string eventName, Action <T, V, A, B> handler)
 {
     if (!DicEvent.TryGetValue(eventName, out EventEntity eventEntity))
     {
         eventEntity = new EventSignal <T, V, A, B>();
         DicEvent.Add(eventName, eventEntity);
     }
     if (eventEntity is EventSignal <T, V, A, B> t)
     {
         t.Subscribe(handler);
     }
     else
     {
         Debug.LogError($"{eventName} 对应的类型错误 :{handler.GetType().FullName} ");
     }
 }
        private void ReadLoop()
        {
            if (!Reading)
                return;

            var _buffer = new byte[1024];
            var _signal = new EventSignal<CallbackDetail<int>>();

            _signal.Finished += (sender, e) =>
            {
                if (e.Result.IsFaulted)
                {
                    Exception exception = e.Result.Exception.GetBaseException();

                    if (!HttpBasedTransport.IsRequestAborted(exception))
                    {
                        if (!(exception is IOException))
                            m_connection.OnError(exception);
                        StopReading(true);
                    }
                    return;
                }

                int _read = e.Result.Result;

                if (_read > 0)
                    // Put chunks in the buffer
                    m_buffer.Add(_buffer, _read);

                if (_read == 0)
                {
                    // Stop any reading we're doing
                    StopReading(true);
                    return;
                }

                // Keep reading the next set of data
                ReadLoop();

                if (_read <= _buffer.Length)
                    // If we read less than we wanted or if we filled the buffer, process it
                    ProcessBuffer();
            };
            StreamExtensions.ReadAsync(_signal, m_stream, _buffer);
        }
示例#13
0
 public static void GetResponseAsync(HttpWebRequest request, EventSignal<CallbackDetail<HttpWebResponse>> signal)
 {
     try
     {
         request.BeginGetResponse(
             GetResponseCallback,
             new RequestState
             {
                 Request = request,
                 PostData = new byte[] { },
                 Response = signal
             });
     }
     catch (Exception ex)
     {
         signal.OnFinish(new CallbackDetail<HttpWebResponse> { Exception = ex, IsFaulted = true });
     }
 }
示例#14
0
        private static EventSignal<CallbackDetail<HttpWebResponse>> PostInternal(
            string url,
            Action<HttpWebRequest> requestPreparer,
            IDictionary<string, string> postData)
        {
            var _request = (HttpWebRequest)HttpWebRequest.Create(url);

            if (requestPreparer != null)
                requestPreparer(_request);

            var buffer = ProcessPostData(postData);

            _request.Method = "POST";
            _request.ContentType = "application/x-www-form-urlencoded";
            // Set the content length if the buffer is non-null
            _request.ContentLength = buffer != null ? buffer.LongLength : 0;

            EventSignal<CallbackDetail<HttpWebResponse>> _signal =
                new EventSignal<CallbackDetail<HttpWebResponse>>();

            if (buffer == null)
            {
                // If there's nothing to be written to the request then just get the response
                GetResponseAsync(_request, _signal);
                return _signal;
            }

            RequestState _requestState = new RequestState
            {
                PostData = buffer,
                Request = _request,
                Response = _signal
            };

            try
            {
                _request.BeginGetRequestStream(GetRequestStreamCallback, _requestState);
            }
            catch (Exception ex)
            {
                _signal.OnFinish(new CallbackDetail<HttpWebResponse> { IsFaulted = true, Exception = ex });
            }
            return _signal;
        }
示例#15
0
 public static void GetResponseAsync(HttpWebRequest request, EventSignal <CallbackDetail <HttpWebResponse> > signal)
 {
     try
     {
         request.BeginGetResponse(
             GetResponseCallback,
             new RequestState
         {
             Request  = request,
             PostData = new byte[] { },
             Response = signal
         });
     }
     catch (Exception ex)
     {
         signal.OnFinish(new CallbackDetail <HttpWebResponse> {
             Exception = ex, IsFaulted = true
         });
     }
 }
示例#16
0
文件: AgentRunner.cs 项目: 0xCM/z0
        public static void run(EventSignal signal, params string[] args)
        {
            var runner = new AgentRunner(signal, new AgentContext(SystemEventWriter.Log), args);

            runner.Exec();
        }
示例#17
0
文件: AgentRunner.cs 项目: 0xCM/z0
 AgentRunner(EventSignal signal, AgentContext context, string[] args)
 {
     Signal       = signal;
     AgentContext = context;
     Control      = Agents.control(context);
 }