Kraken\_Module\Channel\ChannelTest::createChannel PHP Method

createChannel() public method

public createChannel ( mixed $data, Kraken\Loop\LoopInterface $loop ) : Kraken\Channel\ChannelInterface
$data mixed
$loop Kraken\Loop\LoopInterface
return Kraken\Channel\ChannelInterface
    public function createChannel($data, LoopInterface $loop)
    {
        $name = $data['config']['id'];
        $model = (new ReflectionClass($data['class']))->newInstance($loop, $data['config']);
        $router = new RouterComposite(['input' => $input = new Router(), 'output' => $output = new Router()]);
        $encoder = new Encoder(new JsonParser());
        $channel = new Channel($name, $model, $router, $encoder, $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;
    }