private void OnInitRequest(RequestState request)
 {
     try
     {
         Guid   guid   = Guid.NewGuid();
         string peerId = guid.ToString();
         if ((request.Context.Request.QueryString.Count < 1) || (request.Context.Request.QueryString[0] != "init"))
         {
             if (log.IsDebugEnabled)
             {
                 log.DebugFormat("Received empty peer id", new object[0]);
             }
             RpcHttpHelper.SendErrorResponse(request.Context.Response, "Invalid rpc request");
             request.AsyncResult.SetCompleted(null, false);
         }
         else
         {
             if (log.IsDebugEnabled)
             {
                 log.DebugFormat("Received init request: pid={0}", new object[] { peerId });
             }
             PhotonHttpPeer photonPeer = new PhotonHttpPeer(peerId, this, request.Context);
             if (!this.peerCache.TryAddPeer(photonPeer))
             {
                 if (log.IsWarnEnabled)
                 {
                     log.WarnFormat("Failed to create peer: pid={0}", new object[] { peerId });
                 }
                 RpcHttpHelper.SendServerErrorResponse(request.Context.Response);
             }
             else
             {
                 byte[] data = RpcHttpHelper.ReadRequest(request.Context.Request);
                 this.photonApplication.OnInit(photonPeer, data, 1);
                 if (photonPeer.Queue.Count == 0)
                 {
                     request.AsyncResult.SetCompleted(null, false);
                 }
                 else
                 {
                     byte[] buffer = photonPeer.Queue.Dequeue();
                     request.Context.Response.OutputStream.Write(guid.ToByteArray(), 0, 0x10);
                     request.Context.Response.OutputStream.Write(buffer, 0, buffer.Length);
                     request.AsyncResult.SetCompleted(null, false);
                 }
             }
         }
     }
     catch (Exception exception)
     {
         log.Error(exception);
     }
 }
 public IAsyncResult BeginProcessRequest(HttpContext context, AsyncCallback cb, object extraData)
 {
     try
     {
         AsyncResult  asyncCallback = new AsyncResult(cb, extraData);
         RequestState state         = new RequestState(HttpContext.Current, asyncCallback);
         ThreadPool.QueueUserWorkItem(new WaitCallback(this.ProcessRequestCallBack), state);
         return(asyncCallback);
     }
     catch (Exception exception)
     {
         log.Error(exception);
         RpcHttpHelper.SendServerErrorResponse(context.Response);
         AsyncResult result2 = new AsyncResult(cb, extraData);
         result2.SetCompleted(null, true);
         return(result2);
     }
 }