/** * Establishes connection to existing cluster * @param array $descriptor - connection description, default null * @return bool * @throws \PhalconCassandra\Db\Exception\Cassandra */ public function connect($descriptor = null) { if ($this->_session) { throw new CException('Connection already established'); } if (is_array($descriptor)) { $descriptor = array_merge($this->_descriptor, $descriptor); } else { $descriptor = $this->_descriptor; } if (empty($descriptor['keyspace'])) { throw new CException('Keyspace must be set'); } $cluster = new Builder(); if (isset($descriptor['host'])) { $cluster->withContactPoints($descriptor['host']); } if (isset($descriptor['port'])) { $cluster->withPort($descriptor['port']); } if (isset($descriptor['consistency'])) { $cluster->withDefaultConsistency($descriptor['consistency']); $this->setDefaultConsistency($descriptor['consistency']); } if (isset($descriptor['pageSize'])) { $cluster->withDefaultPageSize($descriptor['pageSize']); } if (isset($descriptor['persistent'])) { $cluster->withPersistentSessions($descriptor['persistent']); } if (isset($descriptor['persistent'])) { $cluster->withPersistentSessions($descriptor['persistent']); } if (isset($descriptor['keepalive'])) { $cluster->withTCPKeepalive($descriptor['keepalive']); } if (isset($descriptor['connectTimeout'])) { $cluster->withConnectTimeout($descriptor['connectTimeout']); } if (isset($descriptor['requestTimeout'])) { $cluster->withRequestTimeout($descriptor['requestTimeout']); } if (isset($descriptor['ioThreads'])) { $cluster->withIOThreads($descriptor['ioThreads']); } if (isset($descriptor['username'], $descriptor['password'])) { $cluster->withCredentials($descriptor['username'], $descriptor['password']); } try { $this->_session = $cluster->build()->connect($descriptor['keyspace']); } catch (BaseException $e) { throw new CException($e->getMessage(), $e->getCode()); } return true; }