public function getStream($host, $lockKey = null)
{
if (!$lockKey) {
$lockKey = uniqid($host);
}
list($hostname, $port) = explode(':', $host);
// find unlock stream
if (isset(self::$stream[$host])) {
foreach (self::$stream[$host] as $key => $info) {
if ($info['locked']) {
continue;
} else {
self::$stream[$host][$key]['locked'] = true;
$info['stream']->connect();
return array('key' => $key, 'stream' => $info['stream']);
}
}
}
// no idle stream
$stream = new \Kafka\Socket($hostname, $port, $this->getStreamOption('RecvTimeoutSec'), $this->getStreamOption('RecvTimeoutUsec'), $this->getStreamOption('SendTimeoutSec'), $this->getStreamOption('SendTimeoutUsec'));
$stream->connect();
self::$stream[$host][$lockKey] = array('locked' => true, 'stream' => $stream);
return array('key' => $lockKey, 'stream' => $stream);
}