libmongo-client 0.1.4
|
00001 /* mongo-sync.h - libmongo-client synchronous wrapper API 00002 * Copyright 2011 Gergely Nagy <algernon@balabit.hu> 00003 * 00004 * Licensed under the Apache License, Version 2.0 (the "License"); 00005 * you may not use this file except in compliance with the License. 00006 * You may obtain a copy of the License at 00007 * 00008 * http://www.apache.org/licenses/LICENSE-2.0 00009 * 00010 * Unless required by applicable law or agreed to in writing, software 00011 * distributed under the License is distributed on an "AS IS" BASIS, 00012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 00013 * See the License for the specific language governing permissions and 00014 * limitations under the License. 00015 */ 00016 00021 #ifndef LIBMONGO_SYNC_H 00022 #define LIBMONGO_SYNC_H 1 00023 00024 #include <mongo-client.h> 00025 00026 #include <glib.h> 00027 00028 G_BEGIN_DECLS 00029 00034 #define MONGO_SYNC_DEFAULT_MAX_INSERT_SIZE 4 * 1000 * 1000 00035 00051 typedef struct _mongo_sync_connection mongo_sync_connection; 00052 00066 mongo_sync_connection *mongo_sync_connect (const gchar *host, 00067 gint port, 00068 gboolean slaveok); 00069 00081 gboolean mongo_sync_conn_seed_add (mongo_sync_connection *conn, 00082 const gchar *host, gint port); 00083 00098 mongo_sync_connection *mongo_sync_reconnect (mongo_sync_connection *conn, 00099 gboolean force_master); 00100 00107 void mongo_sync_disconnect (mongo_sync_connection *conn); 00108 00115 gboolean mongo_sync_conn_get_slaveok (const mongo_sync_connection *conn); 00116 00124 gboolean mongo_sync_conn_set_slaveok (mongo_sync_connection *conn, 00125 gboolean slaveok); 00126 00133 gboolean mongo_sync_conn_get_safe_mode (const mongo_sync_connection *conn); 00134 00149 gboolean mongo_sync_conn_set_safe_mode (mongo_sync_connection *conn, 00150 gboolean safe_mode); 00151 00158 gboolean mongo_sync_conn_get_auto_reconnect (const mongo_sync_connection *conn); 00159 00175 gboolean mongo_sync_conn_set_auto_reconnect (mongo_sync_connection *conn, 00176 gboolean auto_reconnect); 00177 00184 gint32 mongo_sync_conn_get_max_insert_size (mongo_sync_connection *conn); 00185 00198 gboolean mongo_sync_conn_set_max_insert_size (mongo_sync_connection *conn, 00199 gint32 max_size); 00200 00215 gboolean mongo_sync_cmd_update (mongo_sync_connection *conn, 00216 const gchar *ns, 00217 gint32 flags, const bson *selector, 00218 const bson *update); 00219 00231 gboolean mongo_sync_cmd_insert (mongo_sync_connection *conn, 00232 const gchar *ns, ...) G_GNUC_NULL_TERMINATED; 00233 00234 00247 gboolean mongo_sync_cmd_insert_n (mongo_sync_connection *conn, 00248 const gchar *ns, gint32 n, 00249 const bson **docs); 00250 00267 mongo_packet *mongo_sync_cmd_query (mongo_sync_connection *conn, 00268 const gchar *ns, gint32 flags, 00269 gint32 skip, gint32 ret, const bson *query, 00270 const bson *sel); 00271 00284 mongo_packet *mongo_sync_cmd_get_more (mongo_sync_connection *conn, 00285 const gchar *ns, 00286 gint32 ret, gint64 cursor_id); 00287 00298 gboolean mongo_sync_cmd_delete (mongo_sync_connection *conn, const gchar *ns, 00299 gint32 flags, const bson *sel); 00300 00311 gboolean mongo_sync_cmd_kill_cursors (mongo_sync_connection *conn, 00312 gint32 n, ...); 00313 00327 mongo_packet *mongo_sync_cmd_custom (mongo_sync_connection *conn, 00328 const gchar *db, 00329 const bson *command); 00330 00344 gdouble mongo_sync_cmd_count (mongo_sync_connection *conn, 00345 const gchar *db, const gchar *coll, 00346 const bson *query); 00347 00349 enum 00350 { 00352 MONGO_COLLECTION_DEFAULTS = 0, 00354 MONGO_COLLECTION_CAPPED = 1 << 0, 00356 MONGO_COLLECTION_CAPPED_MAX = 1 << 1, 00358 MONGO_COLLECTION_AUTO_INDEX_ID = 1 << 2, 00360 MONGO_COLLECTION_SIZED = 1 << 3, 00361 }; 00362 00384 gboolean mongo_sync_cmd_create (mongo_sync_connection *conn, 00385 const gchar *db, const gchar *coll, 00386 gint flags, ...); 00387 00398 bson *mongo_sync_cmd_exists (mongo_sync_connection *conn, 00399 const gchar *db, const gchar *coll); 00400 00411 gboolean mongo_sync_cmd_drop (mongo_sync_connection *conn, 00412 const gchar *db, const gchar *coll); 00413 00427 gboolean mongo_sync_cmd_get_last_error (mongo_sync_connection *conn, 00428 const gchar *db, gchar **error); 00429 00437 gboolean mongo_sync_cmd_reset_error (mongo_sync_connection *conn, 00438 const gchar *db); 00439 00446 gboolean mongo_sync_cmd_is_master (mongo_sync_connection *conn); 00447 00455 gboolean mongo_sync_cmd_ping (mongo_sync_connection *conn); 00456 00466 gboolean mongo_sync_cmd_user_add (mongo_sync_connection *conn, 00467 const gchar *db, 00468 const gchar *user, 00469 const gchar *pw); 00470 00479 gboolean mongo_sync_cmd_user_remove (mongo_sync_connection *conn, 00480 const gchar *db, 00481 const gchar *user); 00482 00492 gboolean mongo_sync_cmd_authenticate (mongo_sync_connection *conn, 00493 const gchar *db, 00494 const gchar *user, 00495 const gchar *pw); 00496 00498 enum 00499 { 00500 MONGO_INDEX_UNIQUE = 0x01, 00501 MONGO_INDEX_DROP_DUPS = 0x02, 00503 MONGO_INDEX_BACKGROUND = 0x04, 00505 MONGO_INDEX_SPARSE = 0x08, 00506 }; 00507 00517 gboolean mongo_sync_cmd_index_create (mongo_sync_connection *conn, 00518 const gchar *ns, 00519 const bson *key, 00520 gint options); 00521 00530 gboolean mongo_sync_cmd_index_drop (mongo_sync_connection *conn, 00531 const gchar *ns, 00532 const bson *key); 00533 00541 gboolean mongo_sync_cmd_index_drop_all (mongo_sync_connection *conn, 00542 const gchar *ns); 00543 00546 G_END_DECLS 00547 00548 #endif