Пример #1
0
        //protected internal virtual PooledSocket CreateSocket(IPEndPoint endpoint, TimeSpan connectionTimeout, TimeSpan receiveTimeout)
        //{
        //    PooledSocket retval = new PooledSocket(endPoint, connectionTimeout, receiveTimeout);

        //    return retval;dis
        //}

        protected virtual IPooledSocketResult ExecuteOperation(IOperation op)
        {
            IOperationResult readResult = new BinaryOperationResult();
            var result = this.Acquire();

            if (result.Success && result.HasValue)
            {
                try
                {
                    var socket = result.Value;
                    var b      = op.GetBuffer();

                    socket.Write(b);

                    readResult = op.ReadResponse(socket);
                    if (readResult.Success)
                    {
                        result.Pass();
                    }
                    else
                    {
                        readResult.Combine(result);
                    }
                    return(result);
                }
                catch (IOException e)
                {
                    log.Error(e);

                    result.Fail("Exception reading response", e);
                    return(result);
                }
                finally
                {
                    ((IDisposable)result.Value).Dispose();
                }
            }
            else
            {
                readResult.Combine(result);
                return(result);
            }
        }