private function parseEndpoint($wantPeer = false)
{
$wantIndex = (int) $wantPeer;
if (isset($this->cachedEndpoint[$wantIndex])) {
return $this->cachedEndpoint[$wantIndex];
}
if (get_resource_type($this->resource) === 'Unknown') {
return '';
}
$name = stream_socket_get_name($this->resource, $wantPeer);
$type = $this->getStreamType();
switch ($type) {
case Socket::TYPE_UNIX:
$endpoint = 'unix://' . $name;
break;
case Socket::TYPE_TCP:
if (substr_count($name, ':') > 1) {
$parts = explode(':', $name);
$count = count($parts);
$port = $parts[$count - 1];
unset($parts[$count - 1]);
$endpoint = 'tcp://[' . implode(':', $parts) . ']:' . $port;
} else {
$endpoint = 'tcp://' . $name;
}
break;
default:
$endpoint = '';
}
$this->cachedEndpoint[$wantIndex] = $endpoint;
return $endpoint;
}