當前位置: 首頁>>代碼示例>>C#>>正文


C# Msg.InitDelimiter方法代碼示例

本文整理匯總了C#中NetMQ.zmq.Msg.InitDelimiter方法的典型用法代碼示例。如果您正苦於以下問題:C# Msg.InitDelimiter方法的具體用法?C# Msg.InitDelimiter怎麽用?C# Msg.InitDelimiter使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在NetMQ.zmq.Msg的用法示例。


在下文中一共展示了Msg.InitDelimiter方法的1個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的C#代碼示例。

示例1: Terminate

        //  Ask pipe to terminate. The termination will happen asynchronously
        //  and user will be notified about actual deallocation by 'terminated'
        //  event. If delay is true, the pending messages will be processed
        //  before actual shutdown.
        public void Terminate(bool delay)
        {
            //  Overload the value specified at pipe creation.
            m_delay = delay;

            //  If terminate was already called, we can ignore the duplicit invocation.
            if (m_state == State.Terminated || m_state == State.DoubleTerminated)
                return;

                //  If the pipe is in the phase of async termination, it's going to
                //  closed anyway. No need to do anything special here.
            else if (m_state == State.Terminating)
                return;

                //  The simple sync termination case. Ask the peer to terminate and wait
                //  for the ack.
            else if (m_state == State.Active) {
                SendPipeTerm (m_peer);
                m_state = State.Terminated;
            }

                //  There are still pending messages available, but the user calls
                //  'terminate'. We can act as if all the pending messages were read.
            else if (m_state == State.Pending && !m_delay) {
                m_outpipe = null;
                SendPipeTermAck (m_peer);
                m_state = State.Terminating;
            }

                //  If there are pending messages still availabe, do nothing.
            else if (m_state == State.Pending) {
            }

                //  We've already got delimiter, but not term command yet. We can ignore
                //  the delimiter and ack synchronously terminate as if we were in
                //  active state.
            else if (m_state == State.Delimited) {
                SendPipeTerm (m_peer);
                m_state = State.Terminated;
            }

                //  There are no other states.
            else
                Debug.Assert(false);

            //  Stop outbound flow of messages.
            m_outActive = false;

            if (m_outpipe != null) {

                //  Drop any unfinished outbound messages.
                Rollback ();

                //  Write the delimiter into the pipe. Note that watermarks are not
                //  checked; thus the delimiter can be written even when the pipe is full.

                Msg msg = new Msg();
                msg.InitDelimiter ();
                m_outpipe.Write (msg, false);
                Flush ();

            }
        }
開發者ID:ezhuo,項目名稱:netmq,代碼行數:67,代碼來源:Pipe.cs


注:本文中的NetMQ.zmq.Msg.InitDelimiter方法示例由純淨天空整理自Github/MSDocs等開源代碼及文檔管理平台,相關代碼片段篩選自各路編程大神貢獻的開源項目,源碼版權歸原作者所有,傳播和使用請參考對應項目的License;未經允許,請勿轉載。