#include <sys/types.h>
#include <stdarg.h>
#include "dynstuff.h"
#include "sessions.h"
Idź do kodu źródłowego tego pliku.
|
#define | EKG_ABI_VER 4921 |
|
#define | EXPORT __attribute__ ((visibility("default"))) |
|
#define | PLUGIN_VAR_ADD(name, type, value, secret, notify) { name, value, secret, type, notify } |
|
#define | PLUGIN_VAR_END() { NULL, NULL, 0, -1, NULL } |
|
#define | PLUGIN_CHECK_VER(name) { if (!plugin_abi_version(EKG_ABI_VER, name)) return -1; } |
|
#define | PLUGIN_DEFINE(x, y, z) |
|
#define | QUERY(x) int x(void *data, va_list ap) |
|
#define | WATCHER(x) int x(int type, int fd, watch_type_t watch, void *data) |
|
#define | WATCHER_LINE(x) int x(int type, int fd, const char *watch, void *data) |
|
#define | watch_add_line(p, fd, type, handler, data) watch_add(p, fd, type, (watcher_handler_func_t *) (handler), data) |
|
|
enum | plugin_class_t {
PLUGIN_ANY = 0,
PLUGIN_GENERIC,
PLUGIN_PROTOCOL,
PLUGIN_UI,
PLUGIN_LOG,
PLUGIN_SCRIPTING,
PLUGIN_AUDIO,
PLUGIN_CODEC,
PLUGIN_CRYPT,
PLUGIN_ANY = 0,
PLUGIN_GENERIC,
PLUGIN_PROTOCOL,
PLUGIN_UI,
PLUGIN_LOG,
PLUGIN_SCRIPTING,
PLUGIN_AUDIO,
PLUGIN_CODEC,
PLUGIN_CRYPT
} |
|
enum | watch_type_t {
WATCH_NONE = 0,
WATCH_WRITE = 1,
WATCH_READ = 2,
WATCH_READ_LINE = 4,
WATCH_WRITE_LINE = 8,
WATCH_NONE = 0,
WATCH_WRITE = 1,
WATCH_READ = 2,
WATCH_READ_LINE = 4,
WATCH_WRITE_LINE = 8
} |
|
|
int | plugin_abi_version (int plugin_abi_ver, const char *plugin_name) |
|
void | plugin_load (const char *name) |
|
void | plugin_unload (plugin_t *p) |
|
plugin_t * | remote_plugin_load (const char *name, int prio) |
|
int | plugin_register (plugin_t *, int prio) |
|
int | plugin_unregister (plugin_t *) |
|
void | remote_plugins_destroy () |
|
plugin_t * | plugin_find (const char *name) |
|
query_t * | query_connect_id (plugin_t *plugin, const int id, query_handler_func_t *handler, void *data) |
|
int | query_emit_id (plugin_t *, const int,...) |
|
void | queries_destroy () |
|
int | watch_write (watch_t *w, const char *buf, int len) |
|
void | watch_free (watch_t *w) |
|
watch_t * | watch_add (plugin_t *plugin, int fd, watch_type_t type, watcher_handler_func_t *handler, void *data) |
|
int | watch_remove (plugin_t *plugin, int fd, watch_type_t type) |
|
void | watch_handle (watch_t *w) |
|
void | watches_destroy () |
|
#define PLUGIN_DEFINE |
( |
|
x, |
|
|
|
y, |
|
|
|
z |
|
) |
| |
Wartość:static int x##_plugin_destroy(); \
.pclass = y, \
.destroy = x##_plugin_destroy, \
.theme_init = z \
}
#define PLUGIN_VAR_ADD |
( |
|
name, |
|
|
|
type, |
|
|
|
value, |
|
|
|
secret, |
|
|
|
notify |
|
) |
| { name, value, secret, type, notify } |
#define QUERY |
( |
|
x | ) |
int x(void *data, va_list ap) |
#define WATCHER_LINE |
( |
|
x | ) |
int x(int type, int fd, const char *watch, void *data) |
typedef int(* plugin_destroy_func_t)(void) |
typedef int(* plugin_theme_init_func_t)(void) |
typedef int query_handler_func_t(void *data, va_list ap) |
Wartości wyliczeń |
---|
PLUGIN_ANY |
|
PLUGIN_GENERIC |
|
PLUGIN_PROTOCOL |
|
PLUGIN_UI |
|
PLUGIN_LOG |
|
PLUGIN_SCRIPTING |
|
PLUGIN_AUDIO |
|
PLUGIN_CODEC |
|
PLUGIN_CRYPT |
|
PLUGIN_ANY |
|
PLUGIN_GENERIC |
|
PLUGIN_PROTOCOL |
|
PLUGIN_UI |
|
PLUGIN_LOG |
|
PLUGIN_SCRIPTING |
|
PLUGIN_AUDIO |
|
PLUGIN_CODEC |
|
PLUGIN_CRYPT |
|
Wartości wyliczeń |
---|
WATCH_NONE |
|
WATCH_WRITE |
|
WATCH_READ |
|
WATCH_READ_LINE |
|
WATCH_WRITE_LINE |
|
WATCH_NONE |
|
WATCH_WRITE |
|
WATCH_READ |
|
WATCH_READ_LINE |
|
WATCH_WRITE_LINE |
|
int plugin_abi_version |
( |
int |
plugin_abi_ver, |
|
|
const char * |
plugin_name |
|
) |
| |
plugin_find()
Find plugin by name
- Parametry
-
- Zwraca
- plugin_t with given name, or NULL if not found.
void plugin_load |
( |
const char * |
name | ) |
|
int plugin_register |
( |
plugin_t * |
, |
|
|
int |
prio |
|
) |
| |
void remote_plugins_destroy |
( |
| ) |
|
watch_add()
Create new watch_t and add it on the beginning of watches list.
- Parametry
-
plugin | - plugin |
fd | - fd to watch data for. |
type | - type of watch. |
handler | - handler of watch. |
data | - data which be passed to handler. |
- Zwraca
- Created watch_t. if type is either WATCH_READ_LINE or WATCH_WRITE_LINE than also allocate memory for buffer
watch_handle()
Handler for watches with type: WATCH_READ or WATCH_WRITE
Mark watch with w->removed = -1, to indicate that watch is in use. And it shouldn't be executed again. [If watch can or even must be executed twice from ekg_loop() than you must change w->removed by yourself.]
If handler of watch return -1 or watch was removed inside function [by watch_remove() or watch_free()]. Than it'll be removed.
ELSE Update w->started field to current time.
- Parametry
-
- Do zrobienia:
- We only check for w->removed == -1, maybe instead change it to: w->removed != 0