|
8 | 8 | isShutdown (1,1) logical = false |
9 | 9 | end |
10 | 10 |
|
11 | | - properties (Access=public) |
12 | | - MetricReader |
13 | | - View |
14 | | - Resource |
| 11 | + properties (SetAccess=private) |
| 12 | + MetricReader % Metric reader controls how often metrics are exported |
| 13 | + View % View object used to customize collected metrics |
| 14 | + Resource % Attributes attached to all metrics |
15 | 15 | end |
16 | 16 |
|
17 | 17 | methods |
18 | 18 | function obj = MeterProvider(reader, optionnames, optionvalues) |
19 | 19 | % SDK implementation of meter provider |
20 | | - % MP = OPENTELEMETRY.SDK.METRICS.METERPROVIDER creates a meter |
| 20 | + % MP = OPENTELEMETRY.SDK.METRICS.METERPROVIDER creates a meter |
21 | 21 | % provider that uses a periodic exporting metric reader and default configurations. |
22 | 22 | % |
23 | 23 | % MP = OPENTELEMETRY.SDK.METRICS.METERPROVIDER(R) uses metric |
24 | | - % reader R. Currently, the only supported metric reader is the periodic |
25 | | - % exporting metric reader. |
| 24 | + % reader R. Currently, the only supported metric reader is the periodic |
| 25 | + % exporting metric reader. |
26 | 26 | % |
27 | | - % TP = OPENTELEMETRY.SDK.METRICS.METERPROVIDER(R, PARAM1, VALUE1, |
| 27 | + % TP = OPENTELEMETRY.SDK.METRICS.METERPROVIDER(R, PARAM1, VALUE1, |
28 | 28 | % PARAM2, VALUE2, ...) specifies optional parameter name/value pairs. |
29 | 29 | % Parameters are: |
30 | 30 | % "View" - View object used to customize collected metrics. |
|
59 | 59 | "ConstructorArguments", {mpproxy.ID}); |
60 | 60 | % leave other properties unassigned, they won't be used |
61 | 61 | else |
62 | | - validnames = ["Resource"]; |
| 62 | + validnames = ["Resource", "View"]; |
63 | 63 | resourcekeys = string.empty(); |
64 | 64 | resourcevalues = {}; |
65 | 65 | resource = dictionary(resourcekeys, resourcevalues); |
| 66 | + suppliedview = false; |
| 67 | + viewid = 0; |
66 | 68 | for i = 1:length(optionnames) |
67 | 69 | namei = validatestring(optionnames{i}, validnames); |
68 | 70 | valuei = optionvalues{i}; |
|
79 | 81 | if all(cellfun(@iscell, resourcevalues)) |
80 | 82 | resourcevalues = [resourcevalues{:}]; |
81 | 83 | end |
| 84 | + elseif strcmp(namei, "View") |
| 85 | + suppliedview = true; |
| 86 | + view = valuei; |
| 87 | + if ~isa(view, "opentelemetry.sdk.metrics.View") |
| 88 | + error("opentelemetry:sdk:metrics:MeterProvider:InvalidViewType", ... |
| 89 | + "View input must be a opentelemetry.sdk.metrics.View object."); |
| 90 | + end |
| 91 | + viewid = view.Proxy.ID; |
82 | 92 | end |
83 | 93 | end |
84 | 94 |
|
85 | 95 | obj.Proxy = libmexclass.proxy.Proxy("Name", ... |
86 | 96 | "libmexclass.opentelemetry.sdk.MeterProviderProxy", ... |
87 | | - "ConstructorArguments", {reader.Proxy.ID, resourcekeys, resourcevalues}); |
| 97 | + "ConstructorArguments", {reader.Proxy.ID, resourcekeys, ... |
| 98 | + resourcevalues, suppliedview, viewid}); |
88 | 99 | obj.MetricReader = reader; |
89 | 100 | obj.Resource = resource; |
| 101 | + if suppliedview |
| 102 | + obj.View = view; |
| 103 | + end |
90 | 104 | end |
91 | 105 | end |
92 | | - |
| 106 | + |
93 | 107 | function addMetricReader(obj, reader) |
94 | | - arguments |
95 | | - obj |
96 | | - reader (1,1) {mustBeA(reader, "opentelemetry.sdk.metrics.PeriodicExportingMetricReader")} |
97 | | - end |
| 108 | + % ADDMETRICREADER Add an additional metric reader |
| 109 | + % ADDMETRICREADER(MP, R) adds an additional metric reader |
| 110 | + % R to the list of metric readers used by meter provider |
| 111 | + % MP. |
| 112 | + % |
| 113 | + % See also ADDVIEW, OPENTELEMETRY.SDK.METRICS.PERIODICEXPORTINGMETRICREADER |
| 114 | + arguments |
| 115 | + obj |
| 116 | + reader (1,1) {mustBeA(reader, "opentelemetry.sdk.metrics.PeriodicExportingMetricReader")} |
| 117 | + end |
98 | 118 | obj.Proxy.addMetricReader(reader.Proxy.ID); |
99 | 119 | obj.MetricReader = [obj.MetricReader, reader]; |
100 | 120 | end |
101 | 121 |
|
102 | 122 | function addView(obj, view) |
103 | | - arguments |
104 | | - obj |
105 | | - view (1,1) {mustBeA(view, "opentelemetry.sdk.metrics.View")} |
106 | | - end |
| 123 | + % ADDVIEW Add an additional view |
| 124 | + % ADDVIEW(MP, V) adds an additional view V. |
| 125 | + % |
| 126 | + % See also ADDMETRICREADER, OPENTELEMETRY.SDK.METRICS.VIEW |
| 127 | + arguments |
| 128 | + obj |
| 129 | + view (1,1) {mustBeA(view, "opentelemetry.sdk.metrics.View")} |
| 130 | + end |
107 | 131 | obj.Proxy.addView(view.Proxy.ID); |
108 | 132 | obj.View = [obj.View, view]; |
109 | 133 | end |
|
0 commit comments