iojs-nanomsg
Version:
nanomsg streams for iøjs
53 lines (40 loc) • 1.22 kB
JavaScript
var nano = require('../');
var assert = require('assert');
if (process.argv.length != 5) {
console.log('usage: remote_lat <connect-to> <message-size> <roundtrip-count>');
process.exit(1);
}
var connect_to = process.argv[2];
var message_size = Number(process.argv[3]);
var roundtrip_count = Number(process.argv[4]);
var message = new Buffer(message_size);
message.fill('h');
var recvCounter = 0;
var req = nano.socket('req');
req.connect(connect_to);
var timer;
req.on('data', function (data) {
if (!timer) {
console.log('started receiving');
timer = process.hrtime();
}
assert.equal(data.length, message_size, 'message-size did not match');
if (++recvCounter === roundtrip_count) {
finish();
} else {
send();
}
});
function finish() {
var duration = process.hrtime(timer);
var millis = duration[0] * 1000 + duration[1] / 1000000;
console.log('message size: %d [B]', message_size);
console.log('roundtrip count: %d', roundtrip_count);
console.log('mean latency: %d [msecs]', millis / (roundtrip_count * 2));
console.log('overall time: %d secs and %d nanoseconds', duration[0], duration[1]);
process.exit(0)
}
function send() {
req.write(message);
}
send()