Add basic plugin infrastructure

Registered by Kostja Osipov

Provide a way to write tarantool plugins.
The server loads all plugins at start.

Plugin declaration structure looks like:

typedef void(*plugin_init_cb)(struct lua_State *L);
typedef void(*plugin_stat_cb)(struct tbuf *out);

struct tarantool_plugin {
        int api_version;
        int version;
        const char *name;
        plugin_init_cb init;
        plugin_stat_cb stat;
        struct rlist list;
};

#define DECLARE_PLUGIN(name, version, init, stat) \
        extern "C" { \
                struct tarantool_plugin plugin_meta = { \
                        PLUGIN_API_VERSION, \
                        version, \
                        name, \
                        init, \
                        stat, \
                        { NULL, NULL } \
                }; \
        }

DECLARE_PLUGIN(PLUGIN_NAME, PLUGIN_VERSION, init, NULL);

Blueprint information

Status:
Complete
Approver:
Kostja Osipov
Priority:
Undefined
Drafter:
Roman Tsisyk
Direction:
Needs approval
Assignee:
UNera
Definition:
Approved
Series goal:
Accepted for 1.5
Implementation:
Implemented
Milestone target:
milestone icon 1.5.1
Started by
Kostja Osipov
Completed by
Kostja Osipov

Related branches

Sprints

Whiteboard

(?)

Work Items

This blueprint contains Public information 
Everyone can see this information.

Subscribers

No subscribers.