7
7
#include " IXCobraToSentryBot.h"
8
8
9
9
#include " IXCobraBot.h"
10
- #include " IXQueueManager.h"
11
10
#include < ixcobra/IXCobraConnection.h>
12
11
#include < ixcore/utils/IXCoreLogger.h>
13
12
@@ -23,7 +22,6 @@ namespace ix
23
22
const std::string& position,
24
23
SentryClient& sentryClient,
25
24
bool verbose,
26
- size_t maxQueueSize,
27
25
bool enableHeartbeat,
28
26
int runtime)
29
27
{
@@ -32,85 +30,80 @@ namespace ix
32
30
const std::string& /* position*/ ,
33
31
const bool verbose,
34
32
std::atomic<bool >& throttled,
35
- std::atomic<bool > &
36
- /* fatalCobraError*/ ) -> bool {
37
- auto ret = sentryClient.send (msg, verbose);
38
- HttpResponsePtr response = ret.first ;
39
-
40
- if (!response)
41
- {
42
- CoreLogger::warn (" Null HTTP Response" );
43
- return false ;
44
- }
45
-
46
- if (verbose)
47
- {
48
- for (auto it : response->headers )
33
+ std::atomic<bool >& /* fatalCobraError*/ ,
34
+ std::atomic<uint64_t >& sentCount) -> void {
35
+ sentryClient.send (msg, verbose,
36
+ [&sentCount, &throttled, &verbose](const HttpResponsePtr& response) {
37
+ if (!response)
49
38
{
50
- CoreLogger::info (it.first + " : " + it.second );
39
+ CoreLogger::warn (" Null HTTP Response" );
40
+ return ;
51
41
}
52
42
53
- CoreLogger::info (" Upload size: " + std::to_string (response->uploadSize ));
54
- CoreLogger::info (" Download size: " + std::to_string (response->downloadSize ));
55
-
56
- CoreLogger::info (" Status: " + std::to_string (response->statusCode ));
57
- if (response->errorCode != HttpErrorCode::Ok)
43
+ if (verbose)
58
44
{
59
- CoreLogger::info (" error message: " + response->errorMsg );
60
- }
45
+ for (auto it : response->headers )
46
+ {
47
+ CoreLogger::info (it.first + " : " + it.second );
48
+ }
61
49
62
- if (response->headers [" Content-Type" ] != " application/octet-stream" )
63
- {
64
- CoreLogger::info (" payload: " + response->payload );
65
- }
66
- }
50
+ CoreLogger::info (" Upload size: " + std::to_string (response->uploadSize ));
51
+ CoreLogger::info (" Download size: " + std::to_string (response->downloadSize ));
67
52
68
- bool success = response->statusCode == 200 ;
53
+ CoreLogger::info (" Status: " + std::to_string (response->statusCode ));
54
+ if (response->errorCode != HttpErrorCode::Ok)
55
+ {
56
+ CoreLogger::info (" error message: " + response->errorMsg );
57
+ }
69
58
70
- if (!success )
71
- {
72
- CoreLogger::error ( " Error sending data to sentry : " + std::to_string ( response->statusCode ) );
73
- CoreLogger::error ( " Body: " + ret. second );
74
- CoreLogger::error ( " Response: " + response-> payload );
59
+ if (response-> headers [ " Content-Type " ] != " application/octet-stream " )
60
+ {
61
+ CoreLogger::info ( " payload : " + response->payload );
62
+ }
63
+ }
75
64
76
- // Error 429 Too Many Requests
77
- if (response->statusCode == 429 )
65
+ if (response->statusCode == 200 )
66
+ {
67
+ sentCount++;
68
+ }
69
+ else
78
70
{
79
- auto retryAfter = response->headers [" Retry-After" ];
80
- std::stringstream ss;
81
- ss << retryAfter;
82
- int seconds;
83
- ss >> seconds;
71
+ CoreLogger::error (" Error sending data to sentry: " + std::to_string (response->statusCode ));
72
+ CoreLogger::error (" Response: " + response->payload );
84
73
85
- if (!ss.eof () || ss.fail ())
74
+ // Error 429 Too Many Requests
75
+ if (response->statusCode == 429 )
86
76
{
87
- seconds = 30 ;
88
- CoreLogger::warn (" Error parsing Retry-After header. "
89
- " Using " + retryAfter + " for the sleep duration" );
77
+ auto retryAfter = response->headers [" Retry-After" ];
78
+ std::stringstream ss;
79
+ ss << retryAfter;
80
+ int seconds;
81
+ ss >> seconds;
82
+
83
+ if (!ss.eof () || ss.fail ())
84
+ {
85
+ seconds = 30 ;
86
+ CoreLogger::warn (" Error parsing Retry-After header. "
87
+ " Using " + retryAfter + " for the sleep duration" );
88
+ }
89
+
90
+ CoreLogger::warn (" Error 429 - Too Many Requests. ws will sleep "
91
+ " and retry after " + retryAfter + " seconds" );
92
+
93
+ throttled = true ;
94
+ auto duration = std::chrono::seconds (seconds);
95
+ std::this_thread::sleep_for (duration);
96
+ throttled = false ;
90
97
}
91
-
92
- CoreLogger::warn (" Error 429 - Too Many Requests. ws will sleep "
93
- " and retry after " + retryAfter + " seconds" );
94
-
95
- throttled = true ;
96
- auto duration = std::chrono::seconds (seconds);
97
- std::this_thread::sleep_for (duration);
98
- throttled = false ;
99
98
}
100
- }
101
-
102
- return success;
99
+ });
103
100
});
104
101
105
- bool useQueue = true ;
106
-
107
102
return bot.run (config,
108
103
channel,
109
104
filter,
110
105
position,
111
106
verbose,
112
- maxQueueSize,
113
- useQueue,
114
107
enableHeartbeat,
115
108
runtime);
116
109
}
0 commit comments