public class PacketStream
extends java.lang.Object
PacketStream stream = broker.createStream();
broker.call("streamService.action", stream);
stream.sendData("body".getBytes());
stream.sendClose(); // Must close!
Sample stream receiver service:
public class StreamService extends Service {
public Action action = ctx -> {
return new Promise(res -> {
ctx.stream.onPacket((bytes, cause, close) -> {
if (bytes != null) {
// Do something with the bytes
}
if (close) {
// Send response, can be a structure (Tree)
res.resolve("Ok");
}
});
});
};
}
| Modifier and Type | Field and Description |
|---|---|
protected java.util.LinkedList<byte[]> |
buffer
Memory-buffer of an unconnected stream.
|
protected java.lang.Throwable |
cause
Cause (blocking error).
|
protected static byte[] |
CLOSE_MARKER |
protected java.util.concurrent.atomic.AtomicBoolean |
closed
Is stream closed?
|
protected static int |
DEFAULT_MIN_PACKET_SIZE |
protected PacketListener[] |
listeners
Array of PacketListeners (receivers).
|
protected static org.slf4j.Logger |
logger |
protected java.lang.String |
nodeID
Current node ID.
|
protected long |
packetDelay
Time between each packet sent.
|
protected int |
packetSize
Minimum size of packets.
|
protected java.util.concurrent.ScheduledExecutorService |
scheduler |
protected java.util.concurrent.atomic.AtomicLong |
transferedBytes
Counter of transfered bytes.
|
| Constructor and Description |
|---|
PacketStream(java.lang.String nodeID,
java.util.concurrent.ScheduledExecutorService scheduler) |
| Modifier and Type | Method and Description |
|---|---|
java.io.OutputStream |
asOutputStream() |
java.nio.channels.WritableByteChannel |
asWritableByteChannel() |
java.lang.Throwable |
getCause() |
long |
getPacketDelay() |
int |
getPacketSize() |
long |
getTransferedBytes() |
boolean |
isClosed() |
boolean |
onPacket(PacketListener listener) |
protected void |
scheduleNextPacket(java.io.InputStream source,
java.io.OutputStream destination,
io.datatree.Promise promise,
byte[] packet) |
protected void |
scheduleNextPacket(java.nio.channels.ReadableByteChannel source,
java.io.OutputStream destination,
io.datatree.Promise promise,
java.nio.ByteBuffer packet) |
boolean |
sendClose() |
boolean |
sendData(byte[] bytes) |
boolean |
sendError(java.lang.Throwable cause) |
void |
setPacketDelay(long packetDelay) |
void |
setPacketSize(int packetSize) |
io.datatree.Promise |
transferFrom(java.io.File source) |
io.datatree.Promise |
transferFrom(java.io.InputStream source) |
io.datatree.Promise |
transferFrom(java.nio.channels.ReadableByteChannel source) |
io.datatree.Promise |
transferFrom(java.net.URL source) |
io.datatree.Promise |
transferTo(java.io.File destination) |
io.datatree.Promise |
transferTo(java.io.File destination,
boolean append) |
io.datatree.Promise |
transferTo(java.io.OutputStream destination) |
io.datatree.Promise |
transferTo(java.io.OutputStream destination,
boolean closeStream) |
io.datatree.Promise |
transferTo(java.nio.channels.WritableByteChannel destination) |
io.datatree.Promise |
transferTo(java.nio.channels.WritableByteChannel destination,
boolean closeChannel) |
protected static final int DEFAULT_MIN_PACKET_SIZE
protected static final byte[] CLOSE_MARKER
protected static final org.slf4j.Logger logger
protected final java.util.concurrent.ScheduledExecutorService scheduler
protected final java.lang.String nodeID
protected final java.util.concurrent.atomic.AtomicBoolean closed
isClosedprotected final java.util.LinkedList<byte[]> buffer
protected final java.util.concurrent.atomic.AtomicLong transferedBytes
getTransferedBytesprotected PacketListener[] listeners
protected java.lang.Throwable cause
protected int packetSize
protected long packetDelay
public PacketStream(java.lang.String nodeID,
java.util.concurrent.ScheduledExecutorService scheduler)
public boolean onPacket(PacketListener listener)
public boolean sendData(byte[] bytes)
public boolean sendError(java.lang.Throwable cause)
public boolean sendClose()
public java.io.OutputStream asOutputStream()
public java.nio.channels.WritableByteChannel asWritableByteChannel()
public io.datatree.Promise transferFrom(java.net.URL source)
public io.datatree.Promise transferFrom(java.io.File source)
public io.datatree.Promise transferFrom(java.io.InputStream source)
public io.datatree.Promise transferFrom(java.nio.channels.ReadableByteChannel source)
protected void scheduleNextPacket(java.nio.channels.ReadableByteChannel source,
java.io.OutputStream destination,
io.datatree.Promise promise,
java.nio.ByteBuffer packet)
protected void scheduleNextPacket(java.io.InputStream source,
java.io.OutputStream destination,
io.datatree.Promise promise,
byte[] packet)
public io.datatree.Promise transferTo(java.io.File destination)
public io.datatree.Promise transferTo(java.io.File destination,
boolean append)
public io.datatree.Promise transferTo(java.io.OutputStream destination)
public io.datatree.Promise transferTo(java.io.OutputStream destination,
boolean closeStream)
public io.datatree.Promise transferTo(java.nio.channels.WritableByteChannel destination)
public io.datatree.Promise transferTo(java.nio.channels.WritableByteChannel destination,
boolean closeChannel)
public int getPacketSize()
public void setPacketSize(int packetSize)
public long getPacketDelay()
public void setPacketDelay(long packetDelay)
public boolean isClosed()
public long getTransferedBytes()
public java.lang.Throwable getCause()