/**
* @param ChannelCompositeInterface $composite
* @param ProtocolInterface $protocol
*/
private function executeProtocol(ChannelCompositeInterface $composite, ProtocolInterface $protocol)
{
$params = json_decode($protocol->getMessage(), true);
$command = array_shift($params);
$params['origin'] = $protocol->getOrigin();
$promise = $this->executeCommand($command, $params);
if ($protocol->getType() === Channel::TYPE_REQ) {
$promise->then(function ($response) use($composite, $protocol, $command) {
return (new Response($composite, $protocol, $response))->call();
}, function ($reason) use($composite, $protocol) {
return (new Response($composite, $protocol, $reason))->call();
}, function ($reason) use($composite, $protocol) {
return (new Response($composite, $protocol, $reason))->call();
});
}
}