Exemple #1
0
        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();
            }
        }
Exemple #2
0
        /// <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);