public function push($name, $message, $flags = Channel::MODE_DEFAULT, callable $success = null, callable $failure = null, callable $cancel = null, $timeout = 0.0)
{
if ($success !== null || $failure !== null || $cancel !== null) {
return $this->pushRequest($name, $message, $flags, $success, $failure, $cancel, $timeout);
}
return $this->pushAsync($name, $message, $flags);
}
public function createComposite($data, LoopInterface $loop) { $name = $data['name']; $buses = []; foreach ($data['buses'] as $busName => $bus) { $buses[$busName] = $this->createChannel($bus, $loop); } $router = new RouterComposite(['input' => $input = new Router(), 'output' => $output = new Router()]); $channel = new ChannelComposite($name, $buses, $router, $loop); $router = $channel->getInput(); $router->addDefault(new RuleHandler(function ($params) use($channel) { $channel->pull($params['alias'], $params['protocol']); })); $router = $channel->getOutput(); $router->addDefault(new RuleHandler(function ($params) use($channel) { $channel->push($params['alias'], $params['protocol'], $params['flags'], $params['success'], $params['failure'], $params['cancel'], $params['timeout']); })); return $channel; }