ttd_app_data *ttd_app_data_new(const char *project, const char *data);
void ttd_app_data_free(ttd_app_data *app_data);
+int ttd_app_data_set_retry_count(
+ ttd_app_data *app_data, unsigned int count);
const char *ttd_app_data_get_project_name(ttd_app_data *app_data);
const char *ttd_app_data_get_data(ttd_app_data *app_data);
+int ttd_app_data_get_retry_count(
+ ttd_app_data *app_data, unsigned int *count);
#endif /* __TT_DAEMON_APP_DATA_H__ */
struct __ttd_app_data {
char *p_name;
char *data;
+ unsigned int retry;
};
ttd_app_data *ttd_app_data_new(const char *project, const char *data)
g_free(app_data);
}
+int ttd_app_data_set_retry_count(
+ ttd_app_data *app_data, unsigned int count)
+{
+ retv_if(!app_data, -1);
+
+ app_data->retry = count;
+
+ return 0;
+}
+
const char *ttd_app_data_get_project_name(ttd_app_data *app_data)
{
retv_if(!app_data, NULL);
retv_if(!app_data, NULL);
return app_data->data;
}
+
+int ttd_app_data_get_retry_count(
+ ttd_app_data *app_data, unsigned int *count)
+{
+ retv_if(!app_data, -1);
+ retv_if(!count, -1);
+
+ *count = app_data->retry;
+ app_data->retry--;
+
+ return 0;
+}
#include "common-app-inf.h"
#include "ttd-app-data.h"
-#define POST_DATA_URL "http://apitest.showiot.xyz/api/data"
-#define __POST_THREAD_RUN 1
-#define __POST_THREAD_STOP 0
-#define __QUEUE_TIME_OUT 500
-
+#define TTD_APP_DATA_RETRY 2
#define APP_INF_INTROSPECTION \
"<node>" \
" <interface name='"TTD_APP_INF_BUS_INF"'>" \
char **strv = NULL;
int i;
- strv = g_strsplit(msg, "|", -1);
+ strv = g_strsplit(msg, TTD_APP_MSG_DELIMITER, -1);
for (i = 0; strv[i]; i++) {
if (strv[i][0] == '\0') {
g_free(strv[i]);
ttd_app_data *app_data = NULL;
_D("strv[%d] : %s", i, strv[i]);
app_data = ttd_app_data_new(data->project, strv[i]);
- if (app_data)
+ if (app_data) {
+ ttd_app_data_set_retry_count(app_data, TTD_APP_DATA_RETRY);
g_async_queue_push(data->data_queue, app_data);
- else
+ } else {
_E("failed to creat app_data for %s", strv[i]);
+ }
g_free(strv[i]);
}
}
ret = ttd_http_appdata_post(ttd_app_data_get_project_name(app_data),
ttd_app_data_get_data(app_data), &res_code);
- if (!ret) {
- _E("failed to post data, retry it - code[%ld]", res_code);
- g_async_queue_push_front(handle->data_queue, app_data);
- g_usleep((gulong)(G_USEC_PER_SEC/2));
- /* 0.5 sec sleep before retry it */
+ if (ret) {
+ unsigned int retry = 0;
+ ttd_app_data_get_retry_count(app_data, &retry);
+ _E("failed to post data - code[%ld], retry[%u]", res_code, retry);
+ if (retry) {
+ g_async_queue_push_front(handle->data_queue, app_data);
+ g_usleep((gulong)(G_USEC_PER_SEC/2));
+ /* 0.5 sec sleep before retry it */
+ } else {
+ _D("drop msg : %s", ttd_app_data_get_data(app_data));
+ ttd_app_data_free(app_data);
+ }
continue;
}