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 &notice)
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 &notice)
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