Mercurial > irccd
diff doc/examples/template-plugin.cpp @ 136:01df93b56dde
Irccd: implement native plugins, #502
- Add brand new DynlibPlugin to load shared libraries as plugins,
- Add a template as documentation.
author | David Demelier <markand@malikania.fr> |
---|---|
date | Wed, 18 May 2016 22:31:24 +0200 |
parents | |
children | 6635b9187d71 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/doc/examples/template-plugin.cpp Wed May 18 22:31:24 2016 +0200 @@ -0,0 +1,229 @@ +/* + * This example file show how to fill irccd callbacks for a native plugin. + * + * All of the defined callbacks are optional and may be removed. + */ + +#include <iostream> + +#include <irccd/plugin-dynlib.hpp> // (in irccd_onReload, irccd_onLoad and irccd_onUnload) +#include <irccd/server.hpp> +#include <irccd/util.hpp> // for util::join (in irccd_onNames) + +using namespace irccd; + +extern "C" { + +/* --- onCommand ---------------------------------------------------- */ + +void irccd_onCommand(Irccd &, + const std::shared_ptr<Server> &server, + const std::string &origin, + const std::string &channel, + const std::string &message) +{ + std::cout << "onCommand: server=" << server->name() + << ", origin=" << origin + << ", channel=" << channel + << ", message=" << message << std::endl; +} + +/* --- onConnect ---------------------------------------------------- */ + +void irccd_onConnect(Irccd &, const std::shared_ptr<Server> &server) +{ + std::cout << "onConnect: server=" << server->name() << std::endl; +} + +/* --- onChannelMode ------------------------------------------------ */ + +void irccd_onChannelMode(Irccd &, + const std::shared_ptr<Server> &server, + const std::string &origin, + const std::string &channel, + const std::string &mode, + const std::string &arg) +{ + std::cout << "onChannelMode: server=" << server->name() + << ", origin=" << origin + << ", channel=" << channel + << ", mode=" << mode + << ", arg=" << arg << std::endl; +} + +/* --- onChannelNotice ---------------------------------------------- */ + +void irccd_onChannelNotice(Irccd &irccd, + const std::shared_ptr<Server> &server, + const std::string &origin, + const std::string &channel, + const std::string ¬ice) +{ + std::cout << "onChannelNotice: server=" << server->name() + << ", origin=" << origin + << ", channel=" << channel + << ", notice=" << notice << std::endl; +} + +/* --- onInvite ----------------------------------------------------- */ + +void irccd_onInvite(Irccd &irccd, const std::shared_ptr<Server> &server, const std::string &origin, const std::string &channel) +{ + std::cout << "onInvite: server=" << server->name() << ", origin=" << origin << ", channel=" << channel << std::endl; +} + +/* --- onJoin ------------------------------------------------------- */ + +void irccd_onJoin(Irccd &irccd, const std::shared_ptr<Server> &server, const std::string &origin, const std::string &channel) +{ + std::cout << "onJoin: server=" << server->name() << ", origin=" << origin << ", channel=" << channel << std::endl; +} + +/* --- onKick ------------------------------------------------------- */ + +void irccd_onKick(Irccd &irccd, + const std::shared_ptr<Server> &server, + const std::string &origin, + const std::string &channel, + const std::string &target, + const std::string &reason) +{ + std::cout << "onKick: server=" << server->name() + << ", origin=" << origin + << ", channel=" << channel + << ", target=" << channel + << ", reason=" << reason << std::endl; +} + +/* --- onLoad ------------------------------------------------------- */ + +void irccd_onLoad(Irccd &, DynlibPlugin &plugin) +{ + std::cout << "onLoad: plugin=" << plugin.name() << std::endl; +} + +/* --- onMessage ---------------------------------------------------- */ + +void irccd_onMessage(Irccd &irccd, + const std::shared_ptr<Server> &server, + const std::string &origin, + const std::string &channel, + const std::string &message) +{ + std::cout << "onMessage: server=" << server->name() + << ", origin=" << origin + << ", channel=" << channel + << ", message=" << message << std::endl; +} + +/* --- onMe --------------------------------------------------------- */ + +void irccd_onMe(Irccd &irccd, + const std::shared_ptr<Server> &server, + const std::string &origin, + const std::string &channel, + const std::string &message) +{ + std::cout << "onMe: server=" << server->name() + << ", origin=" << origin + << ", channel=" << channel + << ", message=" << message << std::endl; +} + +/* --- onMode ------------------------------------------------------- */ + +void irccd_onMode(Irccd &irccd, const std::shared_ptr<Server> &server, const std::string &origin, const std::string &mode) +{ + std::cout << "onMode: server=" << server->name() << ", origin=" << origin << ", mode=" << mode << std::endl; +} + +/* --- onNames ------------------------------------------------------ */ + +void irccd_onNames(Irccd &irccd, + const std::shared_ptr<Server> &server, + const std::string &channel, + const std::vector<std::string> &list) +{ + std::cout << "onNames: server=" << server->name() + << ", channel=" << channel + << ", list=" << util::join(list.begin(), list.end(), ", ") << std::endl; +} + +/* --- onNick ------------------------------------------------------- */ + +void irccd_onNick(Irccd &irccd, const std::shared_ptr<Server> &server, const std::string &origin, const std::string &nick) +{ + std::cout << "onNick: server=" << server->name() << ", origin=" << origin << ", nick=" << nick << std::endl; +} + +/* --- onNotice ----------------------------------------------------- */ + +void irccd_onNotice(Irccd &irccd, const std::shared_ptr<Server> &server, const std::string &origin, const std::string ¬ice) +{ + std::cout << "onNotice: server=" << server->name() << ", origin=" << origin << ", notice=" << notice << std::endl; +} + +/* --- onPart ------------------------------------------------------- */ + +void irccd_onPart(Irccd &irccd, + const std::shared_ptr<Server> &server, + const std::string &origin, + const std::string &channel, + const std::string &reason) +{ + std::cout << "onPart: server=" << server->name() + << ", origin=" << origin + << ", channel=" << channel + << ", reason=" << reason << std::endl; +} + +/* --- onQuery ------------------------------------------------------ */ + +void irccd_onQuery(Irccd &, const std::shared_ptr<Server> &server, const std::string &origin, const std::string &message) +{ + std::cout << "onQuery: server=" << server->name() << ", origin=" << origin << ", message=" << message << std::endl; +} + +/* --- onQueryCommand ----------------------------------------------- */ + +void irccd_onQueryCommand(Irccd &, const std::shared_ptr<Server> &server, const std::string &origin, const std::string &message) +{ + std::cout << "onQueryCommand: server=" << server->name() << ", origin=" << origin << ", message=" << message << std::endl; +} + +/* --- onReload ----------------------------------------------------- */ + +void irccd_onReload(Irccd &irccd, DynlibPlugin &plugin) +{ + std::cout << "onReload: plugin=" << plugin.name() << std::endl; +} + +/* --- onTopic ------------------------------------------------------ */ + +void irccd_onTopic(Irccd &irccd, + const std::shared_ptr<Server> &server, + const std::string &origin, + const std::string &channel, + const std::string &topic) +{ + std::cout << "onTopic: server=" << server->name() + << ", origin=" << origin + << ", channel=" << channel + << ", topic=" << topic << std::endl; +} + +/* --- onUnload ----------------------------------------------------- */ + +void irccd_onUnload(Irccd &irccd, DynlibPlugin &plugin) +{ + std::cout << "onUnload: plugin=" << plugin.name() << std::endl; +} + +/* --- onWhois ------------------------------------------------------ */ + +void irccd_onWhois(Irccd &irccd, const std::shared_ptr<Server> &server, const ServerWhois &info) +{ + std::cout << "onWhois: server=" << server->name() << ", info-for=" << info.nick << std::endl; +} + +} // !C