Neo4j-Bolt
view release on metacpan or search on metacpan
lib/Neo4j/Bolt.xs view on Meta::CPAN
void new_cxn_obj(cxn_obj_t **cxn_obj) {
Newx(*cxn_obj, 1, cxn_obj_t);
(*cxn_obj)->connection = (neo4j_connection_t *)NULL;
(*cxn_obj)->connected = 0;
(*cxn_obj)->errnum = 0;
int major_version = 0;
int minor_version = 0;
(*cxn_obj)->strerror = savepvs("");
}
int set_log_level( const char* classname, const char* lvl )
{
if(strcmp(lvl,"NONE")==0)
{
LOG_LEVEL = NEO4J_LOG_TRACE+1;
}
if(strcmp(lvl,"ERROR")==0)
{
LOG_LEVEL = NEO4J_LOG_ERROR;
}
if(strcmp(lvl,"WARN")==0)
{
LOG_LEVEL = NEO4J_LOG_WARN;
}
if(strcmp(lvl,"INFO")==0)
{
LOG_LEVEL = NEO4J_LOG_INFO;
}
if(strcmp(lvl,"DEBUG")==0)
{
LOG_LEVEL = NEO4J_LOG_DEBUG;
}
if(strcmp(lvl,"TRACE")==0)
{
LOG_LEVEL = NEO4J_LOG_TRACE;
}
return (int) LOG_LEVEL;
}
SV* connect_ ( const char* classname, const char* neo4j_url,
int timeout, bool encrypt,
const char* tls_ca_dir, const char* tls_ca_file,
const char* tls_pk_file, const char* tls_pk_pass )
{
SV *cxn;
SV *cxn_ref;
cxn_obj_t *cxn_obj;
char climsg[BUFLEN];
neo4j_config_t *config;
new_cxn_obj(&cxn_obj);
neo4j_client_init();
config = neo4j_new_config();
config->connect_timeout = (time_t) timeout;
if (strlen(tls_ca_dir)) {
ignore_unused_result(neo4j_config_set_TLS_ca_dir(config, tls_ca_dir));
}
if (strlen(tls_ca_file)) {
ignore_unused_result(neo4j_config_set_TLS_ca_file(config, tls_ca_file));
}
if (strlen(tls_pk_file)) {
ignore_unused_result(neo4j_config_set_TLS_private_key(config, tls_pk_file));
}
if (strlen(tls_pk_pass)) {
ignore_unused_result(neo4j_config_set_TLS_private_key_password(config, tls_pk_pass));
}
if (LOG_LEVEL <= NEO4J_LOG_TRACE)
{
neo4j_config_set_logger_provider(config, neo4j_std_logger_provider(stderr, LOG_LEVEL, LOGGER_FLAGS));
}
cxn_obj->connection = neo4j_connect( neo4j_url, config,
encrypt ? 0 : NEO4J_INSECURE );
if (cxn_obj->connection == NULL) {
cxn_obj->errnum = errno;
cxn_obj->connected = false;
Safefree(cxn_obj->strerror);
cxn_obj->strerror = savepv( neo4j_strerror(errno, climsg, sizeof(climsg)) );
} else {
if ( encrypt && ! neo4j_connection_is_secure(cxn_obj->connection) ) {
warn("Bolt connection not secure!");
}
cxn_obj->major_version = cxn_obj->connection->version;
cxn_obj->minor_version = cxn_obj->connection->minor_version;
cxn_obj->connected = true;
}
cxn = newSViv((IV) cxn_obj);
cxn_ref = newRV_noinc(cxn);
sv_bless(cxn_ref, gv_stashpv(CXNCLASS, GV_ADD));
SvREADONLY_on(cxn);
return cxn_ref;
}
static const char * _check_neo4j_omni_version (int major, int minor, int patch)
{
int min_version = (major << 20) | (minor << 12) | (patch << 4);
return 0 < min_version && min_version <= NEO4J_VERSION_NUMBER
? NULL : NEO4J_VERSION;
}
MODULE = Neo4j::Bolt PACKAGE = Neo4j::Bolt
PROTOTYPES: DISABLE
SV *
connect_ (classname, neo4j_url, timeout, encrypt, tls_ca_dir, tls_ca_file, tls_pk_file, tls_pk_pass)
const char * classname
const char * neo4j_url
int timeout
bool encrypt
const char * tls_ca_dir
const char * tls_ca_file
const char * tls_pk_file
const char * tls_pk_pass
int
set_log_level (classname, lvl)
const char* classname
const char* lvl
const char *
_check_neo4j_omni_version (major, minor, patch)
int major
int minor
( run in 1.558 second using v1.01-cache-2.11-cpan-5735350b133 )