protected SerialExchangeResponse ProviderConversation(SerialExchangeRequest request, object unused) { var client = new TcpClient(); var formatter = new BinaryFormatter(); client.Connect(HostAddress, Port); try { using (var stream = client.GetStream()) { // // Отправляем запрос // formatter.Serialize(stream, request); // // Ожидаем, принимаем и десериализуем ответ провайдера // var response = (SerialExchangeResponse)formatter.Deserialize(stream); return(response); } } finally { client.Close(); } }
/// <summary> /// Соединяется с провайдером, отправляет запрос и получает ответ. /// </summary> /// <param name="request">Запрос</param> /// <returns>Десериализованный ответ сервера</returns> //[DebuggerNonUserCode] protected SerialExchangeResponse ProviderConversation(SerialExchangeRequest request) { var client = new TcpClient(); if (0 != Timeout) { client.SendTimeout = client.ReceiveTimeout = Timeout; } var formatter = new BinaryFormatter(); try { client.Connect(HostAddress, Port); } catch (Exception x) // handled { return(HandleException(x)); } try { using (var stream = client.GetStream()) { // // Отправляем запрос // formatter.Serialize(stream, request); // // Ожидаем, принимаем и десериализуем ответ провайдера // var response = (SerialExchangeResponse)formatter.Deserialize(stream); return(response); } } catch (Exception x) // handled { return(HandleException(x)); } finally { client.Close(); } }
protected abstract SerialExchangeResponse HandleRequest(SerialExchangeRequest request);