Opc.Ua.Sample.MonitoredItemQueue.Enqueue C# (CSharp) 메소드

Enqueue() 개인적인 메소드

Adds the value to the queue. Discards values if the queue is full.
private Enqueue ( DataValue value, ServiceResult error ) : void
value DataValue The value to add.
error ServiceResult The error to add.
리턴 void
        private void Enqueue(DataValue value, ServiceResult error)
        {
            // check for empty queue.
            if (m_start < 0)
            {
                m_start = 0;
                m_end = 1;
                m_overflow = -1;

                m_values[m_start] = value;

                if (m_errors != null)
                {
                    m_errors[m_start] = error;
                }

                return;
            }

            int next = m_end;

            // check for wrap around.
            if (next >= m_values.Length)
            {
                next = 0;
            }

            // check if queue is full.
            if (m_start == next)
            {
                if (!m_discardOldest)
                {
                    m_overflow = m_end-1;
                    return;
                }

                // remove oldest value.
                m_start++;

                if (m_start >= m_values.Length)
                {
                    m_start = 0;
                }

                // set overflow bit.
                m_overflow = m_start;
            }

            // add value.
            m_values[next] = value;

            if (m_errors != null)
            {
                m_errors[next] = error;
            }

            m_end = next+1;
        }