blob: 59a0c9e6fd511ceac9801065666c4a5ac80748c2 [file] [log] [blame]
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
class TestingServer {
static const HOST = "127.0.0.1";
static const INIT = 0;
static const SHUTDOWN = -1;
void onConnection(Socket connection); // Abstract.
void errorHandlerServer(Exception e) {
Expect.fail("Server socket error $e");
}
void dispatch(message, SendPort replyTo) {
if (message == INIT) {
_server = new ServerSocket(HOST, 0, 10);
Expect.equals(true, _server != null);
_server.onConnection = onConnection;
_server.onError = errorHandlerServer;
replyTo.send(_server.port, null);
} else if (message == SHUTDOWN) {
_server.close();
port.close();
}
}
ServerSocket _server;
}
class TestingServerTest {
TestingServerTest.start(SendPort port)
: _receivePort = new ReceivePort(),
_sendPort = port {
initialize();
}
void run(); // Abstract.
void initialize() {
_receivePort.receive((var message, SendPort replyTo) {
_port = message;
run();
});
_sendPort.send(TestingServer.INIT, _receivePort.toSendPort());
}
void shutdown() {
_sendPort.send(TestingServer.SHUTDOWN, _receivePort.toSendPort());
_receivePort.close();
}
int _port;
ReceivePort _receivePort;
SendPort _sendPort;
}