X-Git-Url: https://git.m6w6.name/?p=m6w6%2Fext-pq;a=blobdiff_plain;f=tests%2Fgh-issue015_listeners.phpt;fp=tests%2Fgh-issue015_listeners.phpt;h=5506b212f5ffc160421541e4c6d33ee062ec869a;hp=0000000000000000000000000000000000000000;hb=b600ed678d51ae5b48b9d12e17e491d3d92d7a7a;hpb=b9f66d2b7378c40f85111ef57e9b0922789f77df diff --git a/tests/gh-issue015_listeners.phpt b/tests/gh-issue015_listeners.phpt new file mode 100644 index 0000000..5506b21 --- /dev/null +++ b/tests/gh-issue015_listeners.phpt @@ -0,0 +1,70 @@ +--TEST-- +restore listeners on reset +--SKIPIF-- + +--INI-- +date.timezone=UTC +--FILE-- +listen("notify", function($channel, $message) { + printf("%s: %s\n", $channel, $message); +}); +$c->on(pq\Connection::EVENT_RESET, function($conn) { + printf("Connection was reset\n"); +}); +$c->notify("notify", "Gotcha!"); +$c->resetAsync(); + +// wait until the stream becomes writable +$w = array($c->socket); +$r = $e = null; + +if (stream_select($r, $w, $e, null)) { + + // loop until the connection is established + while (true) { + + switch ($c->poll()) { + + case pq\Connection::POLLING_READING: + // we should wait for the stream to be read-ready + $r = array($c->socket); + stream_select($r, $w, $e, NULL); + break; + + case pq\Connection::POLLING_WRITING: + // we should wait for the stream to be write-ready + $w = array($c->socket); + $r = $e = null; + stream_select($r, $w, $e, null); + break; + + case pq\Connection::POLLING_FAILED: + printf("Connection failed: %s\n", $c->errorMessage); + break 2; + + case pq\Connection::POLLING_OK: + printf("Connection completed\n"); + break 2; + } + } +} +$c->notify("notify", "Do you miss me?"); +$c->exec(""); +?> +===DONE=== +--EXPECT-- +Test +notify: Gotcha! +Connection was reset +Connection completed +notify: Do you miss me? +===DONE=== \ No newline at end of file