add deps directory
update inner include headers
This commit is contained in:
60
src/plugin_manager/plugin_manager.cpp
Normal file
60
src/plugin_manager/plugin_manager.cpp
Normal file
@@ -0,0 +1,60 @@
|
||||
#include "plugin.h"
|
||||
#include "session_manager.h"
|
||||
|
||||
#include "utils.h"
|
||||
|
||||
struct session_event_callback
|
||||
{
|
||||
const char *session_name;
|
||||
fn_session_event_callback callback;
|
||||
TAILQ_ENTRY(session_event_callback) session_event_cb_tq_entries;
|
||||
UT_hash_handle hh;
|
||||
};
|
||||
|
||||
TAILQ_HEAD(session_event_callback_list, session_event_callback);
|
||||
|
||||
struct session_event_callback_map
|
||||
{
|
||||
struct session_event_callback_list session_ev_cb_list;
|
||||
UT_hash_handle hh;
|
||||
};
|
||||
|
||||
struct plugin_manager
|
||||
{
|
||||
struct session_event_callback_list fixed_event_cbs[SESSION_TYPE_MAX];
|
||||
struct session_event_callback_map *session_ev_cb_map;
|
||||
};
|
||||
|
||||
struct plugin_manager g_plug_mgr;
|
||||
|
||||
void plugin_manager_dispatch(struct session_event *event)
|
||||
{
|
||||
struct session *s = container_of(event, struct session, cur_ev);
|
||||
struct session_event_callback_map *t_map;
|
||||
struct session_event_callback *session_ev_cb;
|
||||
HASH_FIND(hh, g_plug_mgr.session_ev_cb_map, s->name, strlen(s->name), t_map);
|
||||
if(!t_map) return;
|
||||
switch (s->state)
|
||||
{
|
||||
case SESSION_EVENT_OPENING:
|
||||
TAILQ_FOREACH(session_ev_cb, &t_map->session_ev_cb_list, session_event_cb_tq_entries)
|
||||
{
|
||||
struct session_event *ev = ALLOC(struct session_event, 1);
|
||||
ev->callback = session_ev_cb->callback;
|
||||
ev->callback(s, SESSION_EVENT_OPENING, NULL, NULL, 0, &ev->cb_pme);
|
||||
if(ev->state == 1)
|
||||
{
|
||||
TAILQ_INSERT_TAIL(&s->ev_list, ev, session_event_tq_entries);
|
||||
}
|
||||
else
|
||||
{
|
||||
FREE(&ev);// TODO;
|
||||
}
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
Reference in New Issue
Block a user