protected function init($options)
{
if (empty($options['server'])) {
$options['server'] = [];
}
if (empty($options['server']['host'])) {
$options['server']['host'] = self::DEFAULT_HOST;
}
if (empty($options['server']['port'])) {
$options['server']['port'] = self::DEFAULT_PORT;
}
if (empty($options['server']['dbname'])) {
$options['server']['dbname'] = self::DEFAULT_DBNAME;
}
if (empty($options['server']['dbtable'])) {
$options['server']['dbtable'] = self::DEFAULT_DBTABLE;
}
//update options
$this->options = $options;
if (!extension_loaded('handlersocket')) {
throw new Exception('The handlersocket extension must be loaded for using session!');
}
// load handlersocket server
$this->hs = new \HandlerSocket($options['server']['host'], $options['server']['port']);
// open handlersocket index
$result = $this->hs->openIndex($this->hsIndex, $options['server']['dbname'], $options['server']['dbtable'], \HandlerSocket::PRIMARY, self::DB_FIELDS);
if (!$result) {
throw new Exception('The HandlerSocket database specified in the options does not exist.');
}
}