private IEnumerator SendRequest <TReq, TRes>(string method, TReq parameters, JsonRpcCallOutput output) { string id = (++Id).ToString(); Request <TReq> request = new Request <TReq>(id, method, parameters); Response <TRes> response = null; string requestTransport = JsonUtility.ToJson(request); Exception error = null; string responseTransport = null; yield return(this.transport.Request(requestTransport, (JsonRpcTransportException err, string res) => { error = err; responseTransport = res; })); if (string.IsNullOrEmpty(responseTransport)) { error = new JsonRpcException(ERR_MSG_EMPTY_TRANSPORT_RESPONSE); } if (error != null) { output.error = (JsonRpcException)error; yield break; } response = JsonUtility.FromJson <Response <TRes> >(responseTransport); if (response.error.code != Int32.MinValue) { output.error = (JsonRpcException)error; yield break; } output.result = response.result; }
public IEnumerator Send() { var output = new JsonRpcCallOutput(); yield return(this.client.Send <TReq, TRes>(this.type, this.method, this.parameters, output)); this.error = output.error; this.result = (TRes)output.result; }