--
You received this message because you are subscribed to the Google Groups "vert.x" group.
To unsubscribe from this group and stop receiving emails from it, send an email to vertx+un...@googlegroups.com.
Visit this group at https://groups.google.com/group/vertx.
To view this discussion on the web, visit https://groups.google.com/d/msgid/vertx/b85da314-b5de-411d-bd32-fa717f245dec%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
import io.vertx.core.Vertx;
import io.vertx.core.buffer.Buffer;
import io.vertx.core.net.NetClient;
import io.vertx.core.net.NetServer;
import io.vertx.core.net.NetSocket;
import io.vertx.core.parsetools.RecordParser;
import io.vertx.ext.unit.Async;
import io.vertx.ext.unit.TestContext;
import io.vertx.ext.unit.junit.VertxUnitRunner;
import org.junit.runner.RunWith;
import org.junit.*;
import java.util.Random;
import java.util.concurrent.atomic.AtomicInteger;
@RunWith(VertxUnitRunner.class)
public class RecordParserTest {
int PORT = 50000;
Vertx serverVertx;
static Random random = new Random();
private static Buffer newRadomSizeMessage() {
StringBuffer message = new StringBuffer();
for (int i=0; i <= random.nextInt(16384); i++) {
message.append(i);
}
System.out.println("Generated Length: " + message.toString().getBytes().length);
return Buffer.buffer()
.appendShort((short) 0)
.appendShort((short)message.toString().getBytes().length)
.appendBytes("0000".getBytes())
.appendBytes(message.toString().getBytes());
}
@Before
public void setupServer() {
AtomicInteger messageCount = new AtomicInteger(0);
Vertx serverVertx = Vertx.vertx();
NetServer server = serverVertx
.createNetServer()
.connectHandler(socket -> {
socket.handler(buffer -> {
//incoming data to the server
});
socket.write(newRadomSizeMessage());
System.out.println("Sent");
})
.listen(PORT, "localhost");
serverVertx.setPeriodic(10000, keepAlive -> {
});
}
@Test
public void recordParserCheck(TestContext testContext) {
Async async = testContext.async();
Vertx clientVertx = Vertx.vertx();
NetClient client = clientVertx.createNetClient();
client.connect(PORT, "localhost", result -> {
if (result.succeeded()) {
NetSocket socket = result.result();
socket.handler(RecordParser.newFixed(8, parsed -> {
System.out.println(parsed.toString());
}));
clientVertx.setPeriodic(10000, keepAlive -> {});
} else {
System.out.println(result.cause());
}
});
}
}
RecordParser rp = RecordParser.newFixed(8);
boolean sizeChunk = true;
handler( block-> {
if(sizeChunk) {
int size = calculateSize(block);
rp.fixedSizeMode(size);
sizeChunk = false;
} else {
System.out.println("block:"+block);
rp.fixedSizeMode(8);
sizeChunk = false;
}
});
For ref I used the vertx RecordParser code to hint on how to do it in case anyone comes across the same issue.