Mercurial > irccd
comparison 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 |
comparison
equal
deleted
inserted
replaced
135:6be066ad2329 | 136:01df93b56dde |
---|---|
1 /* | |
2 * This example file show how to fill irccd callbacks for a native plugin. | |
3 * | |
4 * All of the defined callbacks are optional and may be removed. | |
5 */ | |
6 | |
7 #include <iostream> | |
8 | |
9 #include <irccd/plugin-dynlib.hpp> // (in irccd_onReload, irccd_onLoad and irccd_onUnload) | |
10 #include <irccd/server.hpp> | |
11 #include <irccd/util.hpp> // for util::join (in irccd_onNames) | |
12 | |
13 using namespace irccd; | |
14 | |
15 extern "C" { | |
16 | |
17 /* --- onCommand ---------------------------------------------------- */ | |
18 | |
19 void irccd_onCommand(Irccd &, | |
20 const std::shared_ptr<Server> &server, | |
21 const std::string &origin, | |
22 const std::string &channel, | |
23 const std::string &message) | |
24 { | |
25 std::cout << "onCommand: server=" << server->name() | |
26 << ", origin=" << origin | |
27 << ", channel=" << channel | |
28 << ", message=" << message << std::endl; | |
29 } | |
30 | |
31 /* --- onConnect ---------------------------------------------------- */ | |
32 | |
33 void irccd_onConnect(Irccd &, const std::shared_ptr<Server> &server) | |
34 { | |
35 std::cout << "onConnect: server=" << server->name() << std::endl; | |
36 } | |
37 | |
38 /* --- onChannelMode ------------------------------------------------ */ | |
39 | |
40 void irccd_onChannelMode(Irccd &, | |
41 const std::shared_ptr<Server> &server, | |
42 const std::string &origin, | |
43 const std::string &channel, | |
44 const std::string &mode, | |
45 const std::string &arg) | |
46 { | |
47 std::cout << "onChannelMode: server=" << server->name() | |
48 << ", origin=" << origin | |
49 << ", channel=" << channel | |
50 << ", mode=" << mode | |
51 << ", arg=" << arg << std::endl; | |
52 } | |
53 | |
54 /* --- onChannelNotice ---------------------------------------------- */ | |
55 | |
56 void irccd_onChannelNotice(Irccd &irccd, | |
57 const std::shared_ptr<Server> &server, | |
58 const std::string &origin, | |
59 const std::string &channel, | |
60 const std::string ¬ice) | |
61 { | |
62 std::cout << "onChannelNotice: server=" << server->name() | |
63 << ", origin=" << origin | |
64 << ", channel=" << channel | |
65 << ", notice=" << notice << std::endl; | |
66 } | |
67 | |
68 /* --- onInvite ----------------------------------------------------- */ | |
69 | |
70 void irccd_onInvite(Irccd &irccd, const std::shared_ptr<Server> &server, const std::string &origin, const std::string &channel) | |
71 { | |
72 std::cout << "onInvite: server=" << server->name() << ", origin=" << origin << ", channel=" << channel << std::endl; | |
73 } | |
74 | |
75 /* --- onJoin ------------------------------------------------------- */ | |
76 | |
77 void irccd_onJoin(Irccd &irccd, const std::shared_ptr<Server> &server, const std::string &origin, const std::string &channel) | |
78 { | |
79 std::cout << "onJoin: server=" << server->name() << ", origin=" << origin << ", channel=" << channel << std::endl; | |
80 } | |
81 | |
82 /* --- onKick ------------------------------------------------------- */ | |
83 | |
84 void irccd_onKick(Irccd &irccd, | |
85 const std::shared_ptr<Server> &server, | |
86 const std::string &origin, | |
87 const std::string &channel, | |
88 const std::string &target, | |
89 const std::string &reason) | |
90 { | |
91 std::cout << "onKick: server=" << server->name() | |
92 << ", origin=" << origin | |
93 << ", channel=" << channel | |
94 << ", target=" << channel | |
95 << ", reason=" << reason << std::endl; | |
96 } | |
97 | |
98 /* --- onLoad ------------------------------------------------------- */ | |
99 | |
100 void irccd_onLoad(Irccd &, DynlibPlugin &plugin) | |
101 { | |
102 std::cout << "onLoad: plugin=" << plugin.name() << std::endl; | |
103 } | |
104 | |
105 /* --- onMessage ---------------------------------------------------- */ | |
106 | |
107 void irccd_onMessage(Irccd &irccd, | |
108 const std::shared_ptr<Server> &server, | |
109 const std::string &origin, | |
110 const std::string &channel, | |
111 const std::string &message) | |
112 { | |
113 std::cout << "onMessage: server=" << server->name() | |
114 << ", origin=" << origin | |
115 << ", channel=" << channel | |
116 << ", message=" << message << std::endl; | |
117 } | |
118 | |
119 /* --- onMe --------------------------------------------------------- */ | |
120 | |
121 void irccd_onMe(Irccd &irccd, | |
122 const std::shared_ptr<Server> &server, | |
123 const std::string &origin, | |
124 const std::string &channel, | |
125 const std::string &message) | |
126 { | |
127 std::cout << "onMe: server=" << server->name() | |
128 << ", origin=" << origin | |
129 << ", channel=" << channel | |
130 << ", message=" << message << std::endl; | |
131 } | |
132 | |
133 /* --- onMode ------------------------------------------------------- */ | |
134 | |
135 void irccd_onMode(Irccd &irccd, const std::shared_ptr<Server> &server, const std::string &origin, const std::string &mode) | |
136 { | |
137 std::cout << "onMode: server=" << server->name() << ", origin=" << origin << ", mode=" << mode << std::endl; | |
138 } | |
139 | |
140 /* --- onNames ------------------------------------------------------ */ | |
141 | |
142 void irccd_onNames(Irccd &irccd, | |
143 const std::shared_ptr<Server> &server, | |
144 const std::string &channel, | |
145 const std::vector<std::string> &list) | |
146 { | |
147 std::cout << "onNames: server=" << server->name() | |
148 << ", channel=" << channel | |
149 << ", list=" << util::join(list.begin(), list.end(), ", ") << std::endl; | |
150 } | |
151 | |
152 /* --- onNick ------------------------------------------------------- */ | |
153 | |
154 void irccd_onNick(Irccd &irccd, const std::shared_ptr<Server> &server, const std::string &origin, const std::string &nick) | |
155 { | |
156 std::cout << "onNick: server=" << server->name() << ", origin=" << origin << ", nick=" << nick << std::endl; | |
157 } | |
158 | |
159 /* --- onNotice ----------------------------------------------------- */ | |
160 | |
161 void irccd_onNotice(Irccd &irccd, const std::shared_ptr<Server> &server, const std::string &origin, const std::string ¬ice) | |
162 { | |
163 std::cout << "onNotice: server=" << server->name() << ", origin=" << origin << ", notice=" << notice << std::endl; | |
164 } | |
165 | |
166 /* --- onPart ------------------------------------------------------- */ | |
167 | |
168 void irccd_onPart(Irccd &irccd, | |
169 const std::shared_ptr<Server> &server, | |
170 const std::string &origin, | |
171 const std::string &channel, | |
172 const std::string &reason) | |
173 { | |
174 std::cout << "onPart: server=" << server->name() | |
175 << ", origin=" << origin | |
176 << ", channel=" << channel | |
177 << ", reason=" << reason << std::endl; | |
178 } | |
179 | |
180 /* --- onQuery ------------------------------------------------------ */ | |
181 | |
182 void irccd_onQuery(Irccd &, const std::shared_ptr<Server> &server, const std::string &origin, const std::string &message) | |
183 { | |
184 std::cout << "onQuery: server=" << server->name() << ", origin=" << origin << ", message=" << message << std::endl; | |
185 } | |
186 | |
187 /* --- onQueryCommand ----------------------------------------------- */ | |
188 | |
189 void irccd_onQueryCommand(Irccd &, const std::shared_ptr<Server> &server, const std::string &origin, const std::string &message) | |
190 { | |
191 std::cout << "onQueryCommand: server=" << server->name() << ", origin=" << origin << ", message=" << message << std::endl; | |
192 } | |
193 | |
194 /* --- onReload ----------------------------------------------------- */ | |
195 | |
196 void irccd_onReload(Irccd &irccd, DynlibPlugin &plugin) | |
197 { | |
198 std::cout << "onReload: plugin=" << plugin.name() << std::endl; | |
199 } | |
200 | |
201 /* --- onTopic ------------------------------------------------------ */ | |
202 | |
203 void irccd_onTopic(Irccd &irccd, | |
204 const std::shared_ptr<Server> &server, | |
205 const std::string &origin, | |
206 const std::string &channel, | |
207 const std::string &topic) | |
208 { | |
209 std::cout << "onTopic: server=" << server->name() | |
210 << ", origin=" << origin | |
211 << ", channel=" << channel | |
212 << ", topic=" << topic << std::endl; | |
213 } | |
214 | |
215 /* --- onUnload ----------------------------------------------------- */ | |
216 | |
217 void irccd_onUnload(Irccd &irccd, DynlibPlugin &plugin) | |
218 { | |
219 std::cout << "onUnload: plugin=" << plugin.name() << std::endl; | |
220 } | |
221 | |
222 /* --- onWhois ------------------------------------------------------ */ | |
223 | |
224 void irccd_onWhois(Irccd &irccd, const std::shared_ptr<Server> &server, const ServerWhois &info) | |
225 { | |
226 std::cout << "onWhois: server=" << server->name() << ", info-for=" << info.nick << std::endl; | |
227 } | |
228 | |
229 } // !C |