Example #1
0
        public void Send <I, O>(string service, string method, I payload, ClientTransportCallback <O> callback, C ctx)
        {
#if !UNITY_EDITOR
            if (CoroutineProcessor == null)
            {
                callback.Failure(
                    new TransportException(
                        "UnityTransport requires a coroutine processor to be present before any requests can be executed.")
                    );
                return;
            }
#endif
            try {
#if !UNITY_EDITOR
                CoroutineProcessor(ProcessRequest(PrepareRequest(service, method, payload), callback));
#else
                ProcessRequest(PrepareRequest(service, method, payload), callback);
#endif
            }
            catch (Exception ex) {
                callback.Failure(
                    new TransportException(string.Format("Unexpected exception {0}\n{1}", ex.Message, ex.StackTrace))
                    );
            }
        }
Example #2
0
 protected void ProcessRequest <T>(UnityWebRequest request, ClientTransportCallback <T> callback)
 {
     Wait(() => !request.isDone, () => {
         if (request.isError)
         {
             callback.Failure(new TransportException("Request failed: " + request.error));
             return;
         }
         ProcessResponse(request.downloadHandler.text, request.GetResponseHeaders(), callback);
     });
     request.Send();
 }
Example #3
0
        protected IEnumerator ProcessRequest <O>(UnityWebRequest req, ClientTransportCallback <O> callback)
        {
            ActiveRequests++;
            yield return(req.Send());

            ActiveRequests--;

            if (req.isError)
            {
                callback.Failure(new TransportException("Request failed: " + req.error));
                yield break;
            }
            ProcessResponse(req.downloadHandler.text, req.GetResponseHeaders(), callback);
        }
Example #4
0
 protected void ProcessResponse <O>(string text, Dictionary <string, string> headers,
                                    ClientTransportCallback <O> callback)
 {
     try {
         if (string.IsNullOrEmpty(text))
         {
             throw new TransportException("Empty response.");
         }
         var data = Marshaller.Unmarshal <O>(text);
         callback.Success(data);
     } catch (Exception ex) {
         callback.Failure(
             new TransportException(string.Format("Unexpected exception {0}\n{1}", ex.Message, ex.StackTrace))
             );
     }
 }