1--TEST--
2swoole_socket_coro: recv line
3--SKIPIF--
4<?php
5require __DIR__ . '/../include/skipif.inc';
6?>
7--FILE--
8<?php
9require __DIR__ . '/../include/bootstrap.php';
10
11use Swoole\Coroutine\Server;
12use Swoole\Coroutine\Server\Connection;
13
14Co\run(function () {
15    $port = get_one_free_port();
16    go(function() use($port) {
17        $server = new Server('0.0.0.0', $port, false);
18
19        $server->handle(function (Connection $conn) use ($server) {
20            $conn->send("hello world\n");
21            $conn->send("\r");
22            $conn->send(str_repeat('A', 128) . str_repeat('B', 125));
23            $server->shutdown();
24        });
25
26        $server->start();
27    });
28
29    $cli = new Co\Socket(AF_INET, SOCK_STREAM, 0);
30    if ($cli->connect('127.0.0.1', $port) == false) {
31        echo "ERROR\n";
32        return;
33    }
34    Assert::eq($cli->recvLine(128), "hello world\n");
35    Assert::eq($cli->recvLine(128), "\r");
36    Assert::eq($cli->recvLine(128), str_repeat('A', 128));
37    Assert::eq($cli->recvLine(128), str_repeat('B', 125));
38    Assert::eq($cli->recvLine(128), "");
39});
40
41?>
42--EXPECT--
43