use of com.ibm.streamsx.topology.internal.tester.tcp.TCPTestClient in project streamsx.topology by IBMStreams.
the class TesterSink method processPunctuation.
@Override
public void processPunctuation(StreamingInput<Tuple> port, Punctuation mark) throws Exception {
super.processPunctuation(port, mark);
if (mark == Punctuation.FINAL_MARKER) {
int portIndex = port.getPortNumber();
TestTuple finalTupleMarker = new TestTuple(portIndex, new byte[0]);
TCPTestClient client = clients[portIndex];
client.writeTuple(finalTupleMarker).await();
}
}
use of com.ibm.streamsx.topology.internal.tester.tcp.TCPTestClient in project streamsx.topology by IBMStreams.
the class TesterSink method processBatch.
@Override
protected boolean processBatch(Queue<BatchedTuple> batch) throws Exception {
List<WriteFuture> futures = new ArrayList<>(batch.size());
for (BatchedTuple bt : batch) {
int portIndex = bt.getStream().getPortNumber();
TCPTestClient client = clients[portIndex];
BinaryEncoding be = encoders[portIndex];
byte[] tupleData = new byte[(int) be.getEncodedSize(bt.getTuple())];
be.encodeTuple(bt.getTuple(), ByteBuffer.wrap(tupleData));
TestTuple tt = new TestTuple(portIndex, tupleData);
futures.add(client.writeTuple(tt));
}
for (WriteFuture future : futures) {
future.await();
}
return false;
}
use of com.ibm.streamsx.topology.internal.tester.tcp.TCPTestClient in project streamsx.topology by IBMStreams.
the class TesterSink method initialize.
@Override
public void initialize(OperatorContext context) throws Exception {
super.initialize(context);
setBatchSize(1);
setPreserveOrder(true);
InetSocketAddress addr = new InetSocketAddress(getHost(), getPort());
clients = new TCPTestClient[context.getNumberOfStreamingInputs()];
encoders = new BinaryEncoding[context.getNumberOfStreamingInputs()];
for (StreamingInput<Tuple> input : context.getStreamingInputs()) {
TCPTestClient client = new TCPTestClient(addr);
client.connect();
clients[input.getPortNumber()] = client;
encoders[input.getPortNumber()] = input.getStreamSchema().newNativeBinaryEncoding();
}
}
Aggregations