lithium\net\socket\Stream::open()
Overrides
lithium\net\Socket::open()
Opens a socket and initializes the internal resource handle.
Parameters
-
array
$options
update the config settings
Returns
mixedReturns false
if the socket configuration does not contain the
'scheme'
or 'host'
settings, or if configuration fails, otherwise returns a
resource stream. Throws exception if there is a network error.
Source
public function open(array $options = []) {
parent::open($options);
$config = $this->_config;
if (!$config['scheme'] || !$config['host']) {
return false;
}
$scheme = ($config['scheme'] !== 'udp') ? 'tcp' : 'udp';
$port = $config['port'] ?: 80;
$host = "{$scheme}://{$config['host']}:{$port}";
$flags = STREAM_CLIENT_CONNECT;
if ($config['persistent']) {
$flags = STREAM_CLIENT_CONNECT | STREAM_CLIENT_PERSISTENT;
}
$errorCode = $errorMessage = null;
$this->_resource = stream_socket_client(
$host, $errorCode, $errorMessage, $config['timeout'], $flags
);
if ($errorCode || $errorMessage) {
throw new NetworkException($errorMessage);
}
$this->timeout($config['timeout']);
if (!empty($config['encoding'])) {
$this->encoding($config['encoding']);
}
return $this->_resource;
}