Package org.zeromq
Class ZMsg
- java.lang.Object
-
- org.zeromq.ZMsg
-
public class ZMsg extends Object implements Iterable<ZFrame>, Deque<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
-
-
Constructor Summary
Constructors Constructor Description ZMsg()
Class Constructor
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description boolean
add(byte[] data)
boolean
add(String stringValue)
boolean
add(ZFrame e)
boolean
addAll(Collection<? extends ZFrame> arg0)
void
addFirst(byte[] data)
void
addFirst(String stringValue)
void
addFirst(ZFrame e)
void
addLast(byte[] data)
void
addLast(String stringValue)
void
addLast(ZFrame e)
void
addString(String str)
Add a String as a new ZFrame to the end of listvoid
clear()
boolean
contains(Object o)
boolean
containsAll(Collection<?> arg0)
long
contentSize()
Return total number of bytes contained in all ZFrames in this ZMsgIterator<ZFrame>
descendingIterator()
void
destroy()
Destructor.void
dump(Appendable out)
Dump the message in human readable format.ZMsg
duplicate()
Creates copy of this ZMsg.ZFrame
element()
boolean
equals(Object o)
ZFrame
getFirst()
ZFrame
getLast()
int
hashCode()
boolean
isEmpty()
Iterator<ZFrame>
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
offer(ZFrame e)
boolean
offerFirst(ZFrame e)
boolean
offerLast(ZFrame e)
ZFrame
peek()
ZFrame
peekFirst()
ZFrame
peekLast()
ZFrame
poll()
ZFrame
pollFirst()
ZFrame
pollLast()
ZFrame
pop()
String
popString()
Pop a ZFrame and return the toString() representation of it.void
push(byte[] data)
void
push(String str)
void
push(ZFrame e)
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, int flag)
Receives message from socket, returns ZMsg object or null if the recv was interrupted.ZFrame
remove()
boolean
remove(Object o)
boolean
removeAll(Collection<?> arg0)
ZFrame
removeFirst()
boolean
removeFirstOccurrence(Object o)
ZFrame
removeLast()
boolean
removeLastOccurrence(Object o)
boolean
retainAll(Collection<?> arg0)
static boolean
save(ZMsg msg, DataOutputStream file)
Save message to an open data output stream.void
send(ZMQ.Socket socket)
Send message to 0MQ socket.void
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)
String
toString()
Convert the message to a string, for use in debugging.ZFrame
unwrap()
Pop frame off front of message, caller now owns frame.void
wrap(ZFrame 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
-
-
-
-
Method Detail
-
destroy
public void destroy()
Destructor. Explicitly destroys all ZFrames contains in the ZMsg
-
contentSize
public long contentSize()
Return total number of bytes contained in all ZFrames in this ZMsg- Returns:
-
addString
public void addString(String str)
Add a String as a new ZFrame to the end of list- Parameters:
str
- String to add to list
-
duplicate
public ZMsg 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
public void wrap(ZFrame frame)
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
public ZFrame 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
public void send(ZMQ.Socket socket)
Send message to 0MQ socket.- Parameters:
socket
- 0MQ socket to send ZMsg on.
-
send
public void send(ZMQ.Socket socket, boolean destroy)
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.
-
recvMsg
public static ZMsg recvMsg(ZMQ.Socket socket)
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:
-
recvMsg
public static ZMsg recvMsg(ZMQ.Socket socket, int flag)
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.- Parameters:
socket
-flag
- see ZMQ constants- Returns:
-
save
public static boolean save(ZMsg msg, DataOutputStream file)
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
public static ZMsg load(DataInputStream file)
Load / append a ZMsg from an open DataInputStream- Parameters:
file
- DataInputStream connected to file- Returns:
- ZMsg object
-
newStringMsg
public static ZMsg newStringMsg(String... strings)
Create a new ZMsg from one or more Strings- Parameters:
strings
- Strings to add as frames.- Returns:
- ZMsg object
-
equals
public boolean equals(Object o)
- 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
public void dump(Appendable out)
Dump the message in human readable format. This should only be used for debugging and tracing, inefficient in handling large messages.
-
toString
public String toString()
Convert the message to a string, for use in debugging.
-
addFirst
public void addFirst(String stringValue)
-
addFirst
public void addFirst(byte[] data)
-
addLast
public void addLast(String stringValue)
-
addLast
public void addLast(byte[] data)
-
push
public void push(String str)
-
push
public void push(byte[] data)
-
add
public boolean add(String stringValue)
-
add
public boolean add(byte[] data)
-
addAll
public boolean addAll(Collection<? extends ZFrame> arg0)
-
clear
public void clear()
- Specified by:
clear
in interfaceCollection<ZFrame>
-
containsAll
public boolean containsAll(Collection<?> arg0)
- Specified by:
containsAll
in interfaceCollection<ZFrame>
-
isEmpty
public boolean isEmpty()
- Specified by:
isEmpty
in interfaceCollection<ZFrame>
-
removeAll
public boolean removeAll(Collection<?> arg0)
- Specified by:
removeAll
in interfaceCollection<ZFrame>
-
retainAll
public boolean retainAll(Collection<?> arg0)
- Specified by:
retainAll
in interfaceCollection<ZFrame>
-
toArray
public Object[] toArray()
- Specified by:
toArray
in interfaceCollection<ZFrame>
-
toArray
public <T> T[] toArray(T[] arg0)
- Specified by:
toArray
in interfaceCollection<ZFrame>
-
add
public boolean add(ZFrame e)
-
contains
public boolean contains(Object o)
-
descendingIterator
public Iterator<ZFrame> descendingIterator()
- Specified by:
descendingIterator
in interfaceDeque<ZFrame>
-
element
public ZFrame element()
-
offer
public boolean offer(ZFrame e)
-
offerFirst
public boolean offerFirst(ZFrame e)
- Specified by:
offerFirst
in interfaceDeque<ZFrame>
-
peek
public ZFrame peek()
-
poll
public ZFrame poll()
-
popString
public String popString()
Pop a ZFrame and return the toString() representation of it.- Returns:
- toString version of pop'ed frame, or null if no frame exists.
-
remove
public ZFrame remove()
-
remove
public boolean remove(Object o)
-
removeFirst
public ZFrame removeFirst()
- Specified by:
removeFirst
in interfaceDeque<ZFrame>
-
removeFirstOccurrence
public boolean removeFirstOccurrence(Object o)
- Specified by:
removeFirstOccurrence
in interfaceDeque<ZFrame>
-
removeLast
public ZFrame removeLast()
- Specified by:
removeLast
in interfaceDeque<ZFrame>
-
removeLastOccurrence
public boolean removeLastOccurrence(Object o)
- Specified by:
removeLastOccurrence
in interfaceDeque<ZFrame>
-
-