public function testConnect() { $listener = new EventListener(['socket_type' => \ZMQ::SOCKET_PUSH, 'socket_options' => [\ZMQ::SOCKOPT_SNDHWM => 2000], 'bind' => 'ipc://test-connect-bind.ipc', 'connect' => ['ipc://test-connect-1.ipc', 'ipc://test-connect-2.ipc'], 'confirmed' => true]); $socket = $listener->socket(); $this->assertSame(\ZMQ::SOCKET_PUSH, $socket->getSocketType()); $this->assertSame(2000, $socket->getSockOpt(\ZMQ::SOCKOPT_SNDHWM)); $this->assertSame(['connect' => ['ipc://test-connect-1.ipc', 'ipc://test-connect-2.ipc'], 'bind' => ['ipc://test-connect-bind.ipc']], $socket->getEndpoints()); $this->assertTrue($socket->confirmed()); }
public function testRun() { $dsn = 'ipc://test-run.ipc'; if (!($pid = pcntl_fork())) { $listener = new EventListener(['bind' => $dsn]); Event::listen('request.event', function () use($listener) { $listener->socket()->push(Event::firing(), func_get_args()); Event::fire('zeroevents.service.stop'); }); (new EventService())->listen($listener)->run(); exit; } $listener = new EventListener(['connect' => $dsn]); Event::listen('request.event', $listener); Event::fire('request.event', ['source', 'parent']); $this->assertSame(['event' => 'request.event', 'payload' => ['source', 'parent'], 'address' => null], $listener->socket()->pull()); pcntl_wait($status); posix_kill($pid, SIGKILL); }
/** * @param EventListener $listener * @return self */ public function listen(EventListener $listener) { $this->listen[] = $listener->socket(); return $this; }