
var HOST = 'localhost'
var PORT = 12345;
var EXIT_TIMEOUT = 300e3;

print('automatic exit after ' + (EXIT_TIMEOUT / 1e3) + ' seconds');
setTimeout(function () {
    print('exit timer');
    EventLoop.requestExit();
}, EXIT_TIMEOUT);

print('listen on ' + HOST + ':' + PORT);
EventLoop.server(HOST, PORT, function (fd, addr, port) {
    print('new connection on fd ' + fd + ' from ' + addr + ':' + port);
    EventLoop.setReader(fd, function (fd, data) {
        var b, i, n, x;

        // Handle socket data carefully: if you convert it to a string,
        // it may not be valid UTF-8 etc.  Here we operate on the data
        // directly in the buffer.

        b = data.valueOf();  // ensure we get a plain buffer
        n = b.length;
        for (i = 0; i < n; i++) {
            x = b[i];
            if (x >= 0x61 && x <= 0x7a) {
                b[i] = x - 0x20;  // uppercase
            }
        }

        print('read data on fd ' + fd + ', length ' + data.length);
        EventLoop.write(fd, data);
    });
});
