annotate tests/src/libirccd/dynlib-plugin/test_plugin.cpp @ 684:8d93e415c3b4

Irccd: load directly native plugin instead of wrapping it, closes #790 @1h The boost::dll::import function support importing variables as boost::shared_ptr, instead of wrapping all individual function, just load the plugin from the shared object and return it as a std::shared_ptr.
author David Demelier <markand@malikania.fr>
date Fri, 13 Apr 2018 07:32:10 +0200
parents 152d20dc0e74
children 48afa8c41f50
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:
8d93e415c3b4 Irccd: load directly native plugin instead of wrapping it, closes #790 @1h
David Demelier <markand@malikania.fr>
parents: 636
diff changeset
27 plugin_config config_;
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:
458e34f16c1f Irccd: rework native plugins, closes #707
David Demelier <markand@malikania.fr>
parents:
diff changeset
30 using plugin::plugin;
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 plugin_config get_config() override
500
458e34f16c1f Irccd: rework native plugins, closes #707
David Demelier <markand@malikania.fr>
parents:
diff changeset
33 {
684
8d93e415c3b4 Irccd: load directly native plugin instead of wrapping it, closes #790 @1h
David Demelier <markand@malikania.fr>
parents: 636
diff changeset
34 return config_;
500
458e34f16c1f Irccd: rework native plugins, closes #707
David Demelier <markand@malikania.fr>
parents:
diff changeset
35 }
458e34f16c1f Irccd: rework native plugins, closes #707
David Demelier <markand@malikania.fr>
parents:
diff changeset
36
684
8d93e415c3b4 Irccd: load directly native plugin instead of wrapping it, closes #790 @1h
David Demelier <markand@malikania.fr>
parents: 636
diff changeset
37 void handle_command(irccd&, const message_event&) override
500
458e34f16c1f Irccd: rework native plugins, closes #707
David Demelier <markand@malikania.fr>
parents:
diff changeset
38 {
684
8d93e415c3b4 Irccd: load directly native plugin instead of wrapping it, closes #790 @1h
David Demelier <markand@malikania.fr>
parents: 636
diff changeset
39 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
40 }
8d93e415c3b4 Irccd: load directly native plugin instead of wrapping it, closes #790 @1h
David Demelier <markand@malikania.fr>
parents: 636
diff changeset
41
8d93e415c3b4 Irccd: load directly native plugin instead of wrapping it, closes #790 @1h
David Demelier <markand@malikania.fr>
parents: 636
diff changeset
42 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
43 {
8d93e415c3b4 Irccd: load directly native plugin instead of wrapping it, closes #790 @1h
David Demelier <markand@malikania.fr>
parents: 636
diff changeset
44 config_["connect"] = "true";
500
458e34f16c1f Irccd: rework native plugins, closes #707
David Demelier <markand@malikania.fr>
parents:
diff changeset
45 }
458e34f16c1f Irccd: rework native plugins, closes #707
David Demelier <markand@malikania.fr>
parents:
diff changeset
46
684
8d93e415c3b4 Irccd: load directly native plugin instead of wrapping it, closes #790 @1h
David Demelier <markand@malikania.fr>
parents: 636
diff changeset
47 void handle_invite(irccd&, const invite_event&) override
500
458e34f16c1f Irccd: rework native plugins, closes #707
David Demelier <markand@malikania.fr>
parents:
diff changeset
48 {
684
8d93e415c3b4 Irccd: load directly native plugin instead of wrapping it, closes #790 @1h
David Demelier <markand@malikania.fr>
parents: 636
diff changeset
49 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
50 }
8d93e415c3b4 Irccd: load directly native plugin instead of wrapping it, closes #790 @1h
David Demelier <markand@malikania.fr>
parents: 636
diff changeset
51
8d93e415c3b4 Irccd: load directly native plugin instead of wrapping it, closes #790 @1h
David Demelier <markand@malikania.fr>
parents: 636
diff changeset
52 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
53 {
8d93e415c3b4 Irccd: load directly native plugin instead of wrapping it, closes #790 @1h
David Demelier <markand@malikania.fr>
parents: 636
diff changeset
54 config_["join"] = "true";
500
458e34f16c1f Irccd: rework native plugins, closes #707
David Demelier <markand@malikania.fr>
parents:
diff changeset
55 }
458e34f16c1f Irccd: rework native plugins, closes #707
David Demelier <markand@malikania.fr>
parents:
diff changeset
56
684
8d93e415c3b4 Irccd: load directly native plugin instead of wrapping it, closes #790 @1h
David Demelier <markand@malikania.fr>
parents: 636
diff changeset
57 void handle_kick(irccd&, const kick_event&) override
500
458e34f16c1f Irccd: rework native plugins, closes #707
David Demelier <markand@malikania.fr>
parents:
diff changeset
58 {
684
8d93e415c3b4 Irccd: load directly native plugin instead of wrapping it, closes #790 @1h
David Demelier <markand@malikania.fr>
parents: 636
diff changeset
59 config_["kick"] = "true";
500
458e34f16c1f Irccd: rework native plugins, closes #707
David Demelier <markand@malikania.fr>
parents:
diff changeset
60 }
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 void handle_load(irccd&) override
500
458e34f16c1f Irccd: rework native plugins, closes #707
David Demelier <markand@malikania.fr>
parents:
diff changeset
63 {
684
8d93e415c3b4 Irccd: load directly native plugin instead of wrapping it, closes #790 @1h
David Demelier <markand@malikania.fr>
parents: 636
diff changeset
64 config_["load"] = "true";
500
458e34f16c1f Irccd: rework native plugins, closes #707
David Demelier <markand@malikania.fr>
parents:
diff changeset
65 }
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 void handle_message(irccd&, const message_event&) override
500
458e34f16c1f Irccd: rework native plugins, closes #707
David Demelier <markand@malikania.fr>
parents:
diff changeset
68 {
684
8d93e415c3b4 Irccd: load directly native plugin instead of wrapping it, closes #790 @1h
David Demelier <markand@malikania.fr>
parents: 636
diff changeset
69 config_["message"] = "true";
500
458e34f16c1f Irccd: rework native plugins, closes #707
David Demelier <markand@malikania.fr>
parents:
diff changeset
70 }
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 void handle_me(irccd&, const me_event&) override
500
458e34f16c1f Irccd: rework native plugins, closes #707
David Demelier <markand@malikania.fr>
parents:
diff changeset
73 {
684
8d93e415c3b4 Irccd: load directly native plugin instead of wrapping it, closes #790 @1h
David Demelier <markand@malikania.fr>
parents: 636
diff changeset
74 config_["me"] = "true";
500
458e34f16c1f Irccd: rework native plugins, closes #707
David Demelier <markand@malikania.fr>
parents:
diff changeset
75 }
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 void handle_mode(irccd&, const mode_event&) override
500
458e34f16c1f Irccd: rework native plugins, closes #707
David Demelier <markand@malikania.fr>
parents:
diff changeset
78 {
684
8d93e415c3b4 Irccd: load directly native plugin instead of wrapping it, closes #790 @1h
David Demelier <markand@malikania.fr>
parents: 636
diff changeset
79 config_["mode"] = "true";
500
458e34f16c1f Irccd: rework native plugins, closes #707
David Demelier <markand@malikania.fr>
parents:
diff changeset
80 }
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 void handle_names(irccd&, const names_event&) override
500
458e34f16c1f Irccd: rework native plugins, closes #707
David Demelier <markand@malikania.fr>
parents:
diff changeset
83 {
684
8d93e415c3b4 Irccd: load directly native plugin instead of wrapping it, closes #790 @1h
David Demelier <markand@malikania.fr>
parents: 636
diff changeset
84 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
85 }
8d93e415c3b4 Irccd: load directly native plugin instead of wrapping it, closes #790 @1h
David Demelier <markand@malikania.fr>
parents: 636
diff changeset
86
8d93e415c3b4 Irccd: load directly native plugin instead of wrapping it, closes #790 @1h
David Demelier <markand@malikania.fr>
parents: 636
diff changeset
87 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
88 {
8d93e415c3b4 Irccd: load directly native plugin instead of wrapping it, closes #790 @1h
David Demelier <markand@malikania.fr>
parents: 636
diff changeset
89 config_["nick"] = "true";
500
458e34f16c1f Irccd: rework native plugins, closes #707
David Demelier <markand@malikania.fr>
parents:
diff changeset
90 }
458e34f16c1f Irccd: rework native plugins, closes #707
David Demelier <markand@malikania.fr>
parents:
diff changeset
91
684
8d93e415c3b4 Irccd: load directly native plugin instead of wrapping it, closes #790 @1h
David Demelier <markand@malikania.fr>
parents: 636
diff changeset
92 void handle_notice(irccd&, const notice_event&) override
500
458e34f16c1f Irccd: rework native plugins, closes #707
David Demelier <markand@malikania.fr>
parents:
diff changeset
93 {
684
8d93e415c3b4 Irccd: load directly native plugin instead of wrapping it, closes #790 @1h
David Demelier <markand@malikania.fr>
parents: 636
diff changeset
94 config_["notice"] = "true";
500
458e34f16c1f Irccd: rework native plugins, closes #707
David Demelier <markand@malikania.fr>
parents:
diff changeset
95 }
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 void handle_part(irccd&, const part_event&) override
500
458e34f16c1f Irccd: rework native plugins, closes #707
David Demelier <markand@malikania.fr>
parents:
diff changeset
98 {
684
8d93e415c3b4 Irccd: load directly native plugin instead of wrapping it, closes #790 @1h
David Demelier <markand@malikania.fr>
parents: 636
diff changeset
99 config_["part"] = "true";
500
458e34f16c1f Irccd: rework native plugins, closes #707
David Demelier <markand@malikania.fr>
parents:
diff changeset
100 }
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 void handle_reload(irccd&) override
500
458e34f16c1f Irccd: rework native plugins, closes #707
David Demelier <markand@malikania.fr>
parents:
diff changeset
103 {
684
8d93e415c3b4 Irccd: load directly native plugin instead of wrapping it, closes #790 @1h
David Demelier <markand@malikania.fr>
parents: 636
diff changeset
104 config_["reload"] = "true";
500
458e34f16c1f Irccd: rework native plugins, closes #707
David Demelier <markand@malikania.fr>
parents:
diff changeset
105 }
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 void handle_topic(irccd&, const topic_event&) override
500
458e34f16c1f Irccd: rework native plugins, closes #707
David Demelier <markand@malikania.fr>
parents:
diff changeset
108 {
684
8d93e415c3b4 Irccd: load directly native plugin instead of wrapping it, closes #790 @1h
David Demelier <markand@malikania.fr>
parents: 636
diff changeset
109 config_["topic"] = "true";
500
458e34f16c1f Irccd: rework native plugins, closes #707
David Demelier <markand@malikania.fr>
parents:
diff changeset
110 }
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 void handle_unload(irccd&) override
500
458e34f16c1f Irccd: rework native plugins, closes #707
David Demelier <markand@malikania.fr>
parents:
diff changeset
113 {
684
8d93e415c3b4 Irccd: load directly native plugin instead of wrapping it, closes #790 @1h
David Demelier <markand@malikania.fr>
parents: 636
diff changeset
114 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
115 }
8d93e415c3b4 Irccd: load directly native plugin instead of wrapping it, closes #790 @1h
David Demelier <markand@malikania.fr>
parents: 636
diff changeset
116
8d93e415c3b4 Irccd: load directly native plugin instead of wrapping it, closes #790 @1h
David Demelier <markand@malikania.fr>
parents: 636
diff changeset
117 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
118 {
8d93e415c3b4 Irccd: load directly native plugin instead of wrapping it, closes #790 @1h
David Demelier <markand@malikania.fr>
parents: 636
diff changeset
119 config_["whois"] = "true";
500
458e34f16c1f Irccd: rework native plugins, closes #707
David Demelier <markand@malikania.fr>
parents:
diff changeset
120 }
458e34f16c1f Irccd: rework native plugins, closes #707
David Demelier <markand@malikania.fr>
parents:
diff changeset
121 };
458e34f16c1f Irccd: rework native plugins, closes #707
David Demelier <markand@malikania.fr>
parents:
diff changeset
122
684
8d93e415c3b4 Irccd: load directly native plugin instead of wrapping it, closes #790 @1h
David Demelier <markand@malikania.fr>
parents: 636
diff changeset
123 extern "C" BOOST_SYMBOL_EXPORT test_plugin irccd_plugin_test_plugin;
500
458e34f16c1f Irccd: rework native plugins, closes #707
David Demelier <markand@malikania.fr>
parents:
diff changeset
124
684
8d93e415c3b4 Irccd: load directly native plugin instead of wrapping it, closes #790 @1h
David Demelier <markand@malikania.fr>
parents: 636
diff changeset
125 test_plugin irccd_plugin_test_plugin("test", "");
500
458e34f16c1f Irccd: rework native plugins, closes #707
David Demelier <markand@malikania.fr>
parents:
diff changeset
126
684
8d93e415c3b4 Irccd: load directly native plugin instead of wrapping it, closes #790 @1h
David Demelier <markand@malikania.fr>
parents: 636
diff changeset
127 } // !irccd