private void Dispatch(string body) { var requestOrResponse = JsonConvert.DeserializeObject<dynamic>(body); if (requestOrResponse != null) { if (requestOrResponse.type == "response") { var response = new V8Response(requestOrResponse); //var response = JsonConvert.DeserializeObject<V8Response>(body); int seq = response.request_seq; lock (_pendingRequests) { if (_inTimeoutMode) { _inTimeoutMode = false; Callback.Invoke(new V8Event("diagnostic", new { reason = "responsive" })); } if (_pendingRequests.ContainsKey(seq)) { var tcs = _pendingRequests[seq]; _pendingRequests.Remove(seq); tcs.SetResult(response); } } } else if (requestOrResponse.type == "event") { if (Callback != null) { var ev = new V8Event(requestOrResponse); //var ev = JsonConvert.DeserializeObject<V8Event>(body); Callback.Invoke(ev); } } } }
void HandleReponse(V8Response response) { if (response.success == false) requestException = new BadRequest (response.message); // Signal that a response has been processsed var requestEvent = requestEvents [response.request_seq]; requestEvents.Remove (response.request_seq); requestEvent.Set (); }
private void Dispatch(string req) { var request = JsonConvert.DeserializeObject<V8Request>(req); if (request != null && request.type == "request") { if (TRACE) Console.Error.WriteLine(string.Format("C {0}: {1}", request.command, JsonConvert.SerializeObject(request.arguments))); if (_callback != null) { var response = new V8Response(request.seq, request.command); _callback.Invoke(request.command, request.arguments, response); SendMessage(response); } } }