plugin_manager adapt session_manager API and rewrite plugin_manger gtest
This commit is contained in:
@@ -20,74 +20,72 @@ char *safe_dup(const char *str)
|
||||
}
|
||||
|
||||
/******************************************************************************
|
||||
* Session Event Type
|
||||
* Session State
|
||||
******************************************************************************/
|
||||
|
||||
struct event_type_map
|
||||
struct session_state_map
|
||||
{
|
||||
const char *type_str;
|
||||
enum session_event_type type_int;
|
||||
const char *state_str;
|
||||
enum session_state state_int;
|
||||
};
|
||||
|
||||
static struct event_type_map evtype_map[] = {
|
||||
{"SESSION_EVENT_UNKNOWN", SESSION_EVENT_UNKNOWN},
|
||||
{"SESSION_EVENT_OPENING", SESSION_EVENT_OPENING},
|
||||
{"SESSION_EVENT_RAWPKT", SESSION_EVENT_RAWPKT},
|
||||
{"SESSION_EVENT_ORDPKT", SESSION_EVENT_ORDPKT},
|
||||
{"SESSION_EVENT_META", SESSION_EVENT_META},
|
||||
{"SESSION_EVENT_CLOSING", SESSION_EVENT_CLOSING},
|
||||
{"SESSION_EVENT_ALL", SESSION_EVENT_ALL},
|
||||
static struct session_state_map state_map[] = {
|
||||
{"SESSION_STATE_INVALID", SESSION_STATE_INVALID},
|
||||
{"SESSION_STATE_OPENING", SESSION_STATE_OPENING},
|
||||
{"SESSION_STATE_ACTIVE", SESSION_STATE_ACTIVE},
|
||||
{"SESSION_STATE_CLOSING", SESSION_STATE_CLOSING},
|
||||
{"SESSION_STATE_ALL", SESSION_STATE_ALL},
|
||||
};
|
||||
|
||||
enum session_event_type session_event_type_str2int(const char *evtype_str)
|
||||
enum session_state session_state_str2int(const char *state_str)
|
||||
{
|
||||
enum session_event_type evtype_int = SESSION_EVENT_UNKNOWN;
|
||||
int num = sizeof(evtype_map) / sizeof(evtype_map[0]);
|
||||
enum session_state state_int = SESSION_STATE_INVALID;
|
||||
int num = sizeof(state_map) / sizeof(state_map[0]);
|
||||
|
||||
char *buffer = safe_dup(evtype_str);
|
||||
char *buffer = safe_dup(state_str);
|
||||
char *token = strtok(buffer, "|");
|
||||
while (token)
|
||||
{
|
||||
for (int i = 0; i < num; i++)
|
||||
{
|
||||
if (strcmp(token, evtype_map[i].type_str) == 0)
|
||||
if (strcmp(token, state_map[i].state_str) == 0)
|
||||
{
|
||||
evtype_int = (enum session_event_type)(evtype_int | evtype_map[i].type_int);
|
||||
state_int = (enum session_state)(state_int | state_map[i].state_int);
|
||||
}
|
||||
}
|
||||
token = strtok(NULL, "|");
|
||||
}
|
||||
safe_free(buffer);
|
||||
|
||||
return evtype_int;
|
||||
return state_int;
|
||||
}
|
||||
|
||||
void session_event_type_int2str(enum session_event_type evtype_int, char *buffer, int size)
|
||||
void session_state_int2str(enum session_state state_int, char *buffer, int size)
|
||||
{
|
||||
int used = 0;
|
||||
int num = sizeof(evtype_map) / sizeof(evtype_map[0]);
|
||||
int num = sizeof(state_map) / sizeof(state_map[0]);
|
||||
|
||||
if (evtype_int == SESSION_EVENT_UNKNOWN)
|
||||
if (state_int == SESSION_STATE_INVALID)
|
||||
{
|
||||
snprintf(buffer, size, "%s", "SESSION_EVENT_UNKNOWN");
|
||||
snprintf(buffer, size, "%s", "SESSION_STATE_INVALID");
|
||||
return;
|
||||
}
|
||||
|
||||
if (evtype_int == SESSION_EVENT_ALL)
|
||||
if (state_int == SESSION_STATE_ALL)
|
||||
{
|
||||
snprintf(buffer, size, "%s", "SESSION_EVENT_ALL");
|
||||
snprintf(buffer, size, "%s", "SESSION_STATE_ALL");
|
||||
return;
|
||||
}
|
||||
|
||||
for (int i = 0; i < num; i++)
|
||||
{
|
||||
if (evtype_map[i].type_int & evtype_int)
|
||||
if (state_map[i].state_int & state_int)
|
||||
{
|
||||
if (evtype_map[i].type_int == SESSION_EVENT_ALL && evtype_int != SESSION_EVENT_ALL)
|
||||
if (state_map[i].state_int == SESSION_STATE_ALL && state_int != SESSION_STATE_ALL)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
used += snprintf(buffer + used, size - used, "%s|", evtype_map[i].type_str);
|
||||
used += snprintf(buffer + used, size - used, "%s|", state_map[i].state_str);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user