48 lines
1.7 KiB
C
48 lines
1.7 KiB
C
#ifndef _PLUGIN_H
|
|
#define _PLUGIN_H
|
|
|
|
#ifdef __cpluscplus
|
|
extern "C"
|
|
{
|
|
#endif
|
|
|
|
#include <stddef.h>
|
|
|
|
#include "session.h"
|
|
|
|
typedef int plugin_init_callback(void);
|
|
typedef void plugin_exit_callback(void);
|
|
typedef void plugin_entry_callback(struct stellar_session *session, enum session_state state, int thread_id, void **ctx);
|
|
|
|
/******************************************************************************
|
|
* Public API For Plugin
|
|
******************************************************************************/
|
|
|
|
/*
|
|
* The pm_session_dettach_me just sets the flag to disable this plugin and no longer call this event callback.
|
|
* Before calling pm_session_dettach_me, the current plugin must release related resources for the current session.
|
|
*/
|
|
void pm_session_dettach_me(struct stellar_session *session);
|
|
|
|
/*
|
|
* The current plugin(cb2) takes over the current session, the pm_session_take_over setting flag disables other plugins,
|
|
* and the current session does not call other plugins except for the SESSION_EVENT_CLOSING event.
|
|
*
|
|
* +-----+ +-----+ +-----+ +-----+
|
|
* Plugin runtime callback list: | cb1 |-->| cb2 |-->| cb3 |-->| cb4 |
|
|
* +-----+ +-----+ +-----+ +-----+
|
|
* /|\
|
|
* |
|
|
* plugin cb2 run pm_session_take_over
|
|
*
|
|
* A plugin(cb1/cb3/cb4) that is taken over, if the plugin was called before being taken over and has a registered SESSION_EVENT_CLOSING event,
|
|
* it will be called again when the SESSION_EVENT_CLOSING event comes. Otherwise, the plugin will not be called.
|
|
*/
|
|
void pm_session_take_over(struct stellar_session *session);
|
|
|
|
#ifdef __cpluscplus
|
|
}
|
|
#endif
|
|
|
|
#endif
|