1--TEST--
2swoole_server/task: task callback
3--SKIPIF--
4<?php require __DIR__ . '/../../include/skipif.inc'; ?>
5--FILE--
6<?php
7use Swoole\Server;
8require __DIR__ . '/../../include/bootstrap.php';
9$pm = new SwooleTest\ProcessManager;
10$pm->parentFunc = function ($pid) use ($pm)
11{
12    $cli = new swoole_client(SWOOLE_SOCK_TCP, SWOOLE_SOCK_SYNC);
13    $cli->set(['open_eof_check' => true, "package_eof" => "\r\n\r\n"]);
14//    $cli->set(['open_eof_split' => true, 'package_eof' => "\r\n\r\n"]);
15    $cli->connect('127.0.0.1', $pm->getFreePort(), 0.5) or die("ERROR");
16
17    $cli->send("task-01") or die("ERROR");
18
19    $res = json_decode(trim($cli->recv()), true);
20    Assert::same($res['code'], 0);
21    Assert::same($res['message'], 'hello world');
22
23    echo "SUCCESS\n";
24
25    $res = json_decode(trim($cli->recv()), true);
26    Assert::same($res['code'], 0);
27    Assert::same($res['message'], 'hello world');
28    echo "SUCCESS\n";
29
30    swoole_process::kill($pid);
31};
32
33$pm->childFunc = function () use ($pm)
34{
35    ini_set('swoole.display_errors', 'Off');
36    $serv = new Server('127.0.0.1', $pm->getFreePort());
37    $serv->set(array(
38        "worker_num" => 1,
39        'task_worker_num' => 2,
40        'log_file' => '/dev/null',
41    ));
42    $serv->on("WorkerStart", function (Server $serv)  use ($pm)
43    {
44        $pm->wakeup();
45    });
46    $serv->on('receive', function (Server $serv, $fd, $rid, $data)
47    {
48        $serv->task(['type' => 'array', 'value' => $data], -1, function ($serv, $taskId, $data) use ($fd)  {
49            $serv->send($fd, json_encode($data)."\r\n\r\n");
50        });
51        $serv->task(['type' => 'array', 'value' => $data, 'worker_id' => 0], 0, function ($serv, $taskId, $data) use ($fd)  {
52            $serv->send($fd, json_encode($data)."\r\n\r\n");
53        });
54    });
55
56    $serv->on('task', function (Server $serv, $task_id, $worker_id, $data)
57    {
58        return array("code" => 0, 'message' => 'hello world', 'sid' => uniqid());
59    });
60
61    $serv->on('finish', function (Server $serv, $fd, $rid, $data)
62    {
63
64    });
65    $serv->start();
66};
67
68$pm->childFirst();
69$pm->run();
70?>
71--EXPECT--
72SUCCESS
73SUCCESS
74