26 lines
1 KiB
OCaml
26 lines
1 KiB
OCaml
|
|
(*---------------------------------------------------------------------------
|
||
|
|
Copyright (c) 2024 The uuidm programmers. All rights reserved.
|
||
|
|
SPDX-License-Identifier: CC0-1.0
|
||
|
|
---------------------------------------------------------------------------*)
|
||
|
|
|
||
|
|
(* Code from the quick start *)
|
||
|
|
|
||
|
|
let uuid = Uuidm.v4_gen (Random.State.make_self_init ())
|
||
|
|
let () = print_endline (Uuidm.to_string (uuid ()))
|
||
|
|
let () = print_endline (Uuidm.to_string (uuid ()))
|
||
|
|
|
||
|
|
let feed_id ~feed_id = "urn:uuid:" ^ (Uuidm.to_string feed_id)
|
||
|
|
let entry_id ~feed_id ~rfc3339_stamp =
|
||
|
|
"urn:uuid:" ^ (Uuidm.to_string @@ Uuidm.v5 feed_id rfc3339_stamp)
|
||
|
|
|
||
|
|
let uuid_monotonic =
|
||
|
|
let now_ms () = Int64.of_float (Unix.gettimeofday () *. 1000.) in
|
||
|
|
Uuidm.v7_monotonic_gen ~now_ms (Random.State.make_self_init ())
|
||
|
|
|
||
|
|
let rec uuid () = match uuid_monotonic () with
|
||
|
|
| None -> (* Too many UUIDs generated in a ms *) Unix.sleepf 1e-3; uuid ()
|
||
|
|
| Some uuid -> uuid
|
||
|
|
|
||
|
|
let () = print_endline (Uuidm.to_string (uuid ()))
|
||
|
|
let () = print_endline (Uuidm.to_string (uuid ()))
|