本文整理汇总了C#中NetMQ.zmq.Msg.InitPool方法的典型用法代码示例。如果您正苦于以下问题:C# Msg.InitPool方法的具体用法?C# Msg.InitPool怎么用?C# Msg.InitPool使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类NetMQ.zmq.Msg
的用法示例。
在下文中一共展示了Msg.InitPool方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: Connect
public void Connect([NotNull] string addr)
{
CheckContextTerminated();
// Process pending commands, if any.
ProcessCommands(0, false);
string address;
string protocol;
DecodeAddress(addr, out address, out protocol);
CheckProtocol(protocol);
if (protocol.Equals(Address.InProcProtocol))
{
// TODO: inproc connect is specific with respect to creating pipes
// as there's no 'reconnect' functionality implemented. Once that
// is in place we should follow generic pipe creation algorithm.
// Find the peer endpoint.
Ctx.Endpoint peer = FindEndpoint(addr);
// The total HWM for an inproc connection should be the sum of
// the binder's HWM and the connector's HWM.
int sndhwm;
int rcvhwm;
if (m_options.SendHighWatermark == 0 || peer.Options.ReceiveHighWatermark == 0)
sndhwm = 0;
else
sndhwm = m_options.SendHighWatermark + peer.Options.ReceiveHighWatermark;
if (m_options.ReceiveHighWatermark == 0 || peer.Options.SendHighWatermark == 0)
rcvhwm = 0;
else
rcvhwm = m_options.ReceiveHighWatermark + peer.Options.SendHighWatermark;
// Create a bi-directional pipe to connect the peers.
ZObject[] parents = { this, peer.Socket };
int[] highWaterMarks = { sndhwm, rcvhwm };
bool[] delays = { m_options.DelayOnDisconnect, m_options.DelayOnClose };
Pipe[] pipes = Pipe.PipePair(parents, highWaterMarks, delays);
// Attach local end of the pipe to this socket object.
AttachPipe(pipes[0]);
// If required, send the identity of the peer to the local socket.
if (peer.Options.RecvIdentity)
{
var id = new Msg();
id.InitPool(peer.Options.IdentitySize);
id.Put(peer.Options.Identity, 0, peer.Options.IdentitySize);
id.SetFlags(MsgFlags.Identity);
bool written = pipes[0].Write(ref id);
Debug.Assert(written);
pipes[0].Flush();
}
// If required, send the identity of the local socket to the peer.
if (m_options.RecvIdentity)
{
var id = new Msg();
id.InitPool(m_options.IdentitySize);
id.Put(m_options.Identity, 0, m_options.IdentitySize);
id.SetFlags(MsgFlags.Identity);
bool written = pipes[1].Write(ref id);
Debug.Assert(written);
pipes[1].Flush();
}
// Attach remote end of the pipe to the peer socket. Note that peer's
// seqnum was incremented in find_endpoint function. We don't need it
// increased here.
SendBind(peer.Socket, pipes[1], false);
// Save last endpoint URI
m_options.LastEndpoint = addr;
// remember inproc connections for disconnect
m_inprocs.Add(addr, pipes[0]);
return;
}
// Choose the I/O thread to run the session in.
IOThread ioThread = ChooseIOThread(m_options.Affinity);
if (ioThread == null)
{
throw NetMQException.Create("Empty IO Thread", ErrorCode.EmptyThread);
}
var paddr = new Address(protocol, address);
// Resolve address (if needed by the protocol)
if (protocol.Equals(Address.TcpProtocol))
{
paddr.Resolved = (new TcpAddress());
paddr.Resolved.Resolve(
address, m_options.IPv4Only);
}
else if (protocol.Equals(Address.IpcProtocol))
{
paddr.Resolved = (new IpcAddress());
//.........这里部分代码省略.........
示例2: PullMsg
public virtual bool PullMsg(ref Msg msg)
{
// First message to send is identity
if (!m_identitySent)
{
msg.InitPool(m_options.IdentitySize);
msg.Put(m_options.Identity, 0, m_options.IdentitySize);
m_identitySent = true;
m_incompleteIn = false;
return true;
}
if (m_pipe == null || !m_pipe.Read(ref msg))
{
return false;
}
m_incompleteIn = msg.HasMore;
return true;
}