annotate tests/src/libirccd/dynlib-plugin/test_plugin.cpp @ 722:3e816cebed2c

Irccd: make plugin pure abstract, closes #796 @3h
author David Demelier <markand@malikania.fr>
date Mon, 16 Jul 2018 21:19:47 +0200
parents 16e83b636cb8
children 9d13aabfd63a
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
500
458e34f16c1f Irccd: rework native plugins, closes #707
David Demelier <markand@malikania.fr>
parents:
diff changeset
1 /*
458e34f16c1f Irccd: rework native plugins, closes #707
David Demelier <markand@malikania.fr>
parents:
diff changeset
2 * test_plugin.cpp -- basic exported plugin test
458e34f16c1f Irccd: rework native plugins, closes #707
David Demelier <markand@malikania.fr>
parents:
diff changeset
3 *
628
27587ff92a64 Misc: update copyrights
David Demelier <markand@malikania.fr>
parents: 611
diff changeset
4 * Copyright (c) 2013-2018 David Demelier <markand@malikania.fr>
500
458e34f16c1f Irccd: rework native plugins, closes #707
David Demelier <markand@malikania.fr>
parents:
diff changeset
5 *
458e34f16c1f Irccd: rework native plugins, closes #707
David Demelier <markand@malikania.fr>
parents:
diff changeset
6 * Permission to use, copy, modify, and/or distribute this software for any
458e34f16c1f Irccd: rework native plugins, closes #707
David Demelier <markand@malikania.fr>
parents:
diff changeset
7 * purpose with or without fee is hereby granted, provided that the above
458e34f16c1f Irccd: rework native plugins, closes #707
David Demelier <markand@malikania.fr>
parents:
diff changeset
8 * copyright notice and this permission notice appear in all copies.
458e34f16c1f Irccd: rework native plugins, closes #707
David Demelier <markand@malikania.fr>
parents:
diff changeset
9 *
458e34f16c1f Irccd: rework native plugins, closes #707
David Demelier <markand@malikania.fr>
parents:
diff changeset
10 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
458e34f16c1f Irccd: rework native plugins, closes #707
David Demelier <markand@malikania.fr>
parents:
diff changeset
11 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
458e34f16c1f Irccd: rework native plugins, closes #707
David Demelier <markand@malikania.fr>
parents:
diff changeset
12 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
458e34f16c1f Irccd: rework native plugins, closes #707
David Demelier <markand@malikania.fr>
parents:
diff changeset
13 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
458e34f16c1f Irccd: rework native plugins, closes #707
David Demelier <markand@malikania.fr>
parents:
diff changeset
14 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
458e34f16c1f Irccd: rework native plugins, closes #707
David Demelier <markand@malikania.fr>
parents:
diff changeset
15 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
458e34f16c1f Irccd: rework native plugins, closes #707
David Demelier <markand@malikania.fr>
parents:
diff changeset
16 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
458e34f16c1f Irccd: rework native plugins, closes #707
David Demelier <markand@malikania.fr>
parents:
diff changeset
17 */
458e34f16c1f Irccd: rework native plugins, closes #707
David Demelier <markand@malikania.fr>
parents:
diff changeset
18
458e34f16c1f Irccd: rework native plugins, closes #707
David Demelier <markand@malikania.fr>
parents:
diff changeset
19 #include <boost/dll.hpp>
458e34f16c1f Irccd: rework native plugins, closes #707
David Demelier <markand@malikania.fr>
parents:
diff changeset
20
604
9d4da384f5d6 Tests: move libirccd-test to test/ folder, closes #750
David Demelier <markand@malikania.fr>
parents: 583
diff changeset
21 #include <irccd/daemon/plugin.hpp>
500
458e34f16c1f Irccd: rework native plugins, closes #707
David Demelier <markand@malikania.fr>
parents:
diff changeset
22
458e34f16c1f Irccd: rework native plugins, closes #707
David Demelier <markand@malikania.fr>
parents:
diff changeset
23 namespace irccd {
458e34f16c1f Irccd: rework native plugins, closes #707
David Demelier <markand@malikania.fr>
parents:
diff changeset
24
458e34f16c1f Irccd: rework native plugins, closes #707
David Demelier <markand@malikania.fr>
parents:
diff changeset
25 class test_plugin : public plugin {
684
8d93e415c3b4 Irccd: load directly native plugin instead of wrapping it, closes #790 @1h
David Demelier <markand@malikania.fr>
parents: 636
diff changeset
26 private:
722
3e816cebed2c Irccd: make plugin pure abstract, closes #796 @3h
David Demelier <markand@malikania.fr>
parents: 716
diff changeset
27 map config_;
684
8d93e415c3b4 Irccd: load directly native plugin instead of wrapping it, closes #790 @1h
David Demelier <markand@malikania.fr>
parents: 636
diff changeset
28
500
458e34f16c1f Irccd: rework native plugins, closes #707
David Demelier <markand@malikania.fr>
parents:
diff changeset
29 public:
722
3e816cebed2c Irccd: make plugin pure abstract, closes #796 @3h
David Demelier <markand@malikania.fr>
parents: 716
diff changeset
30 auto get_options() const -> map override
500
458e34f16c1f Irccd: rework native plugins, closes #707
David Demelier <markand@malikania.fr>
parents:
diff changeset
31 {
684
8d93e415c3b4 Irccd: load directly native plugin instead of wrapping it, closes #790 @1h
David Demelier <markand@malikania.fr>
parents: 636
diff changeset
32 return config_;
500
458e34f16c1f Irccd: rework native plugins, closes #707
David Demelier <markand@malikania.fr>
parents:
diff changeset
33 }
458e34f16c1f Irccd: rework native plugins, closes #707
David Demelier <markand@malikania.fr>
parents:
diff changeset
34
722
3e816cebed2c Irccd: make plugin pure abstract, closes #796 @3h
David Demelier <markand@malikania.fr>
parents: 716
diff changeset
35 auto get_name() const noexcept -> std::string_view override
3e816cebed2c Irccd: make plugin pure abstract, closes #796 @3h
David Demelier <markand@malikania.fr>
parents: 716
diff changeset
36 {
3e816cebed2c Irccd: make plugin pure abstract, closes #796 @3h
David Demelier <markand@malikania.fr>
parents: 716
diff changeset
37 return "test";
3e816cebed2c Irccd: make plugin pure abstract, closes #796 @3h
David Demelier <markand@malikania.fr>
parents: 716
diff changeset
38 }
3e816cebed2c Irccd: make plugin pure abstract, closes #796 @3h
David Demelier <markand@malikania.fr>
parents: 716
diff changeset
39
684
8d93e415c3b4 Irccd: load directly native plugin instead of wrapping it, closes #790 @1h
David Demelier <markand@malikania.fr>
parents: 636
diff changeset
40 void handle_command(irccd&, const message_event&) override
500
458e34f16c1f Irccd: rework native plugins, closes #707
David Demelier <markand@malikania.fr>
parents:
diff changeset
41 {
684
8d93e415c3b4 Irccd: load directly native plugin instead of wrapping it, closes #790 @1h
David Demelier <markand@malikania.fr>
parents: 636
diff changeset
42 config_["command"] = "true";
8d93e415c3b4 Irccd: load directly native plugin instead of wrapping it, closes #790 @1h
David Demelier <markand@malikania.fr>
parents: 636
diff changeset
43 }
8d93e415c3b4 Irccd: load directly native plugin instead of wrapping it, closes #790 @1h
David Demelier <markand@malikania.fr>
parents: 636
diff changeset
44
8d93e415c3b4 Irccd: load directly native plugin instead of wrapping it, closes #790 @1h
David Demelier <markand@malikania.fr>
parents: 636
diff changeset
45 void handle_connect(irccd&, const connect_event&) override
8d93e415c3b4 Irccd: load directly native plugin instead of wrapping it, closes #790 @1h
David Demelier <markand@malikania.fr>
parents: 636
diff changeset
46 {
8d93e415c3b4 Irccd: load directly native plugin instead of wrapping it, closes #790 @1h
David Demelier <markand@malikania.fr>
parents: 636
diff changeset
47 config_["connect"] = "true";
500
458e34f16c1f Irccd: rework native plugins, closes #707
David Demelier <markand@malikania.fr>
parents:
diff changeset
48 }
458e34f16c1f Irccd: rework native plugins, closes #707
David Demelier <markand@malikania.fr>
parents:
diff changeset
49
684
8d93e415c3b4 Irccd: load directly native plugin instead of wrapping it, closes #790 @1h
David Demelier <markand@malikania.fr>
parents: 636
diff changeset
50 void handle_invite(irccd&, const invite_event&) override
500
458e34f16c1f Irccd: rework native plugins, closes #707
David Demelier <markand@malikania.fr>
parents:
diff changeset
51 {
684
8d93e415c3b4 Irccd: load directly native plugin instead of wrapping it, closes #790 @1h
David Demelier <markand@malikania.fr>
parents: 636
diff changeset
52 config_["invite"] = "true";
8d93e415c3b4 Irccd: load directly native plugin instead of wrapping it, closes #790 @1h
David Demelier <markand@malikania.fr>
parents: 636
diff changeset
53 }
8d93e415c3b4 Irccd: load directly native plugin instead of wrapping it, closes #790 @1h
David Demelier <markand@malikania.fr>
parents: 636
diff changeset
54
8d93e415c3b4 Irccd: load directly native plugin instead of wrapping it, closes #790 @1h
David Demelier <markand@malikania.fr>
parents: 636
diff changeset
55 void handle_join(irccd&, const join_event&) override
8d93e415c3b4 Irccd: load directly native plugin instead of wrapping it, closes #790 @1h
David Demelier <markand@malikania.fr>
parents: 636
diff changeset
56 {
8d93e415c3b4 Irccd: load directly native plugin instead of wrapping it, closes #790 @1h
David Demelier <markand@malikania.fr>
parents: 636
diff changeset
57 config_["join"] = "true";
500
458e34f16c1f Irccd: rework native plugins, closes #707
David Demelier <markand@malikania.fr>
parents:
diff changeset
58 }
458e34f16c1f Irccd: rework native plugins, closes #707
David Demelier <markand@malikania.fr>
parents:
diff changeset
59
684
8d93e415c3b4 Irccd: load directly native plugin instead of wrapping it, closes #790 @1h
David Demelier <markand@malikania.fr>
parents: 636
diff changeset
60 void handle_kick(irccd&, const kick_event&) override
500
458e34f16c1f Irccd: rework native plugins, closes #707
David Demelier <markand@malikania.fr>
parents:
diff changeset
61 {
684
8d93e415c3b4 Irccd: load directly native plugin instead of wrapping it, closes #790 @1h
David Demelier <markand@malikania.fr>
parents: 636
diff changeset
62 config_["kick"] = "true";
500
458e34f16c1f Irccd: rework native plugins, closes #707
David Demelier <markand@malikania.fr>
parents:
diff changeset
63 }
458e34f16c1f Irccd: rework native plugins, closes #707
David Demelier <markand@malikania.fr>
parents:
diff changeset
64
684
8d93e415c3b4 Irccd: load directly native plugin instead of wrapping it, closes #790 @1h
David Demelier <markand@malikania.fr>
parents: 636
diff changeset
65 void handle_load(irccd&) override
500
458e34f16c1f Irccd: rework native plugins, closes #707
David Demelier <markand@malikania.fr>
parents:
diff changeset
66 {
684
8d93e415c3b4 Irccd: load directly native plugin instead of wrapping it, closes #790 @1h
David Demelier <markand@malikania.fr>
parents: 636
diff changeset
67 config_["load"] = "true";
500
458e34f16c1f Irccd: rework native plugins, closes #707
David Demelier <markand@malikania.fr>
parents:
diff changeset
68 }
458e34f16c1f Irccd: rework native plugins, closes #707
David Demelier <markand@malikania.fr>
parents:
diff changeset
69
684
8d93e415c3b4 Irccd: load directly native plugin instead of wrapping it, closes #790 @1h
David Demelier <markand@malikania.fr>
parents: 636
diff changeset
70 void handle_message(irccd&, const message_event&) override
500
458e34f16c1f Irccd: rework native plugins, closes #707
David Demelier <markand@malikania.fr>
parents:
diff changeset
71 {
684
8d93e415c3b4 Irccd: load directly native plugin instead of wrapping it, closes #790 @1h
David Demelier <markand@malikania.fr>
parents: 636
diff changeset
72 config_["message"] = "true";
500
458e34f16c1f Irccd: rework native plugins, closes #707
David Demelier <markand@malikania.fr>
parents:
diff changeset
73 }
458e34f16c1f Irccd: rework native plugins, closes #707
David Demelier <markand@malikania.fr>
parents:
diff changeset
74
684
8d93e415c3b4 Irccd: load directly native plugin instead of wrapping it, closes #790 @1h
David Demelier <markand@malikania.fr>
parents: 636
diff changeset
75 void handle_me(irccd&, const me_event&) override
500
458e34f16c1f Irccd: rework native plugins, closes #707
David Demelier <markand@malikania.fr>
parents:
diff changeset
76 {
684
8d93e415c3b4 Irccd: load directly native plugin instead of wrapping it, closes #790 @1h
David Demelier <markand@malikania.fr>
parents: 636
diff changeset
77 config_["me"] = "true";
500
458e34f16c1f Irccd: rework native plugins, closes #707
David Demelier <markand@malikania.fr>
parents:
diff changeset
78 }
458e34f16c1f Irccd: rework native plugins, closes #707
David Demelier <markand@malikania.fr>
parents:
diff changeset
79
684
8d93e415c3b4 Irccd: load directly native plugin instead of wrapping it, closes #790 @1h
David Demelier <markand@malikania.fr>
parents: 636
diff changeset
80 void handle_mode(irccd&, const mode_event&) override
500
458e34f16c1f Irccd: rework native plugins, closes #707
David Demelier <markand@malikania.fr>
parents:
diff changeset
81 {
684
8d93e415c3b4 Irccd: load directly native plugin instead of wrapping it, closes #790 @1h
David Demelier <markand@malikania.fr>
parents: 636
diff changeset
82 config_["mode"] = "true";
500
458e34f16c1f Irccd: rework native plugins, closes #707
David Demelier <markand@malikania.fr>
parents:
diff changeset
83 }
458e34f16c1f Irccd: rework native plugins, closes #707
David Demelier <markand@malikania.fr>
parents:
diff changeset
84
684
8d93e415c3b4 Irccd: load directly native plugin instead of wrapping it, closes #790 @1h
David Demelier <markand@malikania.fr>
parents: 636
diff changeset
85 void handle_names(irccd&, const names_event&) override
500
458e34f16c1f Irccd: rework native plugins, closes #707
David Demelier <markand@malikania.fr>
parents:
diff changeset
86 {
684
8d93e415c3b4 Irccd: load directly native plugin instead of wrapping it, closes #790 @1h
David Demelier <markand@malikania.fr>
parents: 636
diff changeset
87 config_["names"] = "true";
8d93e415c3b4 Irccd: load directly native plugin instead of wrapping it, closes #790 @1h
David Demelier <markand@malikania.fr>
parents: 636
diff changeset
88 }
8d93e415c3b4 Irccd: load directly native plugin instead of wrapping it, closes #790 @1h
David Demelier <markand@malikania.fr>
parents: 636
diff changeset
89
8d93e415c3b4 Irccd: load directly native plugin instead of wrapping it, closes #790 @1h
David Demelier <markand@malikania.fr>
parents: 636
diff changeset
90 void handle_nick(irccd&, const nick_event&) override
8d93e415c3b4 Irccd: load directly native plugin instead of wrapping it, closes #790 @1h
David Demelier <markand@malikania.fr>
parents: 636
diff changeset
91 {
8d93e415c3b4 Irccd: load directly native plugin instead of wrapping it, closes #790 @1h
David Demelier <markand@malikania.fr>
parents: 636
diff changeset
92 config_["nick"] = "true";
500
458e34f16c1f Irccd: rework native plugins, closes #707
David Demelier <markand@malikania.fr>
parents:
diff changeset
93 }
458e34f16c1f Irccd: rework native plugins, closes #707
David Demelier <markand@malikania.fr>
parents:
diff changeset
94
684
8d93e415c3b4 Irccd: load directly native plugin instead of wrapping it, closes #790 @1h
David Demelier <markand@malikania.fr>
parents: 636
diff changeset
95 void handle_notice(irccd&, const notice_event&) override
500
458e34f16c1f Irccd: rework native plugins, closes #707
David Demelier <markand@malikania.fr>
parents:
diff changeset
96 {
684
8d93e415c3b4 Irccd: load directly native plugin instead of wrapping it, closes #790 @1h
David Demelier <markand@malikania.fr>
parents: 636
diff changeset
97 config_["notice"] = "true";
500
458e34f16c1f Irccd: rework native plugins, closes #707
David Demelier <markand@malikania.fr>
parents:
diff changeset
98 }
458e34f16c1f Irccd: rework native plugins, closes #707
David Demelier <markand@malikania.fr>
parents:
diff changeset
99
684
8d93e415c3b4 Irccd: load directly native plugin instead of wrapping it, closes #790 @1h
David Demelier <markand@malikania.fr>
parents: 636
diff changeset
100 void handle_part(irccd&, const part_event&) override
500
458e34f16c1f Irccd: rework native plugins, closes #707
David Demelier <markand@malikania.fr>
parents:
diff changeset
101 {
684
8d93e415c3b4 Irccd: load directly native plugin instead of wrapping it, closes #790 @1h
David Demelier <markand@malikania.fr>
parents: 636
diff changeset
102 config_["part"] = "true";
500
458e34f16c1f Irccd: rework native plugins, closes #707
David Demelier <markand@malikania.fr>
parents:
diff changeset
103 }
458e34f16c1f Irccd: rework native plugins, closes #707
David Demelier <markand@malikania.fr>
parents:
diff changeset
104
684
8d93e415c3b4 Irccd: load directly native plugin instead of wrapping it, closes #790 @1h
David Demelier <markand@malikania.fr>
parents: 636
diff changeset
105 void handle_reload(irccd&) override
500
458e34f16c1f Irccd: rework native plugins, closes #707
David Demelier <markand@malikania.fr>
parents:
diff changeset
106 {
684
8d93e415c3b4 Irccd: load directly native plugin instead of wrapping it, closes #790 @1h
David Demelier <markand@malikania.fr>
parents: 636
diff changeset
107 config_["reload"] = "true";
500
458e34f16c1f Irccd: rework native plugins, closes #707
David Demelier <markand@malikania.fr>
parents:
diff changeset
108 }
458e34f16c1f Irccd: rework native plugins, closes #707
David Demelier <markand@malikania.fr>
parents:
diff changeset
109
684
8d93e415c3b4 Irccd: load directly native plugin instead of wrapping it, closes #790 @1h
David Demelier <markand@malikania.fr>
parents: 636
diff changeset
110 void handle_topic(irccd&, const topic_event&) override
500
458e34f16c1f Irccd: rework native plugins, closes #707
David Demelier <markand@malikania.fr>
parents:
diff changeset
111 {
684
8d93e415c3b4 Irccd: load directly native plugin instead of wrapping it, closes #790 @1h
David Demelier <markand@malikania.fr>
parents: 636
diff changeset
112 config_["topic"] = "true";
500
458e34f16c1f Irccd: rework native plugins, closes #707
David Demelier <markand@malikania.fr>
parents:
diff changeset
113 }
458e34f16c1f Irccd: rework native plugins, closes #707
David Demelier <markand@malikania.fr>
parents:
diff changeset
114
684
8d93e415c3b4 Irccd: load directly native plugin instead of wrapping it, closes #790 @1h
David Demelier <markand@malikania.fr>
parents: 636
diff changeset
115 void handle_unload(irccd&) override
500
458e34f16c1f Irccd: rework native plugins, closes #707
David Demelier <markand@malikania.fr>
parents:
diff changeset
116 {
684
8d93e415c3b4 Irccd: load directly native plugin instead of wrapping it, closes #790 @1h
David Demelier <markand@malikania.fr>
parents: 636
diff changeset
117 config_["unload"] = "true";
8d93e415c3b4 Irccd: load directly native plugin instead of wrapping it, closes #790 @1h
David Demelier <markand@malikania.fr>
parents: 636
diff changeset
118 }
8d93e415c3b4 Irccd: load directly native plugin instead of wrapping it, closes #790 @1h
David Demelier <markand@malikania.fr>
parents: 636
diff changeset
119
8d93e415c3b4 Irccd: load directly native plugin instead of wrapping it, closes #790 @1h
David Demelier <markand@malikania.fr>
parents: 636
diff changeset
120 void handle_whois(irccd&, const whois_event&) override
8d93e415c3b4 Irccd: load directly native plugin instead of wrapping it, closes #790 @1h
David Demelier <markand@malikania.fr>
parents: 636
diff changeset
121 {
8d93e415c3b4 Irccd: load directly native plugin instead of wrapping it, closes #790 @1h
David Demelier <markand@malikania.fr>
parents: 636
diff changeset
122 config_["whois"] = "true";
500
458e34f16c1f Irccd: rework native plugins, closes #707
David Demelier <markand@malikania.fr>
parents:
diff changeset
123 }
716
16e83b636cb8 Irccd: use BOOST_DLL_ALIAS to avoid warnings
David Demelier <markand@malikania.fr>
parents: 707
diff changeset
124
16e83b636cb8 Irccd: use BOOST_DLL_ALIAS to avoid warnings
David Demelier <markand@malikania.fr>
parents: 707
diff changeset
125 static auto abi() -> version
16e83b636cb8 Irccd: use BOOST_DLL_ALIAS to avoid warnings
David Demelier <markand@malikania.fr>
parents: 707
diff changeset
126 {
16e83b636cb8 Irccd: use BOOST_DLL_ALIAS to avoid warnings
David Demelier <markand@malikania.fr>
parents: 707
diff changeset
127 return version();
16e83b636cb8 Irccd: use BOOST_DLL_ALIAS to avoid warnings
David Demelier <markand@malikania.fr>
parents: 707
diff changeset
128 }
16e83b636cb8 Irccd: use BOOST_DLL_ALIAS to avoid warnings
David Demelier <markand@malikania.fr>
parents: 707
diff changeset
129
16e83b636cb8 Irccd: use BOOST_DLL_ALIAS to avoid warnings
David Demelier <markand@malikania.fr>
parents: 707
diff changeset
130 static auto init() -> std::unique_ptr<plugin>
16e83b636cb8 Irccd: use BOOST_DLL_ALIAS to avoid warnings
David Demelier <markand@malikania.fr>
parents: 707
diff changeset
131 {
722
3e816cebed2c Irccd: make plugin pure abstract, closes #796 @3h
David Demelier <markand@malikania.fr>
parents: 716
diff changeset
132 return std::make_unique<test_plugin>();
716
16e83b636cb8 Irccd: use BOOST_DLL_ALIAS to avoid warnings
David Demelier <markand@malikania.fr>
parents: 707
diff changeset
133 }
500
458e34f16c1f Irccd: rework native plugins, closes #707
David Demelier <markand@malikania.fr>
parents:
diff changeset
134 };
458e34f16c1f Irccd: rework native plugins, closes #707
David Demelier <markand@malikania.fr>
parents:
diff changeset
135
716
16e83b636cb8 Irccd: use BOOST_DLL_ALIAS to avoid warnings
David Demelier <markand@malikania.fr>
parents: 707
diff changeset
136 BOOST_DLL_ALIAS(test_plugin::abi, irccd_abi_test_plugin)
16e83b636cb8 Irccd: use BOOST_DLL_ALIAS to avoid warnings
David Demelier <markand@malikania.fr>
parents: 707
diff changeset
137 BOOST_DLL_ALIAS(test_plugin::init, irccd_init_test_plugin)
500
458e34f16c1f Irccd: rework native plugins, closes #707
David Demelier <markand@malikania.fr>
parents:
diff changeset
138
684
8d93e415c3b4 Irccd: load directly native plugin instead of wrapping it, closes #790 @1h
David Demelier <markand@malikania.fr>
parents: 636
diff changeset
139 } // !irccd