本文整理汇总了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 ();
}
}