@@ -13,43 +13,37 @@ static std::string getUrl(const char *collector_host, uint32_t collector_port) {
13
13
ZipkinCoreConstants::get ().DEFAULT_COLLECTOR_ENDPOINT ;
14
14
}
15
15
16
+ template <class ... Types> void CurlHandle::setopt (CURLoption option, Types... args) {
17
+ auto rcode = curl_easy_setopt (handle_, option, args...);
18
+ if (rcode != CURLE_OK) {
19
+ throw CurlError{rcode};
20
+ }
21
+ }
22
+
16
23
ZipkinHttpTransporter::ZipkinHttpTransporter (const char *collector_host,
17
24
uint32_t collector_port,
18
25
std::chrono::milliseconds collector_timeout) {
19
- auto rcode = curl_easy_setopt (handle_, CURLOPT_URL,
20
- getUrl (collector_host, collector_port).c_str ());
21
- if (rcode != CURLE_OK) {
22
- throw CurlError{rcode};
23
- }
26
+ handle_.setopt (CURLOPT_URL, getUrl (collector_host, collector_port).c_str ());
24
27
25
28
headers_.append (" Content-Type: application/json" );
26
- rcode = curl_easy_setopt (handle_, CURLOPT_HTTPHEADER,
27
- static_cast <curl_slist *>(headers_));
28
- if (rcode != CURLE_OK) {
29
- throw CurlError{rcode};
30
- }
29
+ handle_.setopt (CURLOPT_HTTPHEADER, static_cast <curl_slist *>(headers_));
31
30
32
- rcode = curl_easy_setopt (handle_, CURLOPT_ERRORBUFFER, error_buffer_);
33
- if (rcode != CURLE_OK) {
34
- throw CurlError{rcode};
35
- }
31
+ handle_.setopt (CURLOPT_ERRORBUFFER, error_buffer_);
36
32
37
- rcode = curl_easy_setopt (handle_, CURLOPT_TIMEOUT_MS, collector_timeout.count ());
38
- if (rcode != CURLE_OK) {
39
- throw CurlError{rcode};
40
- }
33
+ handle_.setopt (CURLOPT_TIMEOUT_MS, collector_timeout.count ());
41
34
}
42
35
43
36
ZipkinHttpTransporter::~ZipkinHttpTransporter () {}
44
37
45
38
void ZipkinHttpTransporter::transportSpans (SpanBuffer &spans) try {
46
39
auto data = spans.toStringifiedJsonArray ();
47
- auto rcode = curl_easy_setopt (handle_, CURLOPT_POSTFIELDS, data.c_str ());
48
- if (rcode != CURLE_OK) {
49
- std::cerr << curl_easy_strerror (rcode) << ' \n ' ;
40
+ try {
41
+ handle_.setopt (CURLOPT_POSTFIELDS, data.c_str ());
42
+ } catch (const CurlError &e) {
43
+ std::cerr << e.what () << ' \n ' ;
50
44
return ;
51
45
}
52
- rcode = curl_easy_perform (handle_);
46
+ auto rcode = curl_easy_perform (handle_);
53
47
if (rcode != CURLE_OK) {
54
48
std::cerr << error_buffer_ << ' \n ' ;
55
49
}
0 commit comments