ZeroMQ
Safe handle for unmanaged libraries. See http://msdn.microsoft.com/msdnmag/issues/05/10/Reliability/ for more about safe handles.
Utility class to wrap an unmanaged shared lib and be responsible for freeing it.
This is a managed wrapper over the native LoadLibrary, GetProcAddress, and FreeLibrary calls on Windows
and dlopen, dlsym, and dlclose on Posix environments.
Dynamically look up a function in the dll via kernel32!GetProcAddress or libdl!dlsym.
Delegate type to load
Raw name of the function in the export table.
A delegate to the unmanaged function.
Thrown if the given function name is not found in the library.
GetProcAddress results are valid as long as the dll is not yet unloaded. This
is very very dangerous to use since you need to ensure that the dll is not unloaded
until after you're done with any objects implemented by the dll. For example, if you
get a delegate that then gets an IUnknown implemented by this dll,
you can not dispose this library until that IUnknown is collected. Else, you may free
the library and then the CLR may call release on that IUnknown and it will crash.
Socket transport events (for TCP and IPC sockets) that can be monitored.
Triggered when a connection has been established to a remote peer.
Triggered when an immediate connection attempt is delayed and it's completion is being polled for.
Triggered when a connection attempt is being handled by reconnect timer. The reconnect interval is recomputed for each attempt.
Triggered when a socket is successfully bound to a an interface.
Triggered when a socket could not bind to a given interface.
Triggered when a connection from a remote peer has been established with a socket's listen address.
Triggered when a connection attempt to a socket's bound address fails.
Triggered when a connection's underlying descriptor has been closed.
Triggered when a descriptor could not be released back to the OS.
Triggered when the stream engine (tcp and ipc specific) detects a corrupted / broken session.
Monitoring on this socket ended.
Any event, maybe readable from EventValue.
Monitors state change events on another socket within the same context.
The polling interval in milliseconds.
Create a socket with the current context and the specified socket type.
A value for the socket.
A instance with the current context and the specified socket type.
Create a socket with the current context and the specified socket type.
A value for the socket.
A instance with the current context and the specified socket type.
Occurs when a new connection is established.
NOTE: Do not rely on the value for
'Connected' messages, as the memory address contained in the message may no longer
point to the correct value.
Occurs when a synchronous connection attempt failed, and its completion is being polled for.
Occurs when an asynchronous connect / reconnection attempt is being handled by a reconnect timer.
Occurs when a socket is bound to an address and is ready to accept connections.
Occurs when a socket could not bind to an address.
Occurs when a connection from a remote peer has been established with a socket's listen address.
Occurs when a connection attempt to a socket's bound address fails.
Occurs when a connection was closed.
NOTE: Do not rely on the value for
'Closed' messages, as the memory address contained in the message may no longer
point to the correct value.
Occurs when a connection couldn't be closed.
Occurs when the stream engine (tcp and ipc specific) detects a corrupted / broken session.
Monitoring on this socket ended.
Gets the endpoint to which the monitor socket is connected.
Begins monitoring for state changes, raising the appropriate events as they arrive.
NOTE: This is a blocking method and should be run from another thread.
Releases the unmanaged resources used by the , and optionally disposes of the managed resources.
true to release both managed and unmanaged resources; false to release only unmanaged resources.
A base class for the all ZmqMonitor events.
Initializes a new instance of the class.
The that triggered the event.
The peer address.
Gets the monitor that triggered the event.
Provides data for , , , and events.
Gets the monitor descriptor (Posix)
Gets the monitor descriptor (Windows)
Provides data for event.
Gets the computed reconnect interval.
Specifies socket behavior when
an unroutable message is encountered.
Silently discard messages.
Force sending to fail with an 'EAGAIN' error code, effectively
enabling blocking sends.
Keep-alive packets behavior for a connection.
Use Operating System default behavior.
Disable keep-alive packets.
Enable keep-alive packets.
Creates instances within a process boundary.
Gets and protected sets the default Encoding.
Note: Do not set the Encoding after ZContext.Create.
Create a instance.
Create a instance.
Gets a handle to the native ZeroMQ context.
Gets or sets the size of the thread pool for the current context (default = 1).
Gets or sets the maximum number of sockets for the current context (default = 1024).
Gets or sets the supported socket protocol(s) when using TCP transports. (Default = ).
Shutdown the ZeroMQ context.
Shutdown the ZeroMQ context.
Terminate the ZeroMQ context.
Terminate the ZeroMQ context.
An exception thrown by the result of libzmq.
Gets the error code returned by libzmq.
Gets the error code returned by libzmq.
Gets the error text returned by libzmq.
Initializes a new instance of the class.
The error code returned by the ZeroMQ library call.
Initializes a new instance of the class.
The error code returned by the ZeroMQ library call.
Initializes a new instance of the class.
The error code returned by the ZeroMQ library call.
Initializes a new instance of the class.
The error code returned by the ZeroMQ library call.
Initializes a new instance of the class
using zmq_strerror(int errno)
The error code returned by the ZeroMQ library call.
Initializes a new instance of the class.
that holds the serialized object data about the exception being thrown.
that contains contextual information about the source or destination.
A single part message, sent or received via a .
A single or multi-part message, sent or received via a .
Initializes a new instance of the class.
Creates an empty message.
Initializes a new instance of the class.
Creates a message that contains the given objects.
A collection of objects to be stored by this .
is null.
Removes ZFrames. Note: Disposes the ZFrame.
The .
Removes ZFrames.
The .
If set to false, do not dispose the ZFrame.
Sends and receives messages, single frames and byte frames across ZeroMQ.
Create a instance.
Create a instance.
Create a instance.
You are using ZContext.Current!
Create a instance.
Finalizes an instance of the class.
Releases the unmanaged resources used by the , and optionally disposes of the managed resources.
true to release both managed and unmanaged resources; false to release only unmanaged resources.
Close the current socket.
Close the current socket.
Gets the value for the current socket.
Bind the specified endpoint.
A string consisting of a transport and an address, formatted as transport://address.
Bind the specified endpoint.
A string consisting of a transport and an address, formatted as transport://address.
Unbind the specified endpoint.
A string consisting of a transport and an address, formatted as transport://address.
Unbind the specified endpoint.
A string consisting of a transport and an address, formatted as transport://address.
Connect the specified endpoint.
A string consisting of a transport and an address, formatted as transport://address.
Connect the specified endpoint.
A string consisting of a transport and an address, formatted as transport://address.
Disconnect the specified endpoint.
Disconnect the specified endpoint.
A string consisting of a transport and an address, formatted as transport://address.
Receives HARD bytes into a new byte[n]. Please don't use ReceiveBytes, use instead ReceiveFrame.
Receives HARD bytes into a new byte[n]. Please don't use ReceiveBytes, use instead ReceiveFrame.
Sends HARD bytes from a byte[n]. Please don't use SendBytes, use instead SendFrame.
Sends HARD bytes from a byte[n]. Please don't use SendBytes, use instead SendFrame.
Sends HARD bytes from a byte[n]. Please don't use SendBytes, use instead SendFrame.
Sends HARD bytes from a byte[n]. Please don't use SendBytes, use instead SendFrame.
Subscribe to all messages.
Only applies to and sockets.
Subscribe to messages that begin with a specified prefix.
Only applies to and sockets.
Prefix for subscribed messages.
Subscribe to messages that begin with a specified prefix.
Only applies to and sockets.
Prefix for subscribed messages.
Unsubscribe from all messages.
Only applies to and sockets.
Unsubscribe from messages that begin with a specified prefix.
Only applies to and sockets.
Prefix for subscribed messages.
Unsubscribe from messages that begin with a specified prefix.
Only applies to and sockets.
Prefix for subscribed messages.
Gets a value indicating whether the multi-part message currently being read has more message parts to follow.
Gets or sets the I/O thread affinity for newly created connections on this socket.
Gets or sets the maximum length of the queue of outstanding peer connections. (Default = 100 connections).
Gets or sets the Identity.
Identity as byte[]
Gets or sets the Identity.
Note: The string contains chars like \0 (null terminator,
which are NOT printed (in Console.WriteLine)!
Identity as string
Gets or sets the linger period for socket shutdown. (Default = , infinite).
Gets or sets the maximum size for inbound messages (bytes). (Default = -1, no limit).
Gets or sets the time-to-live field in every multicast packet sent from this socket (network hops). (Default = 1 hop).
Gets or sets the maximum send or receive data rate for multicast transports (kbps). (Default = 100 kbps).
Gets or sets the underlying kernel receive buffer size for the current socket (bytes). (Default = 0, OS default).
Gets or sets the high water mark for inbound messages (number of messages). (Default = 0, no limit).
Gets or sets the timeout for receive operations. (Default = , infinite).
Gets or sets the initial reconnection interval. (Default = 100 milliseconds).
Gets or sets the maximum reconnection interval. (Default = 0, only use ).
Gets or sets the recovery interval for multicast transports. (Default = 10 seconds).
Gets or sets the underlying kernel transmit buffer size for the current socket (bytes). (Default = 0, OS default).
Gets or sets the high water mark for outbound messages (number of messages). (Default = 0, no limit).
Gets or sets the timeout for send operations. (Default = , infinite).
Gets or sets the override value for the SO_KEEPALIVE TCP socket option. (where supported by OS). (Default = -1, OS default).
Gets or sets the override value for the 'TCP_KEEPCNT' socket option (where supported by OS). (Default = -1, OS default).
The default value of '-1' means to skip any overrides and leave it to OS default.
Gets or sets the override value for the TCP_KEEPCNT (or TCP_KEEPALIVE on some OS). (Default = -1, OS default).
Gets or sets the override value for the TCP_KEEPINTVL socket option (where supported by OS). (Default = -1, OS default).
Add a filter that will be applied for each new TCP transport connection on a listening socket.
Example: "127.0.0.1", "mail.ru/24", "::1", "::1/128", "3ffe:1::", "3ffe:1::/56"
If no filters are applied, then TCP transport allows connections from any IP.
If at least one filter is applied then new connection source IP should be matched.
IPV6 or IPV4 CIDR filter.
Reset all TCP filters assigned by
and allow TCP transport to accept connections from any IP.
No socket flags are specified.
The operation should be performed in non-blocking mode.
The message being sent is a multi-part message, and that further message parts are to follow.
Exclusive Pair
Publish
Subscribe
Request
Reply / Response
Dealer
Router
When receiving messages a socket shall prepend a message
part containing the identity of the originating peer to the message before
passing it to the application. When sending messages a ZMQ_ROUTER socket shall remove
the first part of the message and use it to determine the identity of the peer the message
shall be routed to. If the peer does not exist anymore the message shall be silently discarded.
Pull
Push
XPublisher
Subscription message is a byte '1' (for subscriptions) or byte '0' (for unsubscriptions) followed by the subscription body.
XSubscriber
Subscription message is a byte '1' (for subscriptions) or byte '0' (for unsubscriptions) followed by the subscription body.
Stream
Initializes a new instance of the class.
Finalizes an instance of the class.
Gets a value indicating whether the device loop is running.
Start the device in the current thread.
The has already been disposed.
Blocks the calling thread until the device terminates.
Blocks the calling thread until the device terminates.
Blocks the calling thread until the device terminates or the specified time elapses.
A set to the amount of time to wait for the device to terminate.
true if the device terminated; false if the device has not terminated after
the amount of time specified by has elapsed.
Stop the device in such a way that it can be restarted.
Stop the device and safely terminate the underlying sockets.
Releases all resources used by the current instance, including the frontend and backend sockets.
Stops the device and releases the underlying sockets. Optionally disposes of managed resources.
true to release both managed and unmanaged resources; false to release only unmanaged resources.
You are using ZContext.Current!
You are using ZContext.Current!
Defines extension methods related to monitoring for instances.
Spawns a socket that publishes all events for
the specified socket over the inproc transport at the given endpoint.
Spawns a socket that publishes all events for
the specified socket over the inproc transport at the given endpoint.
Spawns a socket that publishes all events for
the specified socket over the inproc transport at the given endpoint.
Spawns a socket that publishes all events for
the specified socket over the inproc transport at the given endpoint.
Forwards messages received by a front-end socket to a back-end socket, from which
they are then sent.
The base implementation of is not threadsafe. Do not construct
a device with sockets that were created in separate threads or separate contexts.
The polling interval in milliseconds.
The ZContext reference, to not become finalized
The frontend socket that will normally pass messages to .
The backend socket that will normally receive messages from (and possibly send replies to) .
You are using ZContext.Current!
Initializes a new instance of the class.
You are using ZContext.Current!
A that will pass incoming messages to .
A that will receive messages from (and optionally send replies to) .
The for the current device.
Initializes a new instance of the class.
A that will pass incoming messages to .
A that will receive messages from (and optionally send replies to) .
The for the current device.
Gets a for configuring the frontend socket.
Gets a for configuring the backend socket.
Initializes the frontend and backend sockets. Called automatically when starting the device.
If called multiple times, will only execute once.
Start the device in the current thread. Should be used by implementations of the method.
Initializes the sockets prior to starting the device with .
Invoked when a message has been received by the frontend socket.
A object containing the poll event args.
Invoked when a message has been received by the backend socket.
A object containing the poll event args.
Stops the device and releases the underlying sockets. Optionally disposes of managed resources.
true to release both managed and unmanaged resources; false to release only unmanaged resources.
Defines a fluent interface for configuring device sockets.
Configure the socket to bind to a given endpoint. See for details.
A string representing the endpoint to which the socket will bind.
The current object.
Configure the socket to connect to a given endpoint. See for details.
A string representing the endpoint to which the socket will connect.
The current object.
Configure the socket to subscribe to a specific prefix. See for details.
A byte array containing the prefix to which the socket will subscribe.
The current object.
Configure the socket to subscribe to all incoming messages. See for details.
The current object.
Device for a Publisher and Subscribers
The frontend for a forwarder device.
The backend for a forwarder device.
Initializes a new instance of the class.
Initializes a new instance of the class.
Initializes a new instance of the class.
Initializes a new instance of the class.
Forwards requests from the frontend socket to the backend socket.
PubSub Forwards the Subscription messages
Queuing Push-Pull Device
The frontend for a streamer device.
The backend for a streamer device.
Initializes a new instance of the class.
Initializes a new instance of the class.
Initializes a new instance of the class.
Initializes a new instance of the class.
Forwards requests from the frontend socket to the backend socket.
Not implemented for the .
A Device on Routers and Dealers
The frontend for a queue device.
The backend for a queue device.
Initializes a new instance of the class.
Initializes a new instance of the class.
Initializes a new instance of the class
and binds to the specified Frontend and Backend address.
Initializes a new instance of the class
and binds to the specified Frontend and Backend address.
Forwards requests from the frontend socket to the backend socket.
Forwards replies from the backend socket to the frontend socket.
The Stream to Dealer is a Device for reading
and sending REPlies to TCP
The frontend for a queue device.
The backend for a queue device.
Initializes a new instance of the class.
Initializes a new instance of the class.
Initializes a new instance of the class.
Initializes a new instance of the class.
Forwards requests from the frontend socket to the backend socket.
Forwards replies from the backend socket to the frontend socket.