Package org.zeromq
Class ZMsg
java.lang.Object
org.zeromq.ZMsg
- All Implemented Interfaces:
Iterable<ZFrame>
,Collection<ZFrame>
,Deque<ZFrame>
,Queue<ZFrame>
,SequencedCollection<ZFrame>
The ZMsg class provides methods to send and receive multipart messages
across 0MQ sockets. This class provides a list-like container interface,
with methods to work with the overall container. ZMsg messages are
composed of zero or more ZFrame objects.
// Send a simple single-frame string message on a ZMQSocket "output" socket object ZMsg.newStringMsg("Hello").send(output); // Add several frames into one message ZMsg msg = new ZMsg(); for (int i = 0 ; i < 10 ; i++) { msg.addString("Frame" + i); } msg.send(output); // Receive message from ZMQSocket "input" socket object and iterate over frames ZMsg receivedMessage = ZMsg.recvMsg(input); for (ZFrame f : receivedMessage) { // Do something with frame f (of type ZFrame) }Based on zmsg.c in czmq
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate final ArrayDeque
<ZFrame> Hold internal list of ZFrame objects -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionboolean
add
(byte[] data) boolean
boolean
boolean
addAll
(Collection<? extends ZFrame> arg0) addFirst
(byte[] data) void
addLast
(byte[] data) void
Add a String as a new ZFrame to the end of listappend
(byte[] data) Adds bytes as a new frame in the message.Adds a string as a new frame in the message.void
clear()
boolean
boolean
containsAll
(Collection<?> arg0) long
void
destroy()
Destructor.dump()
dump
(Appendable out) Dump the message in human readable format.Creates copy of this ZMsg.element()
boolean
getFirst()
getLast()
int
hashCode()
boolean
isEmpty()
iterator()
static ZMsg
load
(DataInputStream file) Load / append a ZMsg from an open DataInputStreamstatic ZMsg
newStringMsg
(String... strings) Create a new ZMsg from one or more Stringsboolean
boolean
offerFirst
(ZFrame e) boolean
peek()
peekLast()
poll()
pollLast()
pop()
Pop a ZFrame and return the toString() representation of it.push
(byte[] data) void
static ZMsg
recvMsg
(ZMQ.Socket socket) Receives message from socket, returns ZMsg object or null if the recv was interrupted.static ZMsg
recvMsg
(ZMQ.Socket socket, boolean wait) Receives message from socket, returns ZMsg object or null if the recv was interrupted.static ZMsg
recvMsg
(ZMQ.Socket socket, int flag) Receives message from socket, returns ZMsg object or null if the recv was interrupted.static void
recvMsg
(ZMQ.Socket socket, int flags, Consumer<ZMsg> handler) This API is in DRAFT state and is subject to change at ANY time until declared stable handle incoming message with a handlerstatic void
recvMsg
(ZMQ.Socket socket, int flags, Consumer<ZMsg> handler, Consumer<ZMQException> exceptionHandler) This API is in DRAFT state and is subject to change at ANY time until declared stable handle incoming message with a handlerremove()
boolean
boolean
removeAll
(Collection<?> arg0) boolean
boolean
boolean
retainAll
(Collection<?> arg0) static boolean
save
(ZMsg msg, DataOutputStream file) Save message to an open data output stream.boolean
send
(ZMQ.Socket socket) Send message to 0MQ socket.boolean
send
(ZMQ.Socket socket, boolean destroy) Send message to 0MQ socket, destroys contents after sending if destroy param is set to true.int
size()
Object[]
toArray()
<T> T[]
toArray
(T[] arg0) toString()
Returns pretty string representation of multipart message: [ frame0, frame1, ..., frameN ]unwrap()
Pop frame off front of message, caller now owns frame.Push frame plus empty frame to front of message, before 1st frame.Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
Methods inherited from interface java.util.Collection
parallelStream, removeIf, spliterator, stream, toArray
-
Field Details
-
frames
Hold internal list of ZFrame objects
-
-
Constructor Details
-
ZMsg
public ZMsg()Class Constructor
-
-
Method Details
-
destroy
public void destroy()Destructor. Explicitly destroys all ZFrames contains in the ZMsg -
contentSize
public long contentSize()- Returns:
- total number of bytes contained in all ZFrames in this ZMsg
-
addString
Add a String as a new ZFrame to the end of list- Parameters:
str
- String to add to list
-
duplicate
Creates copy of this ZMsg. Also duplicates all frame content.- Returns:
- The duplicated ZMsg object, else null if this ZMsg contains an empty frame set
-
wrap
Push frame plus empty frame to front of message, before 1st frame. Message takes ownership of frame, will destroy it when message is sent.- Parameters:
frame
-
-
unwrap
Pop frame off front of message, caller now owns frame. If next frame is empty, pops and destroys that empty frame (e.g. useful when unwrapping ROUTER socket envelopes)- Returns:
- Unwrapped frame
-
send
Send message to 0MQ socket.- Parameters:
socket
- 0MQ socket to send ZMsg on.- Returns:
- true if send is success, false otherwise
-
send
Send message to 0MQ socket, destroys contents after sending if destroy param is set to true. If the message has no frames, sends nothing but still destroy()s the ZMsg object- Parameters:
socket
- 0MQ socket to send ZMsg on.- Returns:
- true if send is success, false otherwise
-
recvMsg
Receives message from socket, returns ZMsg object or null if the recv was interrupted. Does a blocking recv, if you want not to block then use the ZLoop class or ZMQ.Poller to check for socket input before receiving or recvMsg with flag ZMQ.DONTWAIT.- Parameters:
socket
-- Returns:
- ZMsg object, null if interrupted
-
recvMsg
Receives message from socket, returns ZMsg object or null if the recv was interrupted.- Parameters:
socket
-wait
- true to wait for next message, false to do a non-blocking recv.- Returns:
- ZMsg object, null if interrupted
-
recvMsg
Receives message from socket, returns ZMsg object or null if the recv was interrupted. Setting the flag to ZMQ.DONTWAIT does a non-blocking recv.- Parameters:
socket
-flag
- see ZMQ constants- Returns:
- ZMsg object, null if interrupted
-
recvMsg
public static void recvMsg(ZMQ.Socket socket, int flags, Consumer<ZMsg> handler, Consumer<ZMQException> exceptionHandler) This API is in DRAFT state and is subject to change at ANY time until declared stable handle incoming message with a handler- Parameters:
socket
-flags
- see ZMQ constantshandler
- handler to handle incoming messageexceptionHandler
- handler to handle exceptions
-
recvMsg
This API is in DRAFT state and is subject to change at ANY time until declared stable handle incoming message with a handler- Parameters:
socket
-flags
- see ZMQ constantshandler
- handler to handle incoming message
-
save
Save message to an open data output stream. Data saved as: 4 bytes: number of frames For every frame: 4 bytes: byte size of frame data + n bytes: frame byte data- Parameters:
msg
- ZMsg to savefile
- DataOutputStream- Returns:
- True if saved OK, else false
-
load
Load / append a ZMsg from an open DataInputStream- Parameters:
file
- DataInputStream connected to file- Returns:
- ZMsg object
-
newStringMsg
Create a new ZMsg from one or more Strings- Parameters:
strings
- Strings to add as frames.- Returns:
- ZMsg object
-
equals
- Specified by:
equals
in interfaceCollection<ZFrame>
- Overrides:
equals
in classObject
-
hashCode
public int hashCode()- Specified by:
hashCode
in interfaceCollection<ZFrame>
- Overrides:
hashCode
in classObject
-
dump
Dump the message in human readable format. This should only be used for debugging and tracing, inefficient in handling large messages. -
dump
-
addFirst
-
addFirst
-
addLast
-
addLast
-
push
-
push
-
add
-
add
public boolean add(byte[] data) -
append
Adds a string as a new frame in the message.- Parameters:
stringValue
- the value to add- Returns:
- this
-
append
Adds bytes as a new frame in the message.- Parameters:
data
- the value to add- Returns:
- this
-
iterator
-
addAll
-
clear
public void clear()- Specified by:
clear
in interfaceCollection<ZFrame>
-
containsAll
- Specified by:
containsAll
in interfaceCollection<ZFrame>
-
isEmpty
public boolean isEmpty()- Specified by:
isEmpty
in interfaceCollection<ZFrame>
-
removeAll
- Specified by:
removeAll
in interfaceCollection<ZFrame>
-
retainAll
- Specified by:
retainAll
in interfaceCollection<ZFrame>
-
toArray
- Specified by:
toArray
in interfaceCollection<ZFrame>
-
toArray
public <T> T[] toArray(T[] arg0) - Specified by:
toArray
in interfaceCollection<ZFrame>
-
add
-
addFirst
-
addLast
-
contains
-
descendingIterator
- Specified by:
descendingIterator
in interfaceDeque<ZFrame>
-
element
-
getFirst
-
getLast
-
offer
-
offerFirst
- Specified by:
offerFirst
in interfaceDeque<ZFrame>
-
offerLast
-
peek
-
peekFirst
-
peekLast
-
poll
-
pollFirst
-
pollLast
-
pop
-
popString
Pop a ZFrame and return the toString() representation of it.- Returns:
- toString version of pop'ed frame, or null if no frame exists.
-
push
-
remove
-
remove
-
removeFirst
- Specified by:
removeFirst
in interfaceDeque<ZFrame>
- Specified by:
removeFirst
in interfaceSequencedCollection<ZFrame>
-
removeFirstOccurrence
- Specified by:
removeFirstOccurrence
in interfaceDeque<ZFrame>
-
removeLast
- Specified by:
removeLast
in interfaceDeque<ZFrame>
- Specified by:
removeLast
in interfaceSequencedCollection<ZFrame>
-
removeLastOccurrence
- Specified by:
removeLastOccurrence
in interfaceDeque<ZFrame>
-
size
public int size() -
append
-
toString
Returns pretty string representation of multipart message: [ frame0, frame1, ..., frameN ]
-