Skip to content

Commit dd0d28a

Browse files
committed
fix merge issues
1 parent 613e99e commit dd0d28a

File tree

2 files changed

+124
-0
lines changed

2 files changed

+124
-0
lines changed
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
// Copyright 2023 The MathWorks, Inc.
2+
3+
#pragma once
4+
5+
#include "libmexclass/proxy/Proxy.h"
6+
#include "libmexclass/proxy/method/Context.h"
7+
8+
#include "opentelemetry-matlab/metrics/CounterProxy.h"
9+
#include "opentelemetry-matlab/metrics/HistogramProxy.h"
10+
#include "opentelemetry-matlab/metrics/UpDownCounterProxy.h"
11+
12+
#include "opentelemetry/metrics/meter.h"
13+
14+
namespace metrics_api = opentelemetry::metrics;
15+
namespace nostd = opentelemetry::nostd;
16+
17+
namespace libmexclass::opentelemetry {
18+
class MeterProxy : public libmexclass::proxy::Proxy {
19+
public:
20+
MeterProxy(nostd::shared_ptr<metrics_api::Meter> mt) : CppMeter(mt) {
21+
REGISTER_METHOD(MeterProxy, createCounter);
22+
REGISTER_METHOD(MeterProxy, createUpDownCounter);
23+
REGISTER_METHOD(MeterProxy, createHistogram);
24+
}
25+
26+
void createCounter(libmexclass::proxy::method::Context& context);
27+
28+
void createUpDownCounter(libmexclass::proxy::method::Context& context);
29+
30+
void createHistogram(libmexclass::proxy::method::Context& context);
31+
32+
private:
33+
34+
nostd::shared_ptr<metrics_api::Meter> CppMeter;
35+
};
36+
} // namespace libmexclass::opentelemetry

api/metrics/src/MeterProxy.cpp

Lines changed: 88 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,88 @@
1+
// Copyright 2023 The MathWorks, Inc.
2+
3+
#include "opentelemetry-matlab/metrics/MeterProxy.h"
4+
5+
#include "libmexclass/proxy/ProxyManager.h"
6+
7+
#include "MatlabDataArray.hpp"
8+
9+
#include <chrono>
10+
11+
namespace libmexclass::opentelemetry {
12+
void MeterProxy::createCounter(libmexclass::proxy::method::Context& context) {
13+
// Always assumes 3 inputs
14+
matlab::data::StringArray name_mda = context.inputs[0];
15+
std::string name = static_cast<std::string>(name_mda[0]);
16+
matlab::data::StringArray description_mda = context.inputs[1];
17+
std::string description= static_cast<std::string>(description_mda[0]);
18+
matlab::data::StringArray unit_mda = context.inputs[2];
19+
std::string unit = static_cast<std::string>(unit_mda[0]);
20+
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);
26+
27+
// obtain a proxy ID
28+
libmexclass::proxy::ID proxyid = libmexclass::proxy::ProxyManager::manageProxy(proxy);
29+
30+
// return the ID
31+
matlab::data::ArrayFactory factory;
32+
auto proxyid_mda = factory.createScalar<libmexclass::proxy::ID>(proxyid);
33+
context.outputs[0] = proxyid_mda;
34+
}
35+
36+
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);
55+
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;
60+
}
61+
62+
63+
void 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;
85+
}
86+
87+
88+
} // namespace libmexclass::opentelemetry

0 commit comments

Comments
 (0)