1 | <?php |
||
28 | abstract class Router extends \PEIP\Pipe\Pipe |
||
29 | { |
||
30 | const |
||
31 | EVENT_PRE_RESOLVE = 'pre_resolve', |
||
32 | EVENT_POST_RESOLVE = 'post_resolve', |
||
33 | EVENT_ERR_RESOLVE = 'err_resolve', |
||
34 | HEADER_CHANNEL = 'CHANNEL', |
||
35 | HEADER_CHANNEL_NAME = 'CHANNEL_NAME', |
||
36 | HEADER_CHANNEL_RESOLVER = 'HEADER_CHANNEL_RESOLVER'; |
||
37 | |||
38 | protected $channelResolver; |
||
39 | |||
40 | /** |
||
41 | * constructor. |
||
42 | * |
||
43 | * @param \PEIP\INF\Channel\Channel_Resolver $channelResolver channel resolver for the router |
||
44 | * @param \PEIP\INF\Channel\Channel $inputChannel the input channel for the router |
||
45 | * |
||
46 | * @return |
||
47 | */ |
||
48 | public function __construct(\PEIP\INF\Channel\Channel_Resolver $channelResolver, \PEIP\INF\Channel\Channel $inputChannel) |
||
53 | |||
54 | /** |
||
55 | * Sets the channel resolver for the router. |
||
56 | * |
||
57 | * @param \PEIP\INF\Channel\Channel_Resolver $channelResolver the channel resolver for the router |
||
58 | * |
||
59 | * @return |
||
60 | */ |
||
61 | public function setChannelResolver(\PEIP\INF\Channel\Channel_Resolver $channelResolver) |
||
67 | |||
68 | /** |
||
69 | * Sends given message on all accepted reply-channels. |
||
70 | * |
||
71 | * @param \PEIP\INF\Message\Message $message the message to reply with |
||
72 | * |
||
73 | * @return |
||
74 | */ |
||
75 | protected function doReply(\PEIP\INF\Message\Message $message) |
||
83 | |||
84 | /** |
||
85 | * Resolves a channel from name or channel-instance. |
||
86 | * Returns first argument directly if it is intance of \PEIP\INF\Channel\Channel. |
||
87 | * Else resolves channel through registered channel-resolver. |
||
88 | * |
||
89 | * @param mixed $channel channel-name or instance of \PEIP\INF\Channel\Channel |
||
90 | * |
||
91 | * @return |
||
92 | */ |
||
93 | protected function resolveChannel($channel) |
||
108 | |||
109 | /** |
||
110 | * Selects channel(s) to route given message to. |
||
111 | * |
||
112 | * @abstract |
||
113 | * |
||
114 | * @param \PEIP\INF\Message\Message $message message to route |
||
115 | */ |
||
116 | abstract protected function selectChannels(\PEIP\INF\Message\Message $message); |
||
117 | } |
||
118 |