int main (int argc, char *argv[]) { mongoc_client_t *client; mongoc_apm_callbacks_t *callbacks; stats_t stats = { 0 }; mongoc_collection_t *collection; const char *uristr = "mongodb://127.0.0.1/?appname=cmd-monitoring-example"; const char *collection_name = "test"; bson_t doc; mongoc_init (); if (argc > 1) { uristr = argv [1]; } client = mongoc_client_new (uristr); if (!client) { fprintf (stderr, "Failed to parse URI.\n"); return EXIT_FAILURE; } mongoc_client_set_error_api (client, 2); callbacks = mongoc_apm_callbacks_new (); mongoc_apm_set_command_started_cb (callbacks, command_started); mongoc_apm_set_command_succeeded_cb (callbacks, command_succeeded ); mongoc_apm_set_command_failed_cb (callbacks, command_failed); mongoc_client_set_apm_callbacks (client, callbacks, (void *) &stats /* context pointer */); bson_init (&doc); BSON_APPEND_INT32 (&doc, "_id", 1); collection = mongoc_client_get_collection (client, "test", collection_name); mongoc_collection_drop (collection, NULL); mongoc_collection_insert (collection, MONGOC_INSERT_NONE, &doc, NULL, NULL); /* duplicate key error on the second insert */ mongoc_collection_insert (collection, MONGOC_INSERT_NONE, &doc, NULL, NULL); printf ("started: %d\nsucceeded: %d\nfailed: %d\n", stats.started, stats.succeeded, stats.failed); bson_destroy (&doc); mongoc_collection_destroy (collection); mongoc_apm_callbacks_destroy (callbacks); mongoc_client_destroy (client); mongoc_cleanup (); return EXIT_SUCCESS; }
static mongoc_apm_callbacks_t * heartbeat_event_callbacks (void) { mongoc_apm_callbacks_t *callbacks; callbacks = mongoc_apm_callbacks_new (); mongoc_apm_set_server_heartbeat_started_cb (callbacks, server_heartbeat_started); mongoc_apm_set_server_heartbeat_succeeded_cb (callbacks, server_heartbeat_succeeded); mongoc_apm_set_server_heartbeat_failed_cb (callbacks, server_heartbeat_failed); return callbacks; }
static mongoc_apm_callbacks_t * topology_event_callbacks (void) { mongoc_apm_callbacks_t *callbacks; callbacks = mongoc_apm_callbacks_new (); mongoc_apm_set_server_changed_cb (callbacks, server_changed); mongoc_apm_set_server_opening_cb (callbacks, server_opening); mongoc_apm_set_server_closed_cb (callbacks, server_closed); mongoc_apm_set_topology_changed_cb (callbacks, topology_changed); mongoc_apm_set_topology_opening_cb (callbacks, topology_opening); mongoc_apm_set_topology_closed_cb (callbacks, topology_closed); return callbacks; }