Skip to content

Commit 019c042

Browse files
committed
Add SocketDataTransport to support kTCP/kUDP
1 parent 62cbae6 commit 019c042

File tree

5 files changed

+37
-20
lines changed

5 files changed

+37
-20
lines changed

exporters/geneva/CMakeLists.txt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ endif()
2222

2323
include_directories(include)
2424

25-
set(OTEL_GENEVA_EXPORTER_VERSION 1.0.0)
25+
set(OTEL_GENEVA_EXPORTER_VERSION 1.0.1)
2626
set(OTEL_GENEVA_EXPORTER_MAJOR_VERSION 1)
2727

2828
function(set_target_version target_name)
@@ -38,10 +38,10 @@ if(WIN32)
3838
add_library(
3939
opentelemetry_exporter_geneva_metrics
4040
src/exporter.cc src/etw_data_transport.cc
41-
src/unix_domain_socket_data_transport.cc)
41+
src/socket_data_transport.cc)
4242
else()
4343
add_library(opentelemetry_exporter_geneva_metrics
44-
src/exporter.cc src/unix_domain_socket_data_transport.cc)
44+
src/exporter.cc src/socket_data_transport.cc)
4545
endif()
4646

4747
if(MAIN_PROJECT)

exporters/geneva/cmake/package.cmake

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ set(CPACK_PACKAGE_VENDOR "OpenTelemetry")
44
set(CPACK_PACKAGE_CONTACT "OpenTelemetry-cpp")
55
set(CPACK_PACKAGE_HOMEPAGE_URL "https://opentelemetry.io/")
66
set(CMAKE_PROJECT_NAME "opentelemetry-cpp-geneva-metrics")
7-
set(OPENTELEMETRY_GENEVA_METRICS_VERSION "1.0.0")
7+
set(OPENTELEMETRY_GENEVA_METRICS_VERSION "1.0.1")
88

99
option(TARBALL "Build a tarball package" OFF)
1010

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,18 +14,18 @@ OPENTELEMETRY_BEGIN_NAMESPACE
1414
namespace exporter {
1515
namespace geneva {
1616
namespace metrics {
17-
class UnixDomainSocketDataTransport : public DataTransport {
17+
class SocketDataTransport : public DataTransport {
1818
public:
19-
UnixDomainSocketDataTransport(const std::string &connection_string);
19+
SocketDataTransport(const ConnectionStringParser &parser);
2020
bool Connect() noexcept override;
2121
bool Send(MetricsEventType event_type, const char *data,
2222
uint16_t length) noexcept override;
2323
bool Disconnect() noexcept override;
24-
~UnixDomainSocketDataTransport() = default;
24+
~SocketDataTransport() = default;
2525

2626
private:
2727
// Socket connection is re-established for every batch of events
28-
const SocketTools::SocketParams socketparams_{AF_UNIX, SOCK_STREAM, 0};
28+
SocketTools::SocketParams socketparams_{AF_UNIX, SOCK_STREAM, 0};
2929
SocketTools::Socket socket_;
3030
std::unique_ptr<SocketTools::SocketAddr> addr_;
3131
bool connected_{false};

exporters/geneva/src/exporter.cc

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
#ifdef _WIN32
77
#include "opentelemetry/exporters/geneva/metrics/etw_data_transport.h"
88
#else
9-
#include "opentelemetry/exporters/geneva/metrics/unix_domain_socket_data_transport.h"
9+
#include "opentelemetry/exporters/geneva/metrics/socket_data_transport.h"
1010
#endif
1111
#include "opentelemetry/sdk/metrics/export/metric_producer.h"
1212
#include "opentelemetry/sdk_config.h"
@@ -29,11 +29,12 @@ Exporter::Exporter(const ExporterOptions &options)
2929
new ETWDataTransport(kBinaryHeaderSize));
3030
}
3131
#else
32-
if (connection_string_parser_.transport_protocol_ ==
33-
TransportProtocol::kUNIX) {
32+
if (connection_string_parser_.transport_protocol_ == TransportProtocol::kUNIX
33+
|| connection_string_parser_.transport_protocol_ == TransportProtocol::kTCP
34+
|| connection_string_parser_.transport_protocol_ == TransportProtocol::kUDP) {
3435
data_transport_ =
35-
std::unique_ptr<DataTransport>(new UnixDomainSocketDataTransport(
36-
connection_string_parser_.connection_string_));
36+
std::unique_ptr<DataTransport>(new SocketDataTransport(
37+
connection_string_parser_));
3738
}
3839
#endif
3940
}

exporters/geneva/src/unix_domain_socket_data_transport.cc renamed to exporters/geneva/src/socket_data_transport.cc

Lines changed: 23 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,37 @@
11
// Copyright The OpenTelemetry Authors
22
// SPDX-License-Identifier: Apache-2.0
33

4-
#include "opentelemetry/exporters/geneva/metrics/unix_domain_socket_data_transport.h"
4+
#include "opentelemetry/exporters/geneva/metrics/connection_string_parser.h"
5+
#include "opentelemetry/exporters/geneva/metrics/socket_data_transport.h"
56
#include "opentelemetry/exporters/geneva/metrics/macros.h"
67

78
OPENTELEMETRY_BEGIN_NAMESPACE
89
namespace exporter {
910
namespace geneva {
1011
namespace metrics {
1112

12-
UnixDomainSocketDataTransport::UnixDomainSocketDataTransport(
13-
const std::string &connection_string)
13+
SocketDataTransport::SocketDataTransport(
14+
const ConnectionStringParser &parser)
1415
{
15-
addr_.reset(new SocketTools::SocketAddr(connection_string.c_str(), true));
16+
bool is_unix_domain = false;
17+
18+
if (parser.transport_protocol_ == TransportProtocol::kTCP) {
19+
socketparams_ = {AF_INET, SOCK_STREAM, 0};
20+
}
21+
else if (parser.transport_protocol_ == TransportProtocol::kUDP) {
22+
socketparams_ = {AF_INET, SOCK_DGRAM, 0};
23+
}
24+
else if (parser.transport_protocol_ == TransportProtocol::kUNIX) {
25+
socketparams_ = {AF_UNIX, SOCK_STREAM, 0};
26+
is_unix_domain = true;
27+
}
28+
else {
29+
LOG_ERROR("Geneva Exporter: Invalid transport protocol");
30+
}
31+
addr_.reset(new SocketTools::SocketAddr(parser.connection_string_.c_str(), is_unix_domain));
1632
}
1733

18-
bool UnixDomainSocketDataTransport::Connect() noexcept {
34+
bool SocketDataTransport::Connect() noexcept {
1935
if (!connected_) {
2036
socket_ = SocketTools::Socket(socketparams_);
2137
connected_ = socket_.connect(*addr_);
@@ -27,7 +43,7 @@ bool UnixDomainSocketDataTransport::Connect() noexcept {
2743
return true;
2844
}
2945

30-
bool UnixDomainSocketDataTransport::Send(MetricsEventType event_type,
46+
bool SocketDataTransport::Send(MetricsEventType event_type,
3147
char const *data,
3248
uint16_t length) noexcept {
3349
int error_code = 0;
@@ -58,7 +74,7 @@ bool UnixDomainSocketDataTransport::Send(MetricsEventType event_type,
5874
return true;
5975
}
6076

61-
bool UnixDomainSocketDataTransport::Disconnect() noexcept {
77+
bool SocketDataTransport::Disconnect() noexcept {
6278
if (connected_) {
6379
connected_ = false;
6480
if (socket_.invalid()) {

0 commit comments

Comments
 (0)