NAME¶
bson_oid_t - BSON ObjectID Abstraction
SYNOPSIS¶
#include <bson.h>
typedef struct
{
uint8_t bytes[12];
} bson_oid_t;
DESCRIPTION¶
The bson_oid_t structure contains the 12‐byte ObjectId notation
defined by the BSON ObjectID specificiation
ObjectId is a 12‐byte BSON type, constructed using:
- •
- a 4‐byte value representing the seconds since the Unix epoch (in
Big Endian)
- •
- a 3‐byte machine identifier
- •
- a 2‐byte process id (Big Endian), and
- •
- a 3‐byte counter (Big Endian), starting with a random value.
VALIDATING¶
You can validate that a string containing a hex‐encoded ObjectID is valid
using the function bson_oid_is_valid(3)
EXAMPLE¶
#include <bson.h>
#include <stdio.h>
int main (int argc, char *argv[])
{
bson_oid_t oid;
char str[25];
bson_oid_init (&oid, NULL);
bson_oid_to_string (&oid, str);
printf ("%s\n", str);
if (bson_oid_is_valid (str, sizeof str)) {
bson_oid_init_from_string (&oid, str);
}
printf ("The UNIX time was: %u\n",
(unsigned)bson_oid_get_time_t (&oid));
return 0;
}