1--TEST-- 2swoole_socket_coro: recv/send all 3--SKIPIF-- 4<?php require __DIR__ . '/../include/skipif.inc'; ?> 5--FILE-- 6<?php 7require __DIR__ . '/../include/bootstrap.php'; 8define('BIG_RANDOM_DATA', str_repeat(get_safe_random(1024), 64 * 1024)); 9define('BIG_RANDOM_DATA_LENGTH', strlen(BIG_RANDOM_DATA)); 10$server = new Swoole\Coroutine\Socket(AF_INET, SOCK_STREAM, IPPROTO_IP); 11$port = get_one_free_port(); 12go(function () use ($server, $port) { 13 Assert::assert($server->bind('127.0.0.1', $port)); 14 Assert::assert($server->listen(512)); 15 $conn_map = []; 16 while ($conn = $server->accept()) { 17 Assert::assert($conn instanceof Co\Socket); 18 Assert::assert($conn->fd > 0); 19 $conn_map[$conn->fd] = $conn; 20 go(function () use ($conn) { 21 Assert::assert($conn instanceof Swoole\Coroutine\Socket); 22 Assert::assert($conn->recvAll(BIG_RANDOM_DATA_LENGTH) === BIG_RANDOM_DATA); 23 Assert::assert($conn->sendAll(BIG_RANDOM_DATA) === BIG_RANDOM_DATA_LENGTH); 24 }); 25 } 26}); 27go(function () use ($server, $port) { 28 $conn = new Swoole\Coroutine\Socket(AF_INET, SOCK_STREAM, IPPROTO_IP); 29 Assert::assert($conn->connect('127.0.0.1', $port)); 30 Assert::assert($conn->sendAll(BIG_RANDOM_DATA) === BIG_RANDOM_DATA_LENGTH); 31 Assert::assert($conn->recvAll(BIG_RANDOM_DATA_LENGTH) === BIG_RANDOM_DATA); 32 Assert::assert($server->close()); 33}); 34Swoole\Event::wait(); 35echo "DONE\n"; 36?> 37--EXPECT-- 38DONE 39