예제 #1
0
 public void IsError(Exception exception)
 {
     ErrorInfo          = exception;
     HaveParsingResults = false;
     HaveRequestHeaders = false;
     ParsedRequest.Clear();
     RequestBulk.Clear();
     RequestParams.Clear();
 }
예제 #2
0
        public void Complete(bool waitForProducerThread)
        {
            var completion = Completion;

            if (completion != null)
            {
                Completion = null;
                completion.Discard();
            }

            Thread.MemoryBarrier();

            DriverOutputBuffer = null;
            ResponseHeaders    = null;

            ParsedRequest.Clear();

            var cancellation = m_cancellationTokenSource;
            var engine       = m_engine;
            var message      = m_requestMessage;
            var authContext  = m_authContext;

            if (cancellation != null)
            {
                cancellation.Cancel();
            }

            if (engine != null)
            {
                if (m_tracer.IsDebugEnabled)
                {
                    if (message != null && authContext != null)
                    {
                        var age = (DateTime.Now - message.CreatedOn).TotalMilliseconds;
                        m_tracer.Debug(
                            string.Format(
                                "Releasing request context for auth context id {0}, total time spent: {1} ms", authContext.ContextId, age));
                    }
                    else
                    {
                        m_tracer.Debug("Releasing request context");
                    }
                }

                engine.EndExecution(this, waitForProducerThread);
            }

            if (message != null)
            {
                message.Close();
            }

            Cleanup();
        }
예제 #3
0
        public void Cleanup()
        {
            m_authContext           = null;
            m_lastError             = null;
            m_requestMessage        = null;
            m_engine                = null;
            ResponseHeaders         = null;
            RecordsAffected         = 0;
            TotalRowsProduced       = 0;
            DriverOutputBuffer      = null;
            InputDataEnumerator     = null;
            ClauseEvaluationContext = null;
            OutputDataBuffer        = null;
            Completion              = null;
            ContainerDescriptor     = null;

            CacheInfo = null;
            Request.Clear();
            RequestBulk.Clear();
            RequestParameters.Clear();
            ParsedRequest.Clear();

            var cancellation = Interlocked.CompareExchange(ref m_cancellationTokenSource, null, m_cancellationTokenSource);

            if (cancellation != null)
            {
                cancellation.Cancel();
            }

            var ring = Interlocked.CompareExchange(ref m_buffersRing, null, m_buffersRing);

            if (ring != null)
            {
                ring.Dispose();
            }

            var items = m_buffersRingItems; // do not replace with null

            if (items != null)
            {
                foreach (var item in items)
                {
                    item.Cleanup();
                }
            }
        }