/// <summary> /// Слушает все ответы от сервера и запускает callback из словаря callback'ов, созданный в методе On /// </summary> void ListenResponses() { _client.OnMessage += (sender, e) => { try { var methodName = MessageSerializer.DeserializeMethodName(e.RawData); var callback = _listenersPool[methodName]; callback.Action(MessageSerializer.DeserializeResponse(callback.Type, e.RawData)); } catch (KeyNotFoundException) { Log.Info($"Непрослушиваемый метод: {MessageSerializer.DeserializeMethodName(e.RawData)}"); } catch (MessagePackSerializationException) { Log.Warn($"Неопознанный метод: {Encoding.UTF8.GetString(e.RawData)}"); } }; }
/// <summary> /// Делает запрос на сервер без параметров /// </summary> /// <param name="methodName">Название метода</param> public void Request(string methodName) { _client.Send(MessageSerializer.SerializeRequest(methodName)); }
/// <summary> /// Делает запрос на сервер /// </summary> /// <typeparam name="T">Тип объекта запроса</typeparam> /// <param name="methodName">Название метода</param> /// <param name="data">Объект запроса</param> public void Request <T>(string methodName, T data) { _client.Send(MessageSerializer.SerializeRequest <T>(methodName, data)); }