@@ 59-86 (lines=28) @@ | ||
56 | } |
|
57 | } |
|
58 | ||
59 | public function getChallenge() |
|
60 | { |
|
61 | if (!isset($this->challenge)) { |
|
62 | try { |
|
63 | $sessionId = $this->generateSessionId(); |
|
64 | $this->socket->send($this->packetFactory->handshake($sessionId)); |
|
65 | ||
66 | $resp = $this->socket->recv(); |
|
67 | $data = $resp->extract(array( |
|
68 | 'type' => 'byte', |
|
69 | 'sessionId' => 'long', |
|
70 | 'challenge' => 'string' |
|
71 | )); |
|
72 | ||
73 | if ($data['sessionId'] == $sessionId) { |
|
74 | $this->challenge = $data['challenge']; |
|
75 | } |
|
76 | else { |
|
77 | throw new Exception\SessionIdNotMatchException; |
|
78 | } |
|
79 | } |
|
80 | catch (RecvTimeoutException $e) { |
|
81 | throw new Exception\ServerTimeoutException; |
|
82 | } |
|
83 | } |
|
84 | ||
85 | return $this->challenge; |
|
86 | } |
|
87 | ||
88 | public function getServerInfos() |
|
89 | { |
@@ 207-230 (lines=24) @@ | ||
204 | * |
|
205 | * @return long |
|
206 | */ |
|
207 | protected function getChallenge() |
|
208 | { |
|
209 | if (!isset($this->challenge)) { |
|
210 | try { |
|
211 | $packet = $this->packetFactory->A2S_SERVERQUERY_GETCHALLENGE(); |
|
212 | $this->socket->send($packet); |
|
213 | $resp = $this->socket->recv(); |
|
214 | ||
215 | $data = $resp->extract(array( |
|
216 | 'header' => 'byte', |
|
217 | 'challenge' => 'long', |
|
218 | )); |
|
219 | ||
220 | if ($data['header'] == 65) { |
|
221 | $this->challenge = $data['challenge']; |
|
222 | } |
|
223 | } |
|
224 | catch (RecvTimeoutException $e) { |
|
225 | throw new ServerTimeoutException(); |
|
226 | } |
|
227 | } |
|
228 | ||
229 | return $this->challenge; |
|
230 | } |
|
231 | ||
232 | /** |
|
233 | * Get players list |