diff --git a/src/simple/dune b/src/simple/dune new file mode 100644 index 0000000..8718276 --- /dev/null +++ b/src/simple/dune @@ -0,0 +1,6 @@ + +(library + (name trace_simple) + (public_name trace.simple) + (synopsis "simple type for spans") + (libraries trace.core trace.util)) diff --git a/src/simple/simple_span.ml b/src/simple/simple_span.ml new file mode 100644 index 0000000..7e0f233 --- /dev/null +++ b/src/simple/simple_span.ml @@ -0,0 +1,33 @@ +(** A simple span. + + This is a concrete representation of spans that is convenient to manipulate. + + @since NEXT_RELEASE *) + +open Trace_core + +type span_flavor = + [ `Sync + | `Async + ] + +type t = { + name: string; + __FUNCTION__: string option; + __FILE__: string; + __LINE__: int; + time_ns: int64; (** Time the span was entered. *) + mutable time_exit_ns: int64; + (** Time the span was exited. Set at exit, [Int64.max_int] otherwise *) + tid: int; (** Thread in which span was created *) + trace_id: int64; (** For async spans *) + parent: parent; + flavor: span_flavor; + params: extension_parameter list; + mutable data: (string * Trace_core.user_data) list; + (** Modified by [add_data_to_span] *) +} +(** The type of spans used by all subscribers. *) + +type Trace_core.span += + | Span_simple of t (** How to turn a {!Simple_span.t} into a {!span}. *)