99#include < chrono>
1010
1111namespace libmexclass ::opentelemetry {
12- void MeterProxy::createCounter (libmexclass::proxy::method::Context& context) {
12+
13+ void MeterProxy::createSynchronous (libmexclass::proxy::method::Context& context, SynchronousInstrumentType type) {
1314 // Always assumes 3 inputs
1415 matlab::data::StringArray name_mda = context.inputs [0 ];
1516 std::string name = static_cast <std::string>(name_mda[0 ]);
@@ -18,11 +19,8 @@ void MeterProxy::createCounter(libmexclass::proxy::method::Context& context) {
1819 matlab::data::StringArray unit_mda = context.inputs [2 ];
1920 std::string unit = static_cast <std::string>(unit_mda[0 ]);
2021
21- nostd::shared_ptr<metrics_api::Counter<double > > ct = std::move (CppMeter->CreateDoubleCounter (name, description, unit));
22-
23- // instantiate a CounterProxy instance
24- CounterProxy* newproxy = new CounterProxy (ct);
25- auto proxy = std::shared_ptr<libmexclass::proxy::Proxy>(newproxy);
22+ SynchronousInstrumentProxyFactory proxyfactory (CppMeter);
23+ auto proxy = proxyfactory.create (type, name, description, unit);
2624
2725 // obtain a proxy ID
2826 libmexclass::proxy::ID proxyid = libmexclass::proxy::ProxyManager::manageProxy (proxy);
@@ -33,55 +31,18 @@ void MeterProxy::createCounter(libmexclass::proxy::method::Context& context) {
3331 context.outputs [0 ] = proxyid_mda;
3432}
3533
34+ void MeterProxy::createCounter (libmexclass::proxy::method::Context& context) {
35+ createSynchronous (context, SynchronousInstrumentType::Counter);
36+ }
3637
37- void MeterProxy::createUpDownCounter (libmexclass::proxy::method::Context& context) {
38- // Always assumes 3 inputs
39- matlab::data::StringArray name_mda = context.inputs [0 ];
40- std::string name = static_cast <std::string>(name_mda[0 ]);
41- matlab::data::StringArray description_mda = context.inputs [1 ];
42- std::string description= static_cast <std::string>(description_mda[0 ]);
43- matlab::data::StringArray unit_mda = context.inputs [2 ];
44- std::string unit = static_cast <std::string>(unit_mda[0 ]);
45-
46- nostd::shared_ptr<metrics_api::UpDownCounter<double > > ct = std::move (CppMeter->CreateDoubleUpDownCounter
47- (name, description, unit));
48-
49- // instantiate a UpDownCounterProxy instance
50- UpDownCounterProxy* newproxy = new UpDownCounterProxy (ct);
51- auto proxy = std::shared_ptr<libmexclass::proxy::Proxy>(newproxy);
52-
53- // obtain a proxy ID
54- libmexclass::proxy::ID proxyid = libmexclass::proxy::ProxyManager::manageProxy (proxy);
5538
56- // return the ID
57- matlab::data::ArrayFactory factory;
58- auto proxyid_mda = factory.createScalar <libmexclass::proxy::ID>(proxyid);
59- context.outputs [0 ] = proxyid_mda;
39+ void MeterProxy::createUpDownCounter (libmexclass::proxy::method::Context& context) {
40+ createSynchronous (context, SynchronousInstrumentType::UpDownCounter);
6041}
6142
6243
6344void MeterProxy::createHistogram (libmexclass::proxy::method::Context& context) {
64- // Always assumes 3 inputs
65- matlab::data::StringArray name_mda = context.inputs [0 ];
66- std::string name = static_cast <std::string>(name_mda[0 ]);
67- matlab::data::StringArray description_mda = context.inputs [1 ];
68- std::string description= static_cast <std::string>(description_mda[0 ]);
69- matlab::data::StringArray unit_mda = context.inputs [2 ];
70- std::string unit = static_cast <std::string>(unit_mda[0 ]);
71-
72- nostd::shared_ptr<metrics_api::Histogram<double > > hist = std::move (CppMeter->CreateDoubleHistogram (name, description, unit));
73-
74- // instantiate a HistogramProxy instance
75- HistogramProxy* newproxy = new HistogramProxy (hist);
76- auto proxy = std::shared_ptr<libmexclass::proxy::Proxy>(newproxy);
77-
78- // obtain a proxy ID
79- libmexclass::proxy::ID proxyid = libmexclass::proxy::ProxyManager::manageProxy (proxy);
80-
81- // return the ID
82- matlab::data::ArrayFactory factory;
83- auto proxyid_mda = factory.createScalar <libmexclass::proxy::ID>(proxyid);
84- context.outputs [0 ] = proxyid_mda;
45+ createSynchronous (context, SynchronousInstrumentType::Histogram);
8546}
8647
8748
0 commit comments