private void EndReadReply(IAsyncResult asyncResult)
        {
            HessianMethodCall call = (HessianMethodCall)asyncResult.AsyncState;

            try {
                HttpWebResponse response = (HttpWebResponse)call.request.EndGetResponse(asyncResult);
                if (response.StatusCode != HttpStatusCode.OK)
                {
                    ReadAndThrowHttpFault(response);
                }

                using (Stream stream = response.GetResponseStream()) {
                    AbstractHessianInput hessianInput = GetHessianInput(stream);
                    call.result = hessianInput.ReadReply(call.methodInfo.ReturnType);
                    response.Close();
                }
            } catch (CHessianException e) {
                call.result    = null;
                call.exception = e.InnerException;
            } catch (Exception e) {
                call.result    = null;
                call.exception = e;
            }

            EndHessianMethodCall(call);
        }
        private void EndSendRequest(IAsyncResult asyncResult)
        {
            HessianMethodCall call = (HessianMethodCall)asyncResult.AsyncState;

            using (Stream stream = call.request.EndGetRequestStream(asyncResult))
            {
                stream.Write(call.methodArgs, 0, call.methodArgs.Length);
                stream.Flush();
            }
            BeginReadReply(call);
        }
        public void EndHessianMethodCall(HessianMethodCall call)
        {
            DateTime end = DateTime.Now;
            CHessianLog.AddLogEntry(call.methodInfo.Name, end, end, -1, -1);

            // Make it easier for the GC
            call.methodArgs = null;
            call.methodInfo = null;
            call.request = null;
            call.callback.Invoke(call);
        }
        public void EndHessianMethodCall(HessianMethodCall call)
        {
            DateTime end = DateTime.Now;

            CHessianLog.AddLogEntry(call.methodInfo.Name, end, end, -1, -1);

            // Make it easier for the GC
            call.methodArgs = null;
            call.methodInfo = null;
            call.request    = null;
            call.callback.Invoke(call);
        }
 private void BeginSendRequest(HessianMethodCall call)
 {
     call.request = (HttpWebRequest)PrepareWebRequest(call.methodArgs.Length);
     call.request.BeginGetRequestStream(new AsyncCallback(EndSendRequest), call);
 }
 private void BeginReadReply(HessianMethodCall call)
 {
     call.request.BeginGetResponse(new AsyncCallback(EndReadReply), call);
 }
 private void BeginSendRequest(HessianMethodCall call)
 {
     call.request = (HttpWebRequest)PrepareWebRequest(call.methodArgs.Length);
     call.request.BeginGetRequestStream(new AsyncCallback(EndSendRequest), call);
 }
 private void BeginReadReply(HessianMethodCall call)
 {
     call.request.BeginGetResponse(new AsyncCallback(EndReadReply), call);
 }