$running = true;
do {
    if (($socket = socket_accept($server_socket)) < 0) {
        echo "socket_accept() failed \r\n";
        break;
    }
    $request = new Request();
    $request->setSocket($socket);
    $request->getBuffer();
    $request->parseBuffer();
    $response = new Response();
    $response->setRequest($request);
    if (class_exists($request->getUri())) {
        $handler_name = $request->getUri();
        $handler = new $handler_name();
        $response->setHandler($handler);
    } else {
        // TODO: 404
        echo "cannot find class " . $request->getUri();
    }
    $response->sendData();
    unset($response);
} while ($running);
socket_shutdown($server_socket);
socket_close($server_socket);
try {
    $droid->exit();
    die("Script exited normally\r\n");
} catch (Exception $e) {
    $droid->vibrate(30);
    echo "Exception:" . $e->getMessage();