private void Setup() { if (IsSetupCalled) { return; } IsSetupCalled = true; HTTPManager.Setup(); #if UNITY_WEBGL && !UNITY_EDITOR // Threads are not implemented in WEBGL builds, disable it for now. IsThreaded = false; #endif if (IsThreaded) { PlatformSupport.Threading.ThreadedRunner.RunLongLiving(ThreadFunc); } // Unity doesn't tolerate well if the DontDestroyOnLoad called when purely in editor mode. So, we will set the flag // only when we are playing, or not in the editor. if (!Application.isEditor || Application.isPlaying) { GameObject.DontDestroyOnLoad(this.gameObject); } HTTPManager.Logger.Information("HTTPUpdateDelegator", "Setup done!"); }
public static Task <T> CreateTask <T>(HTTPRequest request, CancellationToken token, Action <HTTPRequest, HTTPResponse, TaskCompletionSource <T> > callback) { HTTPManager.Setup(); var tcs = new TaskCompletionSource <T>(); request.Callback = (req, resp) => { if (token.IsCancellationRequested) { tcs.SetCanceled(); } else { callback(req, resp, tcs); } }; if (token.CanBeCanceled) { token.Register((state) => (state as HTTPRequest)?.Abort(), request); } if (request.State == HTTPRequestStates.Initial) { request.Send(); } return(tcs.Task); }
public static HTTPRequest SendRequest(HTTPRequest request) { object locker = HTTPManager.Locker; lock (locker) { HTTPManager.Setup(); if (HTTPManager.IsCallingCallbacks) { request.State = HTTPRequestStates.Queued; HTTPManager.RequestQueue.Add(request); } else { HTTPManager.SendRequestImpl(request); } } return(request); }