#include <time.h>
#include "utc-stc-common.h"
-gboolean stc_callback_timeout(gpointer data)
-{
- g_nCallbackRet = STC_ERROR_INVALID_OPERATION;
- PRINT_RETURN("stc_callback_timeout", g_nCallbackRet);
- QUIT_GMAIN_LOOP;
- return false;
-}
-
const char *stc_get_error(int err)
{
switch (err) {
curr.tm_hour = hour;
curr.tm_min = min;
return mktime(&curr);
-}
-
-stc_error_e stc_get_all_stats_info(stc_stats_info_e e)
-{
- int ret = STC_ERROR_NONE;
- time_t from, to;
-
- ret = stc_stats_rule_set_app_id(g_hRule, STC_ALL_APP);
- CHECK_RETURN("stc_stats_rule_set_app_id", ret, STC_ERROR_NONE);
-
- from = stc_make_time(2000, 1, 1, 1, 1);
- time(&to);
- ret = stc_stats_rule_set_time_interval(g_hRule, from, to);
- CHECK_RETURN("stc_stats_rule_set_time_interval", ret, STC_ERROR_NONE);
-
- g_nCallbackRet = STC_ERROR_OPERATION_FAILED;
- g_eStatsInfo = e;
- ret = stc_get_all_stats(g_hSTC, g_hRule, stc_get_stats_finished_cb, NULL);
- CHECK_RETURN("stc_get_all_stats", ret, STC_ERROR_NONE);
- RUN_GMAIN_LOOP;
- CHECK_RETURN(CALLBACK_RETURN, g_nCallbackRet, STC_ERROR_NONE);
-
- return STC_ERROR_NONE;
-}
-
-void stc_get_stats_finished_cb(stc_error_e result,
- stc_all_stats_info_h info, void *user_data)
-{
- g_nCallbackRet = STC_ERROR_NONE;
-
- int ret = STC_ERROR_NONE;
-
- switch (g_eStatsInfo) {
- case STATS_INFO_GET_ALL:
- {
- PRINT_RETURN("stc_get_all_stats", result);
- }
- break;
- case STATS_INFO_FOREACH_ALL:
- {
- ret = stc_foreach_all_stats(info, stc_stats_info_callback, user_data);
- PRINT_RETURN("stc_foreach_all_stats", ret);
- }
- break;
- default:
- PRINT_RETURN("stc_get_stats_finished_cb", ret);
- break;
- }
-
- QUIT_GMAIN_LOOP;
-}
-
-stc_error_e stc_get_stats_info(stc_stats_info_e e)
-{
- int ret = STC_ERROR_NONE;
- time_t from, to;
-
- ret = stc_stats_rule_set_app_id(g_hRule, STC_ALL_APP);
- CHECK_RETURN("stc_stats_rule_set_app_id", ret, STC_ERROR_NONE);
-
- from = stc_make_time(2000, 1, 1, 1, 1);
- time(&to);
- ret = stc_stats_rule_set_time_interval(g_hRule, from, to);
- CHECK_RETURN("stc_stats_rule_set_time_interval", ret, STC_ERROR_NONE);
-
- g_nCallbackRet = STC_ERROR_NONE;
- g_eStatsInfo = e;
- ret = stc_get_stats(g_hSTC, g_hRule, stc_stats_info_callback, NULL);
- CHECK_RETURN("stc_get_stats", ret, STC_ERROR_NONE);
- RUN_GMAIN_LOOP;
- CHECK_RETURN(CALLBACK_RETURN, g_nCallbackRet, STC_ERROR_NONE);
-
- return STC_ERROR_NONE;
-}
-
-stc_error_e stc_foreach_stats_info(stc_stats_info_e e)
-{
- int ret = STC_ERROR_NONE;
- time_t from, to;
-
- ret = stc_stats_rule_set_app_id(g_hRule, STC_ALL_APP);
- CHECK_RETURN("stc_stats_rule_set_app_id", ret, STC_ERROR_NONE);
-
- from = stc_make_time(2000, 1, 1, 1, 1);
- time(&to);
- ret = stc_stats_rule_set_time_interval(g_hRule, from, to);
- CHECK_RETURN("stc_stats_rule_set_time_interval", ret, STC_ERROR_NONE);
-
- g_nCallbackRet = STC_ERROR_NONE;
- g_eStatsInfo = e;
- ret = stc_foreach_stats(g_hSTC, g_hRule, stc_stats_info_callback, NULL);
- CHECK_RETURN("stc_foreach_stats", ret, STC_ERROR_NONE);
- RUN_GMAIN_LOOP;
- CHECK_RETURN(CALLBACK_RETURN, g_nCallbackRet, STC_ERROR_NONE);
-
- return STC_ERROR_NONE;
-}
-
-stc_callback_ret_e stc_stats_info_callback(stc_error_e result,
- stc_stats_info_h info, void *user_data)
-{
- g_nCallbackRet = STC_ERROR_NONE;
-
- int ret = STC_ERROR_NONE;
-
- switch(g_eStatsInfo) {
- case STATS_INFO_APPID:
- {
- char *app_id;
- ret = stc_stats_info_get_app_id(info, &app_id);
- PRINT_RETURN("stc_stats_info_get_app_id", ret);
- }
- break;
- case STATS_INFO_IFACE_NAME:
- {
- char *iface_name;
- ret = stc_stats_info_get_iface_name(info, &iface_name);
- PRINT_RETURN("stc_stats_info_get_iface_name", ret);
- }
- break;
- case STATS_INFO_TIME_INTERVAL:
- {
- time_t from;
- time_t to;
- ret = stc_stats_info_get_time_interval(info, &from, &to);
- PRINT_RETURN("stc_stats_info_get_time_interval", ret);
- }
- break;
- case STATS_INFO_IFACE_TYPE:
- {
- stc_iface_type_e iface_type;
- ret = stc_stats_info_get_iface_type(info, &iface_type);
- PRINT_RETURN("stc_stats_info_get_iface_type", ret);
- }
- break;
- case STATS_INFO_COUNTER:
- {
- int64_t incoming;
- int64_t outgoing;
- ret = stc_stats_info_get_counter(info, &incoming, &outgoing);
- PRINT_RETURN("stc_stats_info_get_counter", ret);
- }
- break;
- case STATS_INFO_ROAMING_TYPE:
- {
- stc_roaming_type_e roaming;
- ret = stc_stats_info_get_roaming_type(info, &roaming);
- PRINT_RETURN("stc_stats_info_get_roaming_type", ret);
- }
- break;
- case STATS_INFO_PROTOCOL_TYPE:
- {
- stc_protocol_type_e prototype;
- ret = stc_stats_info_get_protocol_type(info, &prototype);
- PRINT_RETURN("stc_stats_info_get_protocol_type", ret);
- }
- break;
- case STATS_INFO_PROCESS_STATE:
- {
- stc_process_state_e procstate;
- ret = stc_stats_info_get_process_state(info, &procstate);
- PRINT_RETURN("stc_stats_info_get_process_state", ret);
- }
- break;
- case STATS_INFO_CLONE:
- case STATS_INFO_DESTROY:
- {
- stc_stats_info_h cloned = NULL;
- ret = stc_stats_info_clone(info, &cloned);
- PRINT_RETURN("stc_stats_info_clone", ret);
- if (ret == STC_ERROR_NONE) {
- ret = stc_stats_info_destroy(cloned);
- PRINT_RETURN("stc_stats_info_destroy", ret);
- }
- }
- break;
- case STATS_INFO_FOREACH_ALL:
- {
- PRINT_RETURN("stc_foreach_all_stats", ret);
- }
- break;
- default:
- PRINT_RETURN("stc_stats_info_callback", ret);
- break;
- }
-
- QUIT_GMAIN_LOOP;
-
- return STC_CALLBACK_CANCEL;
-}
-
+}
\ No newline at end of file
STATS_INFO_FOREACH_ALL
} stc_stats_info_e;
-GMainLoop *g_pMainLoop;
-guint g_nTimeoutId;
-int g_nCallbackRet;
-
-bool g_bFeatureSTC;
-
-stc_h g_hSTC;
-stc_stats_rule_h g_hRule;
-stc_error_e g_nCallbackRet;
-stc_stats_info_e g_eStatsInfo;
-
-#define RUN_GMAIN_LOOP {\
- g_pMainLoop = g_main_loop_new(NULL, false);\
- g_nTimeoutId = g_timeout_add(GMAINTIMEOUT, stc_callback_timeout, g_pMainLoop);\
- if (COMMON_DEBUG) {\
- PRINT_LOG(DLOG_INFO, "NativeTCT", "[Line:%5d][%s] Run mainloop [%p]",\
- __LINE__, __FUNCTION__, g_pMainLoop);\
- }\
- g_main_loop_run(g_pMainLoop);\
- g_source_remove(g_nTimeoutId);\
- g_pMainLoop = NULL;\
-}
-
-#define QUIT_GMAIN_LOOP {\
- if (COMMON_DEBUG) {\
- PRINT_LOG(DLOG_INFO, "NativeTCT", "[Line:%5d][%s] Quit mainloop [%p]",\
- __LINE__, __FUNCTION__, g_pMainLoop);\
- }\
- g_main_loop_quit(g_pMainLoop);\
-}
-
#define FREE_MEMORY(var) {\
if(var != NULL) {\
g_free(var);\
}\
}
-gboolean stc_callback_timeout(gpointer data);
const char *stc_get_error(int err);
bool stc_check_feature_supported(char *key);
time_t stc_make_time(int year, int mon, int day, int hour, int min);
-stc_error_e stc_get_all_stats_info(stc_stats_info_e e);
-void stc_get_stats_finished_cb(stc_error_e result,
- stc_all_stats_info_h info, void *user_data);
-stc_error_e stc_get_stats_info(stc_stats_info_e e);
-stc_error_e stc_foreach_stats_info(stc_stats_info_e e);
-stc_callback_ret_e stc_stats_info_callback(stc_error_e result,
- stc_stats_info_h info, void *user_data);
-
#endif /* _STC_COMMON_H_ */
//& set: Stc
+static stc_h g_hSTC;
+static bool g_bFeatureSTC;
+static stc_stats_info_e g_eStatsInfo;
+static stc_error_e g_nCallbackRet;
+static stc_stats_rule_h g_hRule;
+
+static GMainLoop *g_pMainLoop;
+static guint g_nTimeoutId;
+
+#define RUN_GMAIN_LOOP {\
+ g_pMainLoop = g_main_loop_new(NULL, false);\
+ g_nTimeoutId = g_timeout_add(GMAINTIMEOUT, stc_callback_timeout, g_pMainLoop);\
+ if (COMMON_DEBUG) {\
+ PRINT_LOG(DLOG_INFO, "NativeTCT", "[Line:%5d][%s] Run mainloop [%p]",\
+ __LINE__, __FUNCTION__, g_pMainLoop);\
+ }\
+ g_main_loop_run(g_pMainLoop);\
+ g_source_remove(g_nTimeoutId);\
+ g_pMainLoop = NULL;\
+}
+
+#define QUIT_GMAIN_LOOP {\
+ if (COMMON_DEBUG) {\
+ PRINT_LOG(DLOG_INFO, "NativeTCT", "[Line:%5d][%s] Quit mainloop [%p]",\
+ __LINE__, __FUNCTION__, g_pMainLoop);\
+ }\
+ g_main_loop_quit(g_pMainLoop);\
+}
+
+gboolean stc_callback_timeout(gpointer data)
+{
+ g_nCallbackRet = STC_ERROR_INVALID_OPERATION;
+ PRINT_RETURN("stc_callback_timeout", g_nCallbackRet);
+ QUIT_GMAIN_LOOP;
+ return false;
+}
+
+stc_callback_ret_e stc_stats_info_callback(stc_error_e result,
+ stc_stats_info_h info, void *user_data)
+{
+ g_nCallbackRet = STC_ERROR_NONE;
+
+ int ret = STC_ERROR_NONE;
+
+ switch(g_eStatsInfo) {
+ case STATS_INFO_APPID:
+ {
+ char *app_id;
+ ret = stc_stats_info_get_app_id(info, &app_id);
+ PRINT_RETURN("stc_stats_info_get_app_id", ret);
+ }
+ break;
+ case STATS_INFO_IFACE_NAME:
+ {
+ char *iface_name;
+ ret = stc_stats_info_get_iface_name(info, &iface_name);
+ PRINT_RETURN("stc_stats_info_get_iface_name", ret);
+ }
+ break;
+ case STATS_INFO_TIME_INTERVAL:
+ {
+ time_t from;
+ time_t to;
+ ret = stc_stats_info_get_time_interval(info, &from, &to);
+ PRINT_RETURN("stc_stats_info_get_time_interval", ret);
+ }
+ break;
+ case STATS_INFO_IFACE_TYPE:
+ {
+ stc_iface_type_e iface_type;
+ ret = stc_stats_info_get_iface_type(info, &iface_type);
+ PRINT_RETURN("stc_stats_info_get_iface_type", ret);
+ }
+ break;
+ case STATS_INFO_COUNTER:
+ {
+ int64_t incoming;
+ int64_t outgoing;
+ ret = stc_stats_info_get_counter(info, &incoming, &outgoing);
+ PRINT_RETURN("stc_stats_info_get_counter", ret);
+ }
+ break;
+ case STATS_INFO_ROAMING_TYPE:
+ {
+ stc_roaming_type_e roaming;
+ ret = stc_stats_info_get_roaming_type(info, &roaming);
+ PRINT_RETURN("stc_stats_info_get_roaming_type", ret);
+ }
+ break;
+ case STATS_INFO_PROTOCOL_TYPE:
+ {
+ stc_protocol_type_e prototype;
+ ret = stc_stats_info_get_protocol_type(info, &prototype);
+ PRINT_RETURN("stc_stats_info_get_protocol_type", ret);
+ }
+ break;
+ case STATS_INFO_PROCESS_STATE:
+ {
+ stc_process_state_e procstate;
+ ret = stc_stats_info_get_process_state(info, &procstate);
+ PRINT_RETURN("stc_stats_info_get_process_state", ret);
+ }
+ break;
+ case STATS_INFO_CLONE:
+ case STATS_INFO_DESTROY:
+ {
+ stc_stats_info_h cloned = NULL;
+ ret = stc_stats_info_clone(info, &cloned);
+ PRINT_RETURN("stc_stats_info_clone", ret);
+ if (ret == STC_ERROR_NONE) {
+ ret = stc_stats_info_destroy(cloned);
+ PRINT_RETURN("stc_stats_info_destroy", ret);
+ }
+ }
+ break;
+ case STATS_INFO_FOREACH_ALL:
+ {
+ PRINT_RETURN("stc_foreach_all_stats", ret);
+ }
+ break;
+ default:
+ PRINT_RETURN("stc_stats_info_callback", ret);
+ break;
+ }
+
+ QUIT_GMAIN_LOOP;
+
+ return STC_CALLBACK_CANCEL;
+}
+
+void stc_get_stats_finished_cb(stc_error_e result,
+ stc_all_stats_info_h info, void *user_data)
+{
+ g_nCallbackRet = STC_ERROR_NONE;
+
+ int ret = STC_ERROR_NONE;
+
+ switch (g_eStatsInfo) {
+ case STATS_INFO_GET_ALL:
+ {
+ PRINT_RETURN("stc_get_all_stats", result);
+ }
+ break;
+ case STATS_INFO_FOREACH_ALL:
+ {
+ ret = stc_foreach_all_stats(info, stc_stats_info_callback, user_data);
+ PRINT_RETURN("stc_foreach_all_stats", ret);
+ }
+ break;
+ default:
+ PRINT_RETURN("stc_get_stats_finished_cb", ret);
+ break;
+ }
+
+ QUIT_GMAIN_LOOP;
+}
+
+stc_error_e stc_get_all_stats_info(stc_stats_info_e e)
+{
+ int ret = STC_ERROR_NONE;
+ time_t from, to;
+
+ ret = stc_stats_rule_set_app_id(g_hRule, STC_ALL_APP);
+ CHECK_RETURN("stc_stats_rule_set_app_id", ret, STC_ERROR_NONE);
+
+ from = stc_make_time(2000, 1, 1, 1, 1);
+ time(&to);
+ ret = stc_stats_rule_set_time_interval(g_hRule, from, to);
+ CHECK_RETURN("stc_stats_rule_set_time_interval", ret, STC_ERROR_NONE);
+
+ g_nCallbackRet = STC_ERROR_OPERATION_FAILED;
+ g_eStatsInfo = e;
+ ret = stc_get_all_stats(g_hSTC, g_hRule, stc_get_stats_finished_cb, NULL);
+ CHECK_RETURN("stc_get_all_stats", ret, STC_ERROR_NONE);
+ RUN_GMAIN_LOOP;
+ CHECK_RETURN(CALLBACK_RETURN, g_nCallbackRet, STC_ERROR_NONE);
+
+ return STC_ERROR_NONE;
+}
+
+stc_error_e stc_get_stats_info(stc_stats_info_e e)
+{
+ int ret = STC_ERROR_NONE;
+ time_t from, to;
+
+ ret = stc_stats_rule_set_app_id(g_hRule, STC_ALL_APP);
+ CHECK_RETURN("stc_stats_rule_set_app_id", ret, STC_ERROR_NONE);
+
+ from = stc_make_time(2000, 1, 1, 1, 1);
+ time(&to);
+ ret = stc_stats_rule_set_time_interval(g_hRule, from, to);
+ CHECK_RETURN("stc_stats_rule_set_time_interval", ret, STC_ERROR_NONE);
+
+ g_nCallbackRet = STC_ERROR_NONE;
+ g_eStatsInfo = e;
+ ret = stc_get_stats(g_hSTC, g_hRule, stc_stats_info_callback, NULL);
+ CHECK_RETURN("stc_get_stats", ret, STC_ERROR_NONE);
+ RUN_GMAIN_LOOP;
+ CHECK_RETURN(CALLBACK_RETURN, g_nCallbackRet, STC_ERROR_NONE);
+
+ return STC_ERROR_NONE;
+}
+
+stc_error_e stc_foreach_stats_info(stc_stats_info_e e)
+{
+ int ret = STC_ERROR_NONE;
+ time_t from, to;
+
+ ret = stc_stats_rule_set_app_id(g_hRule, STC_ALL_APP);
+ CHECK_RETURN("stc_stats_rule_set_app_id", ret, STC_ERROR_NONE);
+
+ from = stc_make_time(2000, 1, 1, 1, 1);
+ time(&to);
+ ret = stc_stats_rule_set_time_interval(g_hRule, from, to);
+ CHECK_RETURN("stc_stats_rule_set_time_interval", ret, STC_ERROR_NONE);
+
+ g_nCallbackRet = STC_ERROR_NONE;
+ g_eStatsInfo = e;
+ ret = stc_foreach_stats(g_hSTC, g_hRule, stc_stats_info_callback, NULL);
+ CHECK_RETURN("stc_foreach_stats", ret, STC_ERROR_NONE);
+ RUN_GMAIN_LOOP;
+ CHECK_RETURN(CALLBACK_RETURN, g_nCallbackRet, STC_ERROR_NONE);
+
+ return STC_ERROR_NONE;
+}
+
void utc_stc_startup(void)
{
int ret = STC_ERROR_NONE;