Exemple #1
0
int mongo_util_pool_refresh(mongo_server *server, time_t timeout TSRMLS_DC) {
  if (server->connected) {
    return SUCCESS;
  }

  // make sure we're disconnected before reconnecting
  mongo_util_pool_close(server, CHECK_CONNS TSRMLS_CC);

  // pass the reduced timeout variable we had set
  stack_monitor *monitor;
  if ((monitor = mongo_util_pool__get_monitor(server TSRMLS_CC)) == 0) {
      return FAILURE;
  }
  timeout = (monitor->timeout > 0) ? monitor->timeout : MONGO_RS_TIMEOUT;

  if (mongo_util_pool_init(server, timeout TSRMLS_CC) == FAILURE) {
    return FAILURE;
  }

  if (mongo_util_pool_get(server, 0 TSRMLS_CC) == FAILURE) {
    return FAILURE;
  }

  // if we get here, we successfully reconnected
  return SUCCESS;
}
Exemple #2
0
int mongo_util_pool_refresh(mongo_server *server, time_t timeout TSRMLS_DC) {
  if (server->connected) {
    return SUCCESS;
  }

  // make sure we're disconnected before reconnecting
  mongo_util_pool_close(server, CHECK_CONNS TSRMLS_CC);

  if (mongo_util_pool_init(server, timeout TSRMLS_CC) == FAILURE) {
    return FAILURE;
  }

  if (mongo_util_pool_get(server, 0 TSRMLS_CC) == FAILURE) {
    return FAILURE;
  }

  // if we get here, we successfully reconnected
  return SUCCESS;
}
Exemple #3
0
mongo_server* mongo_util_server_copy(const mongo_server *source, mongo_server *dest, int persist TSRMLS_DC) {
  // we assume if def was persistent it will still be persistent and visa versa

  if (dest) {
    php_mongo_server_free(dest, persist TSRMLS_CC);
  }

  dest = (mongo_server*)pemalloc(sizeof(mongo_server), persist);
  memset(dest, 0, sizeof(mongo_server));

  dest->host = pestrdup(source->host, persist);
  dest->port = source->port;
  dest->label = pestrdup(source->label, persist);

  if (source->username && source->password && source->db) {
    dest->username = pestrdup(source->username, persist);
    dest->password = pestrdup(source->password, persist);
    dest->db = pestrdup(source->db, persist);
  }

  mongo_util_pool_get(dest, 0 TSRMLS_CC);

  return dest;
}