@@ 148-163 (lines=16) @@ | ||
145 | * |
|
146 | * @return PromiseInterface |
|
147 | */ |
|
148 | public function alive(AliveOptions $options) |
|
149 | { |
|
150 | $request = $this->getRequestFactory()->createAliveRequest($options); |
|
151 | $data = trim(RequestSerializer::toString($request)) . "\r\n\r\n"; |
|
152 | ||
153 | $socket = $this->getSocketFactory()->createUdp4(); |
|
154 | $socket->setOption(SOL_SOCKET, SO_BROADCAST, 1); |
|
155 | $socket->setOption(IPPROTO_IP, IP_MULTICAST_IF, 0); |
|
156 | $socket->setOption(IPPROTO_IP, IP_MULTICAST_LOOP, 0); |
|
157 | $socket->setOption(IPPROTO_IP, IP_MULTICAST_TTL, 4); |
|
158 | $socket->setOption(IPPROTO_IP, MCAST_JOIN_GROUP, ['group' => self::MULTICAST_ADDRESS, 'interface' => 0]); |
|
159 | $socket->bind('0.0.0.0'); |
|
160 | $socket->sendTo($data, 0, sprintf('%s:%s', self::MULTICAST_ADDRESS, self::MULTICAST_PORT)); |
|
161 | ||
162 | return $this; |
|
163 | } |
|
164 | ||
165 | /** |
|
166 | * Send byebye request |
|
@@ 172-187 (lines=16) @@ | ||
169 | * |
|
170 | * @return PromiseInterface |
|
171 | */ |
|
172 | public function byebye(ByebyeOptions $options) |
|
173 | { |
|
174 | $request = $this->getRequestFactory()->createByebyeRequest($options); |
|
175 | $data = trim(RequestSerializer::toString($request)) . "\r\n\r\n"; |
|
176 | ||
177 | $socket = $this->getSocketFactory()->createUdp4(); |
|
178 | $socket->setOption(SOL_SOCKET, SO_BROADCAST, 1); |
|
179 | $socket->setOption(IPPROTO_IP, IP_MULTICAST_IF, 0); |
|
180 | $socket->setOption(IPPROTO_IP, IP_MULTICAST_LOOP, 0); |
|
181 | $socket->setOption(IPPROTO_IP, IP_MULTICAST_TTL, 4); |
|
182 | $socket->setOption(IPPROTO_IP, MCAST_JOIN_GROUP, ['group' => self::MULTICAST_ADDRESS, 'interface' => 0]); |
|
183 | $socket->bind('0.0.0.0'); |
|
184 | $socket->sendTo($data, 0, sprintf('%s:%s', self::MULTICAST_ADDRESS, self::MULTICAST_PORT)); |
|
185 | ||
186 | return $this; |
|
187 | } |
|
188 | ||
189 | /** |
|
190 | * Send discover request |
|
@@ 253-268 (lines=16) @@ | ||
250 | * |
|
251 | * @return PromiseInterface |
|
252 | */ |
|
253 | public function update(UpdateOptions $options) |
|
254 | { |
|
255 | $request = $this->getRequestFactory()->createUpdateRequest($options); |
|
256 | $data = trim(RequestSerializer::toString($request)) . "\r\n\r\n"; |
|
257 | ||
258 | $socket = $this->getSocketFactory()->createUdp4(); |
|
259 | $socket->setOption(SOL_SOCKET, SO_BROADCAST, 1); |
|
260 | $socket->setOption(IPPROTO_IP, IP_MULTICAST_IF, 0); |
|
261 | $socket->setOption(IPPROTO_IP, IP_MULTICAST_LOOP, 0); |
|
262 | $socket->setOption(IPPROTO_IP, IP_MULTICAST_TTL, 4); |
|
263 | $socket->setOption(IPPROTO_IP, MCAST_JOIN_GROUP, ['group' => self::MULTICAST_ADDRESS, 'interface' => 0]); |
|
264 | $socket->bind('0.0.0.0'); |
|
265 | $socket->sendTo($data, 0, sprintf('%s:%s', self::MULTICAST_ADDRESS, self::MULTICAST_PORT)); |
|
266 | ||
267 | return $this; |
|
268 | } |
|
269 | ||
270 | /** |
|
271 | * Create discover event |