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); }
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; }); } }