本文整理汇总了C#中NetMQ.zmq.Msg.Put方法的典型用法代码示例。如果您正苦于以下问题:C# Msg.Put方法的具体用法?C# Msg.Put怎么用?C# Msg.Put使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类NetMQ.zmq.Msg
的用法示例。
在下文中一共展示了Msg.Put方法的9个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: XSetSocketOption
protected override bool XSetSocketOption(ZmqSocketOptions option, Object optval)
{
if (option != ZmqSocketOptions.Subscribe && option != ZmqSocketOptions.Unsubscribe)
{
ZError.ErrorNumber = (ErrorNumber.EINVAL);
return false;
}
byte[] val;
if (optval is String)
val = Encoding.ASCII.GetBytes ((String)optval);
else if (optval is byte[])
val = (byte[]) optval;
else
throw new ArgumentException();
// Create the subscription message.
Msg msg = new Msg(val.Length + 1);
if (option == ZmqSocketOptions.Subscribe)
msg.Put((byte)1);
else if (option == ZmqSocketOptions.Unsubscribe)
msg.Put((byte)0);
msg.Put (val,1);
// Pass it further on in the stack.
bool rc = base.XSend (msg, 0);
return rc;
}
示例2: XSetSocketOption
protected override void XSetSocketOption(ZmqSocketOptions option, Object optval)
{
if (option != ZmqSocketOptions.Subscribe && option != ZmqSocketOptions.Unsubscribe)
{
throw InvalidException.Create();
}
byte[] val;
if (optval is String)
val = Encoding.ASCII.GetBytes ((String)optval);
else if (optval is byte[])
val = (byte[]) optval;
else
throw InvalidException.Create();
// Create the subscription message.
Msg msg = new Msg(val.Length + 1);
if (option == ZmqSocketOptions.Subscribe)
msg.Put((byte)1);
else if (option == ZmqSocketOptions.Unsubscribe)
msg.Put((byte)0);
msg.Put (val,1);
// Pass it further on in the stack.
base.XSend (msg, 0);
}
示例3: XSub
static XSub()
{
s_sendSubscription = (data, size, arg) => {
Pipe pipe = (Pipe) arg;
// Create the subsctription message.
Msg msg = new Msg(size + 1);
msg.Put((byte)1);
msg.Put(data,1, size);
// Send it to the pipe.
bool sent = pipe.Write (msg);
// If we reached the SNDHWM, and thus cannot send the subscription, drop
// the subscription message instead. This matches the behaviour of
// zmq_setsockopt(ZMQ_SUBSCRIBE, ...), which also drops subscriptions
// when the SNDHWM is reached.
if (!sent)
msg.Close ();
};
}
示例4: Send
public static void Send(SocketBase s, byte[] buf, int len, SendReceiveOptions flags)
{
if (s == null || !s.CheckTag())
{
throw NetMQException.Create(ErrorCode.EFAULT);
}
Msg msg = new Msg(len);
msg.Put(buf, 0, len);
SendMsg(s, msg, flags);
}
示例5: PushMsg
public bool PushMsg(Msg msg)
{
Debug.Assert(m_options.SocketType == ZmqSocketType.Pub || m_options.SocketType == ZmqSocketType.Xpub);
// The first message is identity.
// Let the session process it.
bool rc = m_session.PushMsg(msg);
Debug.Assert(rc);
// Inject the subscription message so that the ZMQ 2.x peer
// receives our messages.
msg = new Msg(1);
msg.Put((byte) 1);
rc = m_session.PushMsg(msg);
m_session.Flush();
// Once we have injected the subscription message, we can
// Divert the message flow back to the session.
Debug.Assert(m_decoder != null);
m_decoder.SetMsgSink(m_session);
return rc;
}
示例6: PullMsg
public virtual Msg PullMsg()
{
Msg msg;
// First message to send is identity
if (!m_identitySent)
{
msg = new Msg(m_options.IdentitySize);
msg.Put(m_options.Identity, 0, m_options.IdentitySize);
m_identitySent = true;
m_incompleteIn = false;
return msg;
}
if (m_pipe == null || (msg = m_pipe.Read()) == null)
{
return null;
}
m_incompleteIn = msg.HasMore;
return msg;
}
示例7: Connect
public void Connect(String addr)
{
if (m_ctxTerminated)
{
throw TerminatingException.Create();
}
// 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[] hwms = { sndhwm, rcvhwm };
bool[] delays = { m_options.DelayOnDisconnect, m_options.DelayOnClose };
Pipe[] pipes = Pipe.PipePair(parents, hwms, 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)
{
Msg id = new Msg(peer.Options.IdentitySize);
id.Put(peer.Options.Identity, 0, peer.Options.IdentitySize);
id.SetFlags(MsgFlags.Identity);
bool written = pipes[0].Write(id);
Debug.Assert(written);
pipes[0].Flush();
}
// If required, send the identity of the local socket to the peer.
if (m_options.RecvIdentity)
{
Msg id = new Msg(m_options.IdentitySize);
id.Put(m_options.Identity, 0, m_options.IdentitySize);
id.SetFlags(MsgFlags.Identity);
bool written = pipes[1].Write(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;
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.EMTHREAD);
}
Address 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());
paddr.Resolved.Resolve(address, true);
//.........这里部分代码省略.........
示例8: Send
public static int Send(SocketBase s, byte[] buf, int len, SendRecieveOptions flags)
{
if (s == null || !s.CheckTag())
{
throw new InvalidOperationException();
}
Msg msg = new Msg(len);
msg.Put(buf, 0, len);
int rc = SendMsg(s, msg, flags);
if (rc < 0)
{
return -1;
}
return rc;
}
示例9: 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;
}