/// <inheritdoc cref="RequestChannel.OnAfterSendRequest"/> protected override IEnumerator OnAfterSendRequest(RequestTask request) { foreach (var listener in this.registeredResponseListeners) { yield return(listener.OnResponse(this, request)); } }
public static string GetBodyString(this RequestTask requestTask) { var currentWebRequest = requestTask.UnityWebRequest; var downloadHandler = currentWebRequest.downloadHandler; return(downloadHandler.text); }
/// <inheritdoc cref="IQueueRequestChannel.EnqueueRequest"/> public IEnumerator EnqueueRequest(RequestTask request) { if (this.currentRequest != null) { this.pendingRequests.Enqueue(request); yield return(new WaitWhile(request.IsPending)); if (!request.IsProcessing()) { yield break; } } this.currentRequest = request; yield return(this.SendRequest(request)); request.SetFinished(); if (this.pendingRequests.IsNotEmpty()) { var nextRequest = this.pendingRequests.Dequeue(); nextRequest.SetProcessing(); } else { this.currentRequest = null; } }
/// <inheritdoc cref="IRequestChannel.SendRequest"/> public IEnumerator SendRequest(RequestTask request) { yield return(OnBeforeSendRequest(request)); yield return(request.UnityWebRequest.SendWebRequest()); yield return(this.OnAfterSendRequest(request)); }
public static bool DeserializeBody <T>(this RequestTask requestTask, out T result) { try { var bodyString = requestTask.GetBodyString(); result = JsonUtility.FromJson <T>(bodyString); return(true); } catch (Exception) { result = default; return(false); } }
private void CancelAllRequests() { if (this.currentRequest == null) { return; } this.currentRequest.SetCanceled(); while (this.pendingRequests.IsNotEmpty()) { var request = this.pendingRequests.Dequeue(); request.SetCanceled(); } this.currentRequest = null; }
public static void SetFinished(this RequestTask requestTask) { requestTask.State = RequestState.FINISHED; }
/// <summary> /// <para>Called after a request has sent.</para> /// </summary> protected virtual IEnumerator OnAfterSendRequest(RequestTask request) { yield break; }
/// <summary> /// <para>Send unity web request via channel asynchronously.</para> /// </summary> protected IEnumerator SendRequest(UnityWebRequest webRequest) { var requestTask = new RequestTask(webRequest); yield return(this.Channel.SendRequest(requestTask)); }
/// <summary> /// <para>Send unity web request asynchronously via queue channel.</para> /// </summary> protected IEnumerator EnqueueRequest(UnityWebRequest request) { var requestTask = new RequestTask(request); yield return(this.Channel.EnqueueRequest(requestTask)); }
public static bool IsFinished(this RequestTask request) { return(request.State == RequestState.FINISHED); }
public static long GetResponseCode(this RequestTask requestTask) { var currentWebRequest = requestTask.UnityWebRequest; return(currentWebRequest.responseCode); }
public static bool IsCanceled(this RequestTask request) { return(request.State == RequestState.CANCELED); }
public static void SetCanceled(this RequestTask requestTask) { requestTask.State = RequestState.CANCELED; }
public static bool IsProcessing(this RequestTask request) { return(request.State == RequestState.PROCESSING); }
public static void SetProcessing(this RequestTask requestTask) { requestTask.State = RequestState.PROCESSING; }
public static bool IsPending(this RequestTask requestTask) { return(requestTask.State == RequestState.PENDING); }
public static void SetPending(this RequestTask requestTask) { requestTask.State = RequestState.PENDING; }