Skip to content

Commit baf7bab

Browse files
committed
Refactor sdk tracerprovider to subclass from api tracerprovider
1 parent 3f40dc7 commit baf7bab

File tree

2 files changed

+17
-51
lines changed

2 files changed

+17
-51
lines changed

api/trace/+opentelemetry/+trace/TracerProvider.m

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,16 +4,19 @@
44

55
% Copyright 2023 The MathWorks, Inc.
66

7-
properties (Access=private)
7+
properties (Access=protected)
88
Proxy % Proxy object to interface C++ code
99
end
1010

11-
methods (Access=?opentelemetry.trace.Provider)
12-
function obj = TracerProvider()
11+
methods (Access={?opentelemetry.trace.Provider, ?opentelemetry.sdk.trace.TracerProvider})
12+
function obj = TracerProvider(skip)
1313
% constructor
14-
obj.Proxy = libmexclass.proxy.Proxy("Name", ...
15-
"libmexclass.opentelemetry.TracerProviderProxy", ...
16-
"ConstructorArguments", {});
14+
% "skip" input signals skipping construction
15+
if nargin < 1 || skip ~= "skip"
16+
obj.Proxy = libmexclass.proxy.Proxy("Name", ...
17+
"libmexclass.opentelemetry.TracerProviderProxy", ...
18+
"ConstructorArguments", {});
19+
end
1720
end
1821
end
1922

sdk/trace/+opentelemetry/+sdk/+trace/TracerProvider.m

Lines changed: 8 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,10 @@
1-
classdef TracerProvider < handle
2-
% An SDK implementation of tracer provider, which stores a set of configurations used
3-
% in a distributed tracing system.
1+
classdef TracerProvider < opentelemetry.trace.TracerProvider & handle
2+
% An SDK implementation of tracer provider, which stores a set of configurations used
3+
% in a distributed tracing system.
44

5-
% Copyright 2023 The MathWorks, Inc.
5+
% Copyright 2023 The MathWorks, Inc.
66

7-
properties (Access=private)
8-
Proxy % Proxy object to interface C++ code
7+
properties(Access=private)
98
isShutdown (1,1) logical = false
109
end
1110

@@ -48,6 +47,9 @@
4847
optionvalues
4948
end
5049

50+
% explicit call to superclass constructor to make it a no-op
51+
52+
5153
validnames = ["Sampler", "Resource"];
5254
foundsampler = false;
5355
resourcekeys = string.empty();
@@ -108,45 +110,6 @@ function addSpanProcessor(obj, processor)
108110
end
109111
end
110112

111-
function tracer = getTracer(obj, trname, trversion, trschema)
112-
% GETTRACER Create a tracer object used to generate spans
113-
% TR = GETTRACER(TP, NAME) returns a tracer with the name
114-
% NAME that uses all the configurations specified in tracer
115-
% provider TP.
116-
%
117-
% TR = GETTRACER(TP, NAME, VERSION, SCHEMA) also specifies
118-
% the tracer version and the URL that documents the schema
119-
% of the generated spans.
120-
%
121-
% See also OPENTELEMETRY.TRACE.TRACER
122-
arguments
123-
obj
124-
trname
125-
trversion = ""
126-
trschema = ""
127-
end
128-
% name, version, schema accepts any types that can convert to a
129-
% string
130-
import opentelemetry.utils.mustBeScalarString
131-
trname = mustBeScalarString(trname);
132-
trversion = mustBeScalarString(trversion);
133-
trschema = mustBeScalarString(trschema);
134-
id = obj.Proxy.getTracer(trname, trversion, trschema);
135-
136-
tracerproxy = libmexclass.proxy.Proxy("Name", ...
137-
"libmexclass.opentelemetry.TracerProxy", "ID", id);
138-
tracer = opentelemetry.trace.Tracer(tracerproxy, trname, trversion, trschema);
139-
end
140-
141-
function setTracerProvider(obj)
142-
% SETTRACERPROVIDER Set global instance of tracer provider
143-
% SETTRACERPROVIDER(TP) sets the SDK tracer provider TP as
144-
% the global instance.
145-
%
146-
% See also OPENTELEMETRY.TRACE.PROVIDER.GETTRACERPROVIDER
147-
obj.Proxy.setTracerProvider();
148-
end
149-
150113
function success = shutdown(obj)
151114
% SHUTDOWN Shutdown
152115
% SUCCESS = SHUTDOWN(TP) shuts down all span processors associated with tracer provider TP

0 commit comments

Comments
 (0)