コード例 #1
0
        public IObserveOperationResult ExecuteObserveOperation(IObserveOperation op)
        {
            var readResult = new ObserveOperationResult();
            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) as ObserveOperationResult;
                    if (readResult.Success)
                    {
                        readResult.Pass();
                    }
                    else
                    {
                        readResult.InnerResult = result;
                        readResult.Fail("Failed to read response, see inner result for details");
                    }
                    return(readResult);
                }
                catch (IOException e)
                {
                    log.Error(e);

                    readResult.Fail("Exception reading response", e);
                    return(readResult);
                }
                finally
                {
                    ((IDisposable)result.Value).Dispose();
                }
            }
            else
            {
                readResult.Fail("Failed to obtain socket from pool");
                return(readResult);
            }
        }
コード例 #2
0
        public IObserveOperationResult ExecuteObserveOperation(IObserveOperation op)
        {
            var readResult = new ObserveOperationResult();
            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) as ObserveOperationResult;
                    if (readResult.Success)
                    {
                        readResult.Pass();
                    }
                    else
                    {
                        readResult.InnerResult = result;
                        readResult.Fail("Failed to read response, see inner result for details");
                    }
                    return readResult;
                }
                catch (IOException e)
                {
                    log.Error(e);
                    readResult.StatusCode = StatusCode.UnspecifiedError;
                    readResult.Fail("Exception reading response", e);
                    return readResult;
                }
                finally
                {
                    ((IDisposable)result.Value).Dispose();
                }
            }
            else
            {
                result.Combine(readResult);
                return readResult;
            }
        }