/// <summary> /// Запрос на выполнение json-rpc метода /// </summary> /// <param name="stream"></param> /// <param name="returnType"></param> /// <param name="request"></param> /// <returns></returns> /// <exception cref="JsonException">ошибочный ответ при приравнивание к типу</exception> public static object Invoke(Stream stream, Type returnType, IJsonRequest request) { if (returnType == null) { throw new ArgumentNullException("returnType"); } if (stream == null) { throw new ArgumentNullException("stream"); } if (request == null) { throw new ArgumentNullException("request"); } var streamer = new Streamer(stream); // send request streamer.WriteLine(request.ToString()); // get response var response = streamer.ReadLine(TimeSpan.MaxValue); while (response == "") { response = streamer.ReadLine(TimeSpan.MaxValue); } return((new ResponseParser(response, returnType)).Result()); }
/// <summary> /// Get new request from interface /// </summary> /// <returns>null if hasn't new request or get one new JsonRequest</returns> public JsonRequest GetRequest() { if (!IsActive) { return(null); } try { var request = mStreamer.ReadLine(new TimeSpan(0, 0, 0, 0, 500)); // wait nothing if (!string.IsNullOrEmpty(request)) { RestartTimer(); return(new JsonRequest(request)); } } catch (Exception) { return(null); } return(null); }