Skip to content

Commit aa6611b

Browse files
committed
Add Client::getHost() and Client::wait_for_response_data()
1 parent 6d9a552 commit aa6611b

File tree

1 file changed

+84
-49
lines changed

1 file changed

+84
-49
lines changed

src/Adoy/FastCGI/Client.php

Lines changed: 84 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ class ForbiddenException extends \Exception {}
3131
* Handles communication with a FastCGI application
3232
*
3333
* @author Pierrick Charron <pierrick@adoy.net>
34-
* @version 1.0.0
34+
* @version 1.0
3535
*/
3636
class Client
3737
{
@@ -74,25 +74,25 @@ class Client
7474

7575
/**
7676
* Socket
77-
* @var Resource
77+
* @var resource
7878
*/
7979
private $_sock = null;
8080

8181
/**
8282
* Host
83-
* @var String
83+
* @var string
8484
*/
8585
private $_host = null;
8686

8787
/**
8888
* Port
89-
* @var Integer
89+
* @var int
9090
*/
9191
private $_port = null;
9292

9393
/**
9494
* Keep Alive
95-
* @var Boolean
95+
* @var bool
9696
*/
9797
private $_keepAlive = false;
9898

@@ -112,43 +112,53 @@ class Client
112112

113113
/**
114114
* Use persistent sockets to connect to backend
115-
* @var Boolean
115+
* @var bool
116116
*/
117117
private $_persistentSocket = false;
118118

119119
/**
120120
* Connect timeout in milliseconds
121-
* @var Integer
121+
* @var int
122122
*/
123123
private $_connectTimeout = 5000;
124124

125125
/**
126126
* Read/Write timeout in milliseconds
127-
* @var Integer
127+
* @var int
128128
*/
129129
private $_readWriteTimeout = 5000;
130130

131131
/**
132132
* Constructor
133133
*
134-
* @param String $host Host of the FastCGI application
135-
* @param Integer $port Port of the FastCGI application
134+
* @param string $host Host of the FastCGI application
135+
* @param int $port Port of the FastCGI application
136136
*/
137137
public function __construct($host, $port)
138138
{
139139
$this->_host = $host;
140140
$this->_port = $port;
141141
}
142142

143+
/**
144+
* Get host.
145+
*
146+
* @return string
147+
*/
148+
public function getHost()
149+
{
150+
return $this->_host;
151+
}
152+
143153
/**
144154
* Define whether or not the FastCGI application should keep the connection
145155
* alive at the end of a request
146156
*
147-
* @param Boolean $b true if the connection should stay alive, false otherwise
157+
* @param bool $b true if the connection should stay alive, false otherwise
148158
*/
149159
public function setKeepAlive($b)
150160
{
151-
$this->_keepAlive = (boolean)$b;
161+
$this->_keepAlive = (bool)$b;
152162
if (!$this->_keepAlive && $this->_sock) {
153163
fclose($this->_sock);
154164
}
@@ -157,7 +167,7 @@ public function setKeepAlive($b)
157167
/**
158168
* Get the keep alive status
159169
*
160-
* @return Boolean true if the connection should stay alive, false otherwise
170+
* @return bool true if the connection should stay alive, false otherwise
161171
*/
162172
public function getKeepAlive()
163173
{
@@ -168,12 +178,12 @@ public function getKeepAlive()
168178
* Define whether or not PHP should attempt to re-use sockets opened by previous
169179
* request for efficiency
170180
*
171-
* @param Boolean $b true if persistent socket should be used, false otherwise
181+
* @param bool $b true if persistent socket should be used, false otherwise
172182
*/
173183
public function setPersistentSocket($b)
174184
{
175185
$was_persistent = ($this->_sock && $this->_persistentSocket);
176-
$this->_persistentSocket = (boolean)$b;
186+
$this->_persistentSocket = (bool)$b;
177187
if (!$this->_persistentSocket && $was_persistent) {
178188
fclose($this->_sock);
179189
}
@@ -182,7 +192,7 @@ public function setPersistentSocket($b)
182192
/**
183193
* Get the pesistent socket status
184194
*
185-
* @return Boolean true if the socket should be persistent, false otherwise
195+
* @return bool true if the socket should be persistent, false otherwise
186196
*/
187197
public function getPersistentSocket()
188198
{
@@ -193,7 +203,7 @@ public function getPersistentSocket()
193203
/**
194204
* Set the connect timeout
195205
*
196-
* @param Integer number of milliseconds before connect will timeout
206+
* @param int number of milliseconds before connect will timeout
197207
*/
198208
public function setConnectTimeout($timeoutMs)
199209
{
@@ -203,7 +213,7 @@ public function setConnectTimeout($timeoutMs)
203213
/**
204214
* Get the connect timeout
205215
*
206-
* @return Integer number of milliseconds before connect will timeout
216+
* @return int number of milliseconds before connect will timeout
207217
*/
208218
public function getConnectTimeout()
209219
{
@@ -213,7 +223,7 @@ public function getConnectTimeout()
213223
/**
214224
* Set the read/write timeout
215225
*
216-
* @param Integer number of milliseconds before read or write call will timeout
226+
* @param int number of milliseconds before read or write call will timeout
217227
*/
218228
public function setReadWriteTimeout($timeoutMs)
219229
{
@@ -224,7 +234,7 @@ public function setReadWriteTimeout($timeoutMs)
224234
/**
225235
* Get the read timeout
226236
*
227-
* @return Integer number of milliseconds before read will timeout
237+
* @return int number of milliseconds before read will timeout
228238
*/
229239
public function getReadWriteTimeout()
230240
{
@@ -234,8 +244,8 @@ public function getReadWriteTimeout()
234244
/**
235245
* Helper to avoid duplicating milliseconds to secs/usecs in a few places
236246
*
237-
* @param Integer millisecond timeout
238-
* @return Boolean
247+
* @param int millisecond timeout
248+
* @return bool
239249
*/
240250
private function set_ms_timeout($timeoutMs) {
241251
if (!$this->_sock) {
@@ -270,9 +280,10 @@ private function connect()
270280
/**
271281
* Build a FastCGI packet
272282
*
273-
* @param Integer $type Type of the packet
274-
* @param String $content Content of the packet
275-
* @param Integer $requestId RequestId
283+
* @param int $type Type of the packet
284+
* @param string $content Content of the packet
285+
* @param int $requestId RequestId
286+
* @return string
276287
*/
277288
private function buildPacket($type, $content, $requestId = 1)
278289
{
@@ -291,9 +302,9 @@ private function buildPacket($type, $content, $requestId = 1)
291302
/**
292303
* Build an FastCGI Name value pair
293304
*
294-
* @param String $name Name
295-
* @param String $value Value
296-
* @return String FastCGI Name value pair
305+
* @param string $name Name
306+
* @param string $value Value
307+
* @return string FastCGI Name value pair
297308
*/
298309
private function buildNvpair($name, $value)
299310
{
@@ -320,7 +331,7 @@ private function buildNvpair($name, $value)
320331
/**
321332
* Read a set of FastCGI Name value pairs
322333
*
323-
* @param String $data Data containing the set of FastCGI NVPair
334+
* @param string $data Data containing the set of FastCGI NVPair
324335
* @return array of NVPair
325336
*/
326337
private function readNvpair($data, $length = null)
@@ -359,7 +370,7 @@ private function readNvpair($data, $length = null)
359370
/**
360371
* Decode a FastCGI Packet
361372
*
362-
* @param String $data String containing all the packet
373+
* @param string $data string containing all the packet
363374
* @return array
364375
*/
365376
private function decodePacketHeader($data)
@@ -401,10 +412,11 @@ private function readPacket()
401412
}
402413

403414
/**
404-
* Get Informations on the FastCGI application
415+
* Get Information on the FastCGI application
405416
*
406417
* @param array $requestedInfo information to retrieve
407418
* @return array
419+
* @throws \Exception
408420
*/
409421
public function getValues(array $requestedInfo)
410422
{
@@ -428,8 +440,11 @@ public function getValues(array $requestedInfo)
428440
* Execute a request to the FastCGI application
429441
*
430442
* @param array $params Array of parameters
431-
* @param String $stdin Content
432-
* @return String
443+
* @param string $stdin Content
444+
* @return string
445+
* @throws ForbiddenException
446+
* @throws TimedOutException
447+
* @throws \Exception
433448
*/
434449
public function request(array $params, $stdin)
435450
{
@@ -439,18 +454,20 @@ public function request(array $params, $stdin)
439454

440455
/**
441456
* Execute a request to the FastCGI application asyncronously
442-
*
457+
*
443458
* This sends request to application and returns the assigned ID for that request.
444459
*
445460
* You should keep this id for later use with wait_for_response(). Ids are chosen randomly
446-
* rather than seqentially to guard against false-positives when using persistent sockets.
447-
* In that case it is possible that a delayed response to a request made by a previous script
448-
* invocation comes back on this socket and is mistaken for response to request made with same ID
449-
* during this request.
461+
* rather than sequentially to guard against false-positives when using persistent sockets.
462+
* In that case it is possible that a delayed response to a request made by a previous script
463+
* invocation comes back on this socket and is mistaken for response to request made with same
464+
* ID during this request.
450465
*
451466
* @param array $params Array of parameters
452-
* @param String $stdin Content
453-
* @return Integer
467+
* @param string $stdin Content
468+
* @return int
469+
* @throws TimedOutException
470+
* @throws \Exception
454471
*/
455472
public function async_request(array $params, $stdin)
456473
{
@@ -508,14 +525,17 @@ public function async_request(array $params, $stdin)
508525
}
509526

510527
/**
511-
* Blocking call that waits for response to specific request
512-
*
513-
* @param Integer $requestId
514-
* @param Integer $timeoutMs [optional] the number of milliseconds to wait. Defaults to the ReadWriteTimeout value set.
515-
* @return string response body
528+
* Blocking call that waits for response data of the specific request
529+
*
530+
* @param int $requestId
531+
* @param int $timeoutMs [optional] the number of milliseconds to wait. Defaults to the ReadWriteTimeout value set.
532+
* @return array response data
533+
* @throws ForbiddenException
534+
* @throws TimedOutException
535+
* @throws \Exception
516536
*/
517-
public function wait_for_response($requestId, $timeoutMs = 0) {
518-
537+
public function wait_for_response_data($requestId, $timeoutMs = 0)
538+
{
519539
if (!isset($this->_requests[$requestId])) {
520540
throw new \Exception('Invalid request id given');
521541
}
@@ -524,7 +544,7 @@ public function wait_for_response($requestId, $timeoutMs = 0) {
524544
if ($this->_requests[$requestId]['state'] == self::REQ_STATE_OK
525545
|| $this->_requests[$requestId]['state'] == self::REQ_STATE_ERR
526546
) {
527-
return $this->_requests[$requestId]['response'];
547+
return $this->_requests[$requestId];
528548
}
529549

530550
if ($timeoutMs > 0) {
@@ -591,7 +611,22 @@ public function wait_for_response($requestId, $timeoutMs = 0) {
591611
throw new \Exception('Role value not known [UNKNOWN_ROLE]');
592612
break;
593613
case self::REQUEST_COMPLETE:
594-
return $this->_requests[$requestId]['response'];
614+
return $this->_requests[$requestId];
595615
}
596616
}
617+
618+
/**
619+
* Blocking call that waits for response to specific request
620+
*
621+
* @param int $requestId
622+
* @param int $timeoutMs [optional] the number of milliseconds to wait. Defaults to the ReadWriteTimeout value set.
623+
* @return string The response content.
624+
* @throws ForbiddenException
625+
* @throws TimedOutException
626+
* @throws \Exception
627+
*/
628+
public function wait_for_response($requestId, $timeoutMs = 0)
629+
{
630+
return $this->wait_for_response_data($requestId, $timeoutMs)['response'];
631+
}
597632
}

0 commit comments

Comments
 (0)