20
20
21
21
-record (opts ,{
22
22
add_scope_info :: boolean (),
23
- add_total_suffix :: boolean ()
23
+ add_total_suffix :: boolean (),
24
+ order :: maps :iterator_order ()
24
25
}).
25
26
26
27
-export ([init /1 ,
42
43
init (Opts ) ->
43
44
{ok , # opts {
44
45
add_scope_info = maps :get (add_scope_info , Opts , true ),
45
- add_total_suffix = maps :get (add_total_suffix , Opts , true )
46
+ add_total_suffix = maps :get (add_total_suffix , Opts , true ),
47
+ order = maps :get (order , Opts , undefined )
46
48
}}.
47
49
48
50
export (metrics , Metrics , Resource , Opts ) ->
@@ -54,7 +56,7 @@ force_flush() ->
54
56
shutdown (_ ) ->
55
57
ok .
56
58
57
- parse_metrics (Metrics , Resource , Opts ) ->
59
+ parse_metrics (Metrics , Resource , # opts { order = Order } = Opts ) ->
58
60
ParsedMetrics = lists :foldl (
59
61
fun (# metric {scope = Scope } = Metric , Acc ) ->
60
62
Acc1 = case Opts of
@@ -74,7 +76,8 @@ parse_metrics(Metrics, Resource, Opts) ->
74
76
TargetInfoMetric = fake_info_metric (target , # instrumentation_scope {}, ResourceAttributes , <<" Target metadata" >>),
75
77
ParsedMetrics1 = parse_and_accumulate_metric (TargetInfoMetric , ParsedMetrics , Opts ),
76
78
77
- maps :fold (fun (_Name , #{preamble := Preamble , data := Data }, Acc ) -> [[Preamble | Data ] | Acc ] end , [], ParsedMetrics1 ).
79
+ ParsedMetricsIter = maps :iterator (ParsedMetrics1 , Order ),
80
+ maps :fold (fun (_Name , #{preamble := Preamble , data := Data }, Acc ) -> [[Preamble | Data ] | Acc ] end , [], ParsedMetricsIter ).
78
81
79
82
parse_and_accumulate_metric (# metric {name = Name , description = Description , data = Data , unit = Unit , scope = Scope }, Acc , Opts ) ->
80
83
FixedUnit = fix_unit (Unit ),
0 commit comments