mongo_connection *mongo_connection_create(mongo_con_manager *manager, char *hash, mongo_server_def *server_def, mongo_server_options *options, char **error_message) { mongo_connection *tmp; /* Init struct */ tmp = malloc(sizeof(mongo_connection)); memset(tmp, 0, sizeof(mongo_connection)); tmp->last_reqid = rand(); tmp->connection_type = MONGO_NODE_STANDALONE; /* Store hash */ tmp->hash = strdup(hash); /* Connect */ mongo_manager_log(manager, MLOG_CON, MLOG_INFO, "connection_create: creating new connection for %s:%d", server_def->host, server_def->port); tmp->socket = manager->connect(manager, server_def, options, error_message); if (!tmp->socket) { mongo_manager_log(manager, MLOG_CON, MLOG_WARN, "connection_create: error while creating connection for %s:%d: %s", server_def->host, server_def->port, *error_message); mongo_manager_blacklist_register(manager, tmp); free(tmp->hash); free(tmp); return NULL; } /* We call get_server_flags to the maxBsonObjectSize data */ if (!mongo_connection_get_server_flags(manager, tmp, options, error_message)) { mongo_manager_log(manager, MLOG_CON, MLOG_WARN, "server_flags: error while getting the server configuration %s:%d: %s", server_def->host, server_def->port, *error_message); free(tmp); return NULL; } return tmp; }
mongo_connection *mongo_connection_create(mongo_con_manager *manager, char *hash, mongo_server_def *server_def, mongo_server_options *options, char **error_message) { mongo_connection *tmp; /* Init struct */ tmp = malloc(sizeof(mongo_connection)); memset(tmp, 0, sizeof(mongo_connection)); tmp->last_reqid = rand(); tmp->connection_type = MONGO_NODE_STANDALONE; /* Default server options */ /* MongoDB pre-1.8; Spec says default to 4 MB */ tmp->max_bson_size = 4194304; /* MongoDB pre-2.4; Spec says default to 2 * the maxBsonSize */ tmp->max_message_size = 2 * tmp->max_bson_size; /* Store hash */ tmp->hash = strdup(hash); /* Connect */ mongo_manager_log(manager, MLOG_CON, MLOG_INFO, "connection_create: creating new connection for %s:%d", server_def->host, server_def->port); tmp->socket = manager->connect(manager, server_def, options, error_message); if (!tmp->socket) { mongo_manager_log(manager, MLOG_CON, MLOG_WARN, "connection_create: error while creating connection for %s:%d: %s", server_def->host, server_def->port, *error_message); mongo_manager_blacklist_register(manager, tmp); free(tmp->hash); free(tmp); return NULL; } return tmp; }
mongo_connection *mongo_connection_create(mongo_con_manager *manager, char *hash, mongo_server_def *server_def, mongo_server_options *options, char **error_message) { mongo_connection *tmp; /* Init struct */ tmp = malloc(sizeof(mongo_connection)); memset(tmp, 0, sizeof(mongo_connection)); tmp->last_reqid = rand(); tmp->connection_type = MONGO_NODE_STANDALONE; tmp->connected = 0; /* Default server options */ /* If we don't know the version, assume 1.8.0 */ tmp->version.major = 1; tmp->version.minor = 8; tmp->version.mini = 0; tmp->version.build = 0; tmp->max_bson_size = MONGO_CONNECTION_DEFAULT_MAX_BSON_SIZE; tmp->max_message_size = MONGO_CONNECTION_DEFAULT_MAX_MESSAGE_SIZE; tmp->max_write_batch_size = MONGO_CONNECTION_DEFAULT_MAX_WRITE_BATCH_SIZE; tmp->min_wire_version = MONGO_CONNECTION_DEFAULT_MIN_WIRE_VERSION; tmp->max_wire_version = MONGO_CONNECTION_DEFAULT_MAX_WIRE_VERSION; /* Store hash */ tmp->hash = strdup(hash); /* Connect */ mongo_manager_log(manager, MLOG_CON, MLOG_INFO, "connection_create: creating new connection for %s:%d", server_def->host, server_def->port); tmp->socket = manager->connect(manager, server_def, options, error_message); if (!tmp->socket) { mongo_manager_log(manager, MLOG_CON, MLOG_WARN, "connection_create: error while creating connection for %s:%d: %s", server_def->host, server_def->port, *error_message); mongo_manager_blacklist_register(manager, tmp); free(tmp->hash); free(tmp); return NULL; } return tmp; }