@@ -83,13 +83,12 @@ namespace WPEFramework
83
83
case SiftUploader::UploaderState::RANDOMISATION_WINDOW_WAIT_STATE:
84
84
{
85
85
std::unique_lock<std::mutex> lock ( mMutex );
86
- mCondition .wait_for (lock, std::chrono::seconds (RandomisationWindowTimeGenerator ()),
87
- [this ] () { return mStop ; } );
88
86
if (mStop )
89
87
{
90
- LOGINFO (" SiftUploader Run exit" );
91
- return ;
88
+ break ;
92
89
}
90
+ mCondition .wait_for (lock, std::chrono::seconds (RandomisationWindowTimeGenerator ()),
91
+ [this ] () { return mStop ; } );
93
92
94
93
mUploaderState = SiftUploader::UploaderState::COLLECT_ANALYTICS;
95
94
}
@@ -122,7 +121,7 @@ namespace WPEFramework
122
121
}
123
122
else
124
123
{
125
- LOGINFO ( " No events collected from analytics Store " );
124
+ // No events to be sent, so go back to the randomisation window wait state
126
125
mUploaderState = UploaderState::RANDOMISATION_WINDOW_WAIT_STATE;
127
126
break ;
128
127
}
@@ -135,7 +134,7 @@ namespace WPEFramework
135
134
136
135
std::string resp;
137
136
138
- uint32_t respcode;
137
+ long respcode;
139
138
140
139
LOGINFO (" Posting analytics events: %s" , jsonEventPayload.c_str ());
141
140
@@ -159,18 +158,18 @@ namespace WPEFramework
159
158
{
160
159
LOGERR (" No collected events to be deleted" );
161
160
}
162
-
163
- mUploaderState = UploaderState::RANDOMISATION_WINDOW_WAIT_STATE;
164
161
}
165
162
else
166
163
{
167
- LOGERR (" Failed to post analytics event - respcode: %u , response: %s" , respcode, resp.c_str ());
164
+ LOGERR (" Failed to post analytics event - respcode: %ld , response: %s" , respcode, resp.c_str ());
168
165
}
169
166
170
167
if (!resp.empty ())
171
168
{
172
169
validateResponse (resp, collectedEvents);
173
170
}
171
+
172
+ mUploaderState = UploaderState::RANDOMISATION_WINDOW_WAIT_STATE;
174
173
}
175
174
break ;
176
175
@@ -180,36 +179,43 @@ namespace WPEFramework
180
179
}
181
180
break ;
182
181
}
182
+
183
+ std::unique_lock<std::mutex> lock ( mMutex );
184
+ if (mStop )
185
+ {
186
+ LOGINFO (" SiftUploader Run exit" );
187
+ return ;
188
+ }
183
189
}
184
190
}
185
191
186
192
bool SiftUploader::PerformWaitIfRetryNeeded ()
187
193
{
188
194
bool retry = false ;
189
195
190
- if (mCurrentRetryCount = = mMaxRetries )
196
+ if (mCurrentRetryCount > = mMaxRetries )
191
197
{
192
198
mCurrentRetryCount = 0 ;
193
199
}
194
200
else
195
201
{
196
202
static auto retryTime = mMinRetryPeriod ;
197
203
198
- if (retryTime > mMaxRetryPeriod )
204
+ if (retryTime >= mMaxRetryPeriod )
199
205
{
200
206
retryTime = mMinRetryPeriod ;
201
207
}
202
208
203
209
LOGINFO (" Failed posting retry wait time: %d seconds, with retries completed: %d" , retryTime, mCurrentRetryCount );
204
210
205
211
std::unique_lock<std::mutex> lock ( mMutex );
206
- mCondition .wait_for (lock, std::chrono::seconds (retryTime),
207
- [this ] () { return mStop ; } );
208
212
if (mStop )
209
213
{
210
214
// return immediately if stop is set
211
215
return false ;
212
216
}
217
+ mCondition .wait_for (lock, std::chrono::seconds (retryTime),
218
+ [this ] () { return mStop ; } );
213
219
214
220
if (retryTime < mMaxRetryPeriod )
215
221
{
@@ -218,7 +224,7 @@ namespace WPEFramework
218
224
219
225
++mCurrentRetryCount ;
220
226
221
- retry = true ;
227
+ retry = ! mStop ;
222
228
}
223
229
224
230
return retry;
@@ -264,10 +270,6 @@ namespace WPEFramework
264
270
LOGINFO (" Got no events from the analytics store" );
265
271
}
266
272
}
267
- else
268
- {
269
- LOGINFO (" No events available to be collected from analytics store" );
270
- }
271
273
272
274
return success;
273
275
}
@@ -374,11 +376,11 @@ namespace WPEFramework
374
376
return size * nmemb;
375
377
}
376
378
377
- uint32_t SiftUploader::PostJson (const std::string &url, const std::string &json, std::string &response)
379
+ long SiftUploader::PostJson (const std::string &url, const std::string &json, std::string &response)
378
380
{
379
381
CURL *curl;
380
382
CURLcode res;
381
- uint32_t retHttpCode = 0 ;
383
+ long retHttpCode = 0 ;
382
384
383
385
if (url.empty () || json.empty ())
384
386
{
0 commit comments