Mercurial > irccd
view doc/examples/template-plugin.cpp @ 757:97b356010785
Irccd: create (command|jsapi)::registry
Make two list of constructor functions to initialize all command and all
Javascript modules to avoid duplicating efforts in case of change.
While here, update test fixtures to load all of them for simplicity.
author | David Demelier <markand@malikania.fr> |
---|---|
date | Mon, 06 Aug 2018 21:27:00 +0200 |
parents | 6635b9187d71 |
children |
line wrap: on
line source
/* * 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