예제 #1
0
    public IMHttpContext Send(Base_Upload ul, Action <IMHttpContext> callback)
    {
        IMHttpContext ctx = new IMHttpContext();

        ctx.url      = url;
        ctx.ul       = ul;
        ctx.retry    = 2;
        ctx.callback = callback;
        sendQueue.Enqueue(ctx);
        return(ctx);
    }
예제 #2
0
 public void Update()
 {
     if (!http.IsBusy())
     {
         while (sendingMsgs.Count > 0)
         {
             IMMsgForSend msg = sendingMsgs.Dequeue();
             if (!IsMsgValid(msg))
             {
                 msg.Distributed = false;
                 continue;
             }
             Base_Upload ul = MakeUL(msg);
             //Debug.Log(DateTime.Now + ": " + ul.GetType().Name);
             http.Send(ul, ctx => {
                 heartbeatTimeSpan = minHeartbeatTimeSpan;
                 heatbeatTime      = Time.realtimeSinceStartup + heartbeatTimeSpan;
                 OnSendDone(msg, ctx);
             });
             break;
         }
     }
     if (!http.IsBusy() && Time.realtimeSinceStartup > heatbeatTime)
     {
         Base_Upload ul = MakeHeatbeatUL();
         //Debug.Log(DateTime.Now + ": " + ul.GetType().Name);
         http.Send(ul, ctx => {
             if (OnHeatbeatDone(ctx))
             {
                 heartbeatTimeSpan = minHeartbeatTimeSpan;
             }
             else
             {
                 heartbeatTimeSpan = Mathf.Min(heartbeatTimeSpan + 1, maxHeartbeatTimeSpan);
             }
             heatbeatTime = Time.realtimeSinceStartup + heartbeatTimeSpan;
         });
     }
 }