Mercurial > irccd
annotate libirccd/irccd/daemon/irccd.hpp @ 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 | d3660cbf2f3c |
children | 8c44bbcbbab9 |
rev | line source |
---|---|
291
b490853404d9
Irccd: split lib into libirccd, #564
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
1 /* |
b490853404d9
Irccd: split lib into libirccd, #564
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
2 * irccd.hpp -- main irccd class |
b490853404d9
Irccd: split lib into libirccd, #564
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
3 * |
628
27587ff92a64
Misc: update copyrights
David Demelier <markand@malikania.fr>
parents:
627
diff
changeset
|
4 * Copyright (c) 2013-2018 David Demelier <markand@malikania.fr> |
291
b490853404d9
Irccd: split lib into libirccd, #564
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
5 * |
b490853404d9
Irccd: split lib into libirccd, #564
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
6 * Permission to use, copy, modify, and/or distribute this software for any |
b490853404d9
Irccd: split lib into libirccd, #564
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
7 * purpose with or without fee is hereby granted, provided that the above |
b490853404d9
Irccd: split lib into libirccd, #564
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
8 * copyright notice and this permission notice appear in all copies. |
b490853404d9
Irccd: split lib into libirccd, #564
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
9 * |
b490853404d9
Irccd: split lib into libirccd, #564
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
10 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES |
b490853404d9
Irccd: split lib into libirccd, #564
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
11 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF |
b490853404d9
Irccd: split lib into libirccd, #564
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
12 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR |
b490853404d9
Irccd: split lib into libirccd, #564
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
13 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES |
b490853404d9
Irccd: split lib into libirccd, #564
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
14 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN |
b490853404d9
Irccd: split lib into libirccd, #564
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
15 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF |
b490853404d9
Irccd: split lib into libirccd, #564
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
16 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. |
b490853404d9
Irccd: split lib into libirccd, #564
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
17 */ |
b490853404d9
Irccd: split lib into libirccd, #564
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
18 |
603
986ed3a7575d
Misc: fix includes style, closes #732
David Demelier <markand@malikania.fr>
parents:
599
diff
changeset
|
19 #ifndef IRCCD_DAEMON_IRCCD_HPP |
986ed3a7575d
Misc: fix includes style, closes #732
David Demelier <markand@malikania.fr>
parents:
599
diff
changeset
|
20 #define IRCCD_DAEMON_IRCCD_HPP |
291
b490853404d9
Irccd: split lib into libirccd, #564
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
21 |
b490853404d9
Irccd: split lib into libirccd, #564
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
22 /** |
b490853404d9
Irccd: split lib into libirccd, #564
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
23 * \file irccd.hpp |
b490853404d9
Irccd: split lib into libirccd, #564
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
24 * \brief Base class for irccd front end. |
b490853404d9
Irccd: split lib into libirccd, #564
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
25 */ |
b490853404d9
Irccd: split lib into libirccd, #564
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
26 |
603
986ed3a7575d
Misc: fix includes style, closes #732
David Demelier <markand@malikania.fr>
parents:
599
diff
changeset
|
27 #include <irccd/sysconfig.hpp> |
551
a5e1c91abb8e
Irccd: split services, closes #730
David Demelier <markand@malikania.fr>
parents:
546
diff
changeset
|
28 |
291
b490853404d9
Irccd: split lib into libirccd, #564
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
29 #include <memory> |
690
849c4337c18e
Misc: headers reduction
David Demelier <markand@malikania.fr>
parents:
670
diff
changeset
|
30 #include <system_error> |
291
b490853404d9
Irccd: split lib into libirccd, #564
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
31 |
742 | 32 #include <boost/asio/io_service.hpp> |
534
2326a4dc39e6
Irccd: rewrite transports in Boost.Asio, closes #681
David Demelier <markand@malikania.fr>
parents:
525
diff
changeset
|
33 |
603
986ed3a7575d
Misc: fix includes style, closes #732
David Demelier <markand@malikania.fr>
parents:
599
diff
changeset
|
34 #include <irccd/config.hpp> |
291
b490853404d9
Irccd: split lib into libirccd, #564
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
35 |
b490853404d9
Irccd: split lib into libirccd, #564
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
36 /** |
b490853404d9
Irccd: split lib into libirccd, #564
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
37 * \brief Main irccd namespace |
b490853404d9
Irccd: split lib into libirccd, #564
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
38 */ |
b490853404d9
Irccd: split lib into libirccd, #564
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
39 namespace irccd { |
b490853404d9
Irccd: split lib into libirccd, #564
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
40 |
725
0dbe1842a7d8
Irccd: rework loggers, closes #793 @3h
David Demelier <markand@malikania.fr>
parents:
708
diff
changeset
|
41 namespace logger { |
0dbe1842a7d8
Irccd: rework loggers, closes #793 @3h
David Demelier <markand@malikania.fr>
parents:
708
diff
changeset
|
42 |
0dbe1842a7d8
Irccd: rework loggers, closes #793 @3h
David Demelier <markand@malikania.fr>
parents:
708
diff
changeset
|
43 class sink; |
0dbe1842a7d8
Irccd: rework loggers, closes #793 @3h
David Demelier <markand@malikania.fr>
parents:
708
diff
changeset
|
44 |
0dbe1842a7d8
Irccd: rework loggers, closes #793 @3h
David Demelier <markand@malikania.fr>
parents:
708
diff
changeset
|
45 } // !logger |
0dbe1842a7d8
Irccd: rework loggers, closes #793 @3h
David Demelier <markand@malikania.fr>
parents:
708
diff
changeset
|
46 |
488
7e273b7f4f92
Irccd: new coding style, closes #576
David Demelier <markand@malikania.fr>
parents:
394
diff
changeset
|
47 class plugin_service; |
7e273b7f4f92
Irccd: new coding style, closes #576
David Demelier <markand@malikania.fr>
parents:
394
diff
changeset
|
48 class rule_service; |
7e273b7f4f92
Irccd: new coding style, closes #576
David Demelier <markand@malikania.fr>
parents:
394
diff
changeset
|
49 class server_service; |
7e273b7f4f92
Irccd: new coding style, closes #576
David Demelier <markand@malikania.fr>
parents:
394
diff
changeset
|
50 class transport_service; |
291
b490853404d9
Irccd: split lib into libirccd, #564
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
51 |
b490853404d9
Irccd: split lib into libirccd, #564
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
52 /** |
b490853404d9
Irccd: split lib into libirccd, #564
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
53 * \brief Irccd main instance. |
b490853404d9
Irccd: split lib into libirccd, #564
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
54 */ |
488
7e273b7f4f92
Irccd: new coding style, closes #576
David Demelier <markand@malikania.fr>
parents:
394
diff
changeset
|
55 class irccd { |
291
b490853404d9
Irccd: split lib into libirccd, #564
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
56 private: |
653
026a8dd20bd4
Irccd: style (irccd) #782
David Demelier <markand@malikania.fr>
parents:
630
diff
changeset
|
57 // Configuration. |
026a8dd20bd4
Irccd: style (irccd) #782
David Demelier <markand@malikania.fr>
parents:
630
diff
changeset
|
58 config config_; |
525
d070d33bf4a0
Plugin hangman: finally switch to boost
David Demelier <markand@malikania.fr>
parents:
519
diff
changeset
|
59 |
534
2326a4dc39e6
Irccd: rewrite transports in Boost.Asio, closes #681
David Demelier <markand@malikania.fr>
parents:
525
diff
changeset
|
60 // Main io service. |
2326a4dc39e6
Irccd: rewrite transports in Boost.Asio, closes #681
David Demelier <markand@malikania.fr>
parents:
525
diff
changeset
|
61 boost::asio::io_service& service_; |
2326a4dc39e6
Irccd: rewrite transports in Boost.Asio, closes #681
David Demelier <markand@malikania.fr>
parents:
525
diff
changeset
|
62 |
585
1ad88e2e3086
Irccd: config class no longer load things, closes #744
David Demelier <markand@malikania.fr>
parents:
569
diff
changeset
|
63 // Tells if the configuration has already been called. |
1ad88e2e3086
Irccd: config class no longer load things, closes #744
David Demelier <markand@malikania.fr>
parents:
569
diff
changeset
|
64 bool loaded_{false}; |
1ad88e2e3086
Irccd: config class no longer load things, closes #744
David Demelier <markand@malikania.fr>
parents:
569
diff
changeset
|
65 |
599
e531f04507aa
Irccd: move logger into libirccd, closes #740
David Demelier <markand@malikania.fr>
parents:
596
diff
changeset
|
66 // Custom logger. |
725
0dbe1842a7d8
Irccd: rework loggers, closes #793 @3h
David Demelier <markand@malikania.fr>
parents:
708
diff
changeset
|
67 std::unique_ptr<logger::sink> sink_; |
599
e531f04507aa
Irccd: move logger into libirccd, closes #740
David Demelier <markand@malikania.fr>
parents:
596
diff
changeset
|
68 |
291
b490853404d9
Irccd: split lib into libirccd, #564
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
69 // Services. |
742 | 70 std::unique_ptr<server_service> server_service_; |
71 std::unique_ptr<transport_service> tpt_service_; | |
72 std::unique_ptr<rule_service> rule_service_; | |
73 std::unique_ptr<plugin_service> plugin_service_; | |
291
b490853404d9
Irccd: split lib into libirccd, #564
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
74 |
742 | 75 // Not copyable and not movable because services have references to irccd. |
488
7e273b7f4f92
Irccd: new coding style, closes #576
David Demelier <markand@malikania.fr>
parents:
394
diff
changeset
|
76 irccd(const irccd&) = delete; |
7e273b7f4f92
Irccd: new coding style, closes #576
David Demelier <markand@malikania.fr>
parents:
394
diff
changeset
|
77 irccd(irccd&&) = delete; |
291
b490853404d9
Irccd: split lib into libirccd, #564
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
78 |
742 | 79 void operator=(const irccd&) = delete; |
80 void operator=(irccd&&) = delete; | |
291
b490853404d9
Irccd: split lib into libirccd, #564
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
81 |
585
1ad88e2e3086
Irccd: config class no longer load things, closes #744
David Demelier <markand@malikania.fr>
parents:
569
diff
changeset
|
82 // Load functions. |
599
e531f04507aa
Irccd: move logger into libirccd, closes #740
David Demelier <markand@malikania.fr>
parents:
596
diff
changeset
|
83 void load_logs_file(const ini::section&); |
e531f04507aa
Irccd: move logger into libirccd, closes #740
David Demelier <markand@malikania.fr>
parents:
596
diff
changeset
|
84 void load_logs_syslog(); |
585
1ad88e2e3086
Irccd: config class no longer load things, closes #744
David Demelier <markand@malikania.fr>
parents:
569
diff
changeset
|
85 void load_logs(); |
1ad88e2e3086
Irccd: config class no longer load things, closes #744
David Demelier <markand@malikania.fr>
parents:
569
diff
changeset
|
86 void load_formats(); |
1ad88e2e3086
Irccd: config class no longer load things, closes #744
David Demelier <markand@malikania.fr>
parents:
569
diff
changeset
|
87 |
291
b490853404d9
Irccd: split lib into libirccd, #564
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
88 public: |
b490853404d9
Irccd: split lib into libirccd, #564
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
89 /** |
757
97b356010785
Irccd: create (command|jsapi)::registry
David Demelier <markand@malikania.fr>
parents:
742
diff
changeset
|
90 * Constructor. |
97b356010785
Irccd: create (command|jsapi)::registry
David Demelier <markand@malikania.fr>
parents:
742
diff
changeset
|
91 * |
97b356010785
Irccd: create (command|jsapi)::registry
David Demelier <markand@malikania.fr>
parents:
742
diff
changeset
|
92 * This only create a barebone irccd instance. |
519
63faa8087c46
Irccd: store configuration path, closes #723
David Demelier <markand@malikania.fr>
parents:
516
diff
changeset
|
93 * |
534
2326a4dc39e6
Irccd: rewrite transports in Boost.Asio, closes #681
David Demelier <markand@malikania.fr>
parents:
525
diff
changeset
|
94 * \param service the service |
519
63faa8087c46
Irccd: store configuration path, closes #723
David Demelier <markand@malikania.fr>
parents:
516
diff
changeset
|
95 * \param config the optional path to the configuration. |
757
97b356010785
Irccd: create (command|jsapi)::registry
David Demelier <markand@malikania.fr>
parents:
742
diff
changeset
|
96 * \see load_all |
97b356010785
Irccd: create (command|jsapi)::registry
David Demelier <markand@malikania.fr>
parents:
742
diff
changeset
|
97 * \see load_config |
291
b490853404d9
Irccd: split lib into libirccd, #564
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
98 */ |
534
2326a4dc39e6
Irccd: rewrite transports in Boost.Asio, closes #681
David Demelier <markand@malikania.fr>
parents:
525
diff
changeset
|
99 irccd(boost::asio::io_service& service, std::string config = ""); |
291
b490853404d9
Irccd: split lib into libirccd, #564
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
100 |
b490853404d9
Irccd: split lib into libirccd, #564
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
101 /** |
516
bb65cec664c5
Irccd: use unique_ptr for services
David Demelier <markand@malikania.fr>
parents:
488
diff
changeset
|
102 * Default destructor. |
bb65cec664c5
Irccd: use unique_ptr for services
David Demelier <markand@malikania.fr>
parents:
488
diff
changeset
|
103 */ |
bb65cec664c5
Irccd: use unique_ptr for services
David Demelier <markand@malikania.fr>
parents:
488
diff
changeset
|
104 ~irccd(); |
bb65cec664c5
Irccd: use unique_ptr for services
David Demelier <markand@malikania.fr>
parents:
488
diff
changeset
|
105 |
bb65cec664c5
Irccd: use unique_ptr for services
David Demelier <markand@malikania.fr>
parents:
488
diff
changeset
|
106 /** |
525
d070d33bf4a0
Plugin hangman: finally switch to boost
David Demelier <markand@malikania.fr>
parents:
519
diff
changeset
|
107 * Get the current configuration. |
519
63faa8087c46
Irccd: store configuration path, closes #723
David Demelier <markand@malikania.fr>
parents:
516
diff
changeset
|
108 * |
525
d070d33bf4a0
Plugin hangman: finally switch to boost
David Demelier <markand@malikania.fr>
parents:
519
diff
changeset
|
109 * \return the configuration |
519
63faa8087c46
Irccd: store configuration path, closes #723
David Demelier <markand@malikania.fr>
parents:
516
diff
changeset
|
110 */ |
742 | 111 auto get_config() const noexcept -> const config&; |
519
63faa8087c46
Irccd: store configuration path, closes #723
David Demelier <markand@malikania.fr>
parents:
516
diff
changeset
|
112 |
63faa8087c46
Irccd: store configuration path, closes #723
David Demelier <markand@malikania.fr>
parents:
516
diff
changeset
|
113 /** |
525
d070d33bf4a0
Plugin hangman: finally switch to boost
David Demelier <markand@malikania.fr>
parents:
519
diff
changeset
|
114 * Set the configuration. |
519
63faa8087c46
Irccd: store configuration path, closes #723
David Demelier <markand@malikania.fr>
parents:
516
diff
changeset
|
115 * |
525
d070d33bf4a0
Plugin hangman: finally switch to boost
David Demelier <markand@malikania.fr>
parents:
519
diff
changeset
|
116 * \param cfg the new config |
519
63faa8087c46
Irccd: store configuration path, closes #723
David Demelier <markand@malikania.fr>
parents:
516
diff
changeset
|
117 */ |
742 | 118 void set_config(config cfg) noexcept; |
519
63faa8087c46
Irccd: store configuration path, closes #723
David Demelier <markand@malikania.fr>
parents:
516
diff
changeset
|
119 |
546
fd96de07657a
Irccd: switch Irccd.Timer to Boost, closes #572
David Demelier <markand@malikania.fr>
parents:
534
diff
changeset
|
120 /** |
fd96de07657a
Irccd: switch Irccd.Timer to Boost, closes #572
David Demelier <markand@malikania.fr>
parents:
534
diff
changeset
|
121 * Get the underlying io service. |
fd96de07657a
Irccd: switch Irccd.Timer to Boost, closes #572
David Demelier <markand@malikania.fr>
parents:
534
diff
changeset
|
122 * |
fd96de07657a
Irccd: switch Irccd.Timer to Boost, closes #572
David Demelier <markand@malikania.fr>
parents:
534
diff
changeset
|
123 * \return the service |
fd96de07657a
Irccd: switch Irccd.Timer to Boost, closes #572
David Demelier <markand@malikania.fr>
parents:
534
diff
changeset
|
124 */ |
742 | 125 auto get_service() const noexcept -> const boost::asio::io_service&; |
534
2326a4dc39e6
Irccd: rewrite transports in Boost.Asio, closes #681
David Demelier <markand@malikania.fr>
parents:
525
diff
changeset
|
126 |
546
fd96de07657a
Irccd: switch Irccd.Timer to Boost, closes #572
David Demelier <markand@malikania.fr>
parents:
534
diff
changeset
|
127 /** |
fd96de07657a
Irccd: switch Irccd.Timer to Boost, closes #572
David Demelier <markand@malikania.fr>
parents:
534
diff
changeset
|
128 * Overloaded function. |
fd96de07657a
Irccd: switch Irccd.Timer to Boost, closes #572
David Demelier <markand@malikania.fr>
parents:
534
diff
changeset
|
129 * |
fd96de07657a
Irccd: switch Irccd.Timer to Boost, closes #572
David Demelier <markand@malikania.fr>
parents:
534
diff
changeset
|
130 * \return the service |
fd96de07657a
Irccd: switch Irccd.Timer to Boost, closes #572
David Demelier <markand@malikania.fr>
parents:
534
diff
changeset
|
131 */ |
742 | 132 auto get_service() noexcept -> boost::asio::io_service&; |
534
2326a4dc39e6
Irccd: rewrite transports in Boost.Asio, closes #681
David Demelier <markand@malikania.fr>
parents:
525
diff
changeset
|
133 |
519
63faa8087c46
Irccd: store configuration path, closes #723
David Demelier <markand@malikania.fr>
parents:
516
diff
changeset
|
134 /** |
599
e531f04507aa
Irccd: move logger into libirccd, closes #740
David Demelier <markand@malikania.fr>
parents:
596
diff
changeset
|
135 * Access the logger. |
e531f04507aa
Irccd: move logger into libirccd, closes #740
David Demelier <markand@malikania.fr>
parents:
596
diff
changeset
|
136 * |
e531f04507aa
Irccd: move logger into libirccd, closes #740
David Demelier <markand@malikania.fr>
parents:
596
diff
changeset
|
137 * \return the logger |
e531f04507aa
Irccd: move logger into libirccd, closes #740
David Demelier <markand@malikania.fr>
parents:
596
diff
changeset
|
138 */ |
742 | 139 auto get_log() const noexcept -> const logger::sink&; |
599
e531f04507aa
Irccd: move logger into libirccd, closes #740
David Demelier <markand@malikania.fr>
parents:
596
diff
changeset
|
140 |
e531f04507aa
Irccd: move logger into libirccd, closes #740
David Demelier <markand@malikania.fr>
parents:
596
diff
changeset
|
141 /** |
e531f04507aa
Irccd: move logger into libirccd, closes #740
David Demelier <markand@malikania.fr>
parents:
596
diff
changeset
|
142 * Overloaded function. |
e531f04507aa
Irccd: move logger into libirccd, closes #740
David Demelier <markand@malikania.fr>
parents:
596
diff
changeset
|
143 * |
e531f04507aa
Irccd: move logger into libirccd, closes #740
David Demelier <markand@malikania.fr>
parents:
596
diff
changeset
|
144 * \return the logger |
e531f04507aa
Irccd: move logger into libirccd, closes #740
David Demelier <markand@malikania.fr>
parents:
596
diff
changeset
|
145 */ |
742 | 146 auto get_log() noexcept -> logger::sink&; |
599
e531f04507aa
Irccd: move logger into libirccd, closes #740
David Demelier <markand@malikania.fr>
parents:
596
diff
changeset
|
147 |
e531f04507aa
Irccd: move logger into libirccd, closes #740
David Demelier <markand@malikania.fr>
parents:
596
diff
changeset
|
148 /** |
e531f04507aa
Irccd: move logger into libirccd, closes #740
David Demelier <markand@malikania.fr>
parents:
596
diff
changeset
|
149 * Set the logger. |
e531f04507aa
Irccd: move logger into libirccd, closes #740
David Demelier <markand@malikania.fr>
parents:
596
diff
changeset
|
150 * |
e531f04507aa
Irccd: move logger into libirccd, closes #740
David Demelier <markand@malikania.fr>
parents:
596
diff
changeset
|
151 * \pre logger != nullptr |
e531f04507aa
Irccd: move logger into libirccd, closes #740
David Demelier <markand@malikania.fr>
parents:
596
diff
changeset
|
152 * \param logger the new logger |
e531f04507aa
Irccd: move logger into libirccd, closes #740
David Demelier <markand@malikania.fr>
parents:
596
diff
changeset
|
153 */ |
725
0dbe1842a7d8
Irccd: rework loggers, closes #793 @3h
David Demelier <markand@malikania.fr>
parents:
708
diff
changeset
|
154 void set_log(std::unique_ptr<logger::sink> sink) noexcept; |
599
e531f04507aa
Irccd: move logger into libirccd, closes #740
David Demelier <markand@malikania.fr>
parents:
596
diff
changeset
|
155 |
e531f04507aa
Irccd: move logger into libirccd, closes #740
David Demelier <markand@malikania.fr>
parents:
596
diff
changeset
|
156 /** |
291
b490853404d9
Irccd: split lib into libirccd, #564
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
157 * Access the server service. |
b490853404d9
Irccd: split lib into libirccd, #564
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
158 * |
b490853404d9
Irccd: split lib into libirccd, #564
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
159 * \return the service |
b490853404d9
Irccd: split lib into libirccd, #564
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
160 */ |
742 | 161 auto servers() noexcept -> server_service&; |
291
b490853404d9
Irccd: split lib into libirccd, #564
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
162 |
b490853404d9
Irccd: split lib into libirccd, #564
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
163 /** |
b490853404d9
Irccd: split lib into libirccd, #564
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
164 * Access the transport service. |
b490853404d9
Irccd: split lib into libirccd, #564
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
165 * |
b490853404d9
Irccd: split lib into libirccd, #564
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
166 * \return the service |
b490853404d9
Irccd: split lib into libirccd, #564
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
167 */ |
742 | 168 auto transports() noexcept -> transport_service&; |
291
b490853404d9
Irccd: split lib into libirccd, #564
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
169 |
b490853404d9
Irccd: split lib into libirccd, #564
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
170 /** |
b490853404d9
Irccd: split lib into libirccd, #564
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
171 * Access the rule service. |
b490853404d9
Irccd: split lib into libirccd, #564
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
172 * |
b490853404d9
Irccd: split lib into libirccd, #564
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
173 * \return the service |
b490853404d9
Irccd: split lib into libirccd, #564
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
174 */ |
742 | 175 auto rules() noexcept -> rule_service&; |
291
b490853404d9
Irccd: split lib into libirccd, #564
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
176 |
b490853404d9
Irccd: split lib into libirccd, #564
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
177 /** |
b490853404d9
Irccd: split lib into libirccd, #564
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
178 * Access the plugin service. |
b490853404d9
Irccd: split lib into libirccd, #564
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
179 * |
b490853404d9
Irccd: split lib into libirccd, #564
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
180 * \return the service |
b490853404d9
Irccd: split lib into libirccd, #564
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
181 */ |
742 | 182 auto plugins() noexcept -> plugin_service&; |
585
1ad88e2e3086
Irccd: config class no longer load things, closes #744
David Demelier <markand@malikania.fr>
parents:
569
diff
changeset
|
183 |
1ad88e2e3086
Irccd: config class no longer load things, closes #744
David Demelier <markand@malikania.fr>
parents:
569
diff
changeset
|
184 /** |
1ad88e2e3086
Irccd: config class no longer load things, closes #744
David Demelier <markand@malikania.fr>
parents:
569
diff
changeset
|
185 * Load and re-apply the configuration to the daemon. |
1ad88e2e3086
Irccd: config class no longer load things, closes #744
David Demelier <markand@malikania.fr>
parents:
569
diff
changeset
|
186 */ |
1ad88e2e3086
Irccd: config class no longer load things, closes #744
David Demelier <markand@malikania.fr>
parents:
569
diff
changeset
|
187 void load() noexcept; |
291
b490853404d9
Irccd: split lib into libirccd, #564
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
188 }; |
b490853404d9
Irccd: split lib into libirccd, #564
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
189 |
569
24b79bccc181
Irccd: initial support of error code responses
David Demelier <markand@malikania.fr>
parents:
553
diff
changeset
|
190 /** |
24b79bccc181
Irccd: initial support of error code responses
David Demelier <markand@malikania.fr>
parents:
553
diff
changeset
|
191 * \brief Irccd error. |
24b79bccc181
Irccd: initial support of error code responses
David Demelier <markand@malikania.fr>
parents:
553
diff
changeset
|
192 */ |
670
95ac3ace1610
Common: introduce new io code
David Demelier <markand@malikania.fr>
parents:
653
diff
changeset
|
193 class irccd_error : public std::system_error { |
569
24b79bccc181
Irccd: initial support of error code responses
David Demelier <markand@malikania.fr>
parents:
553
diff
changeset
|
194 public: |
24b79bccc181
Irccd: initial support of error code responses
David Demelier <markand@malikania.fr>
parents:
553
diff
changeset
|
195 /** |
627
8c0942ee6e63
Irccd: do not use ranges for error codes
David Demelier <markand@malikania.fr>
parents:
603
diff
changeset
|
196 * \brief Irccd related errors. |
569
24b79bccc181
Irccd: initial support of error code responses
David Demelier <markand@malikania.fr>
parents:
553
diff
changeset
|
197 */ |
24b79bccc181
Irccd: initial support of error code responses
David Demelier <markand@malikania.fr>
parents:
553
diff
changeset
|
198 enum error { |
24b79bccc181
Irccd: initial support of error code responses
David Demelier <markand@malikania.fr>
parents:
553
diff
changeset
|
199 //!< No error. |
24b79bccc181
Irccd: initial support of error code responses
David Demelier <markand@malikania.fr>
parents:
553
diff
changeset
|
200 no_error = 0, |
24b79bccc181
Irccd: initial support of error code responses
David Demelier <markand@malikania.fr>
parents:
553
diff
changeset
|
201 |
24b79bccc181
Irccd: initial support of error code responses
David Demelier <markand@malikania.fr>
parents:
553
diff
changeset
|
202 //!< The connected peer is not irccd. |
24b79bccc181
Irccd: initial support of error code responses
David Demelier <markand@malikania.fr>
parents:
553
diff
changeset
|
203 not_irccd, |
24b79bccc181
Irccd: initial support of error code responses
David Demelier <markand@malikania.fr>
parents:
553
diff
changeset
|
204 |
24b79bccc181
Irccd: initial support of error code responses
David Demelier <markand@malikania.fr>
parents:
553
diff
changeset
|
205 //!< The irccd version is too different. |
24b79bccc181
Irccd: initial support of error code responses
David Demelier <markand@malikania.fr>
parents:
553
diff
changeset
|
206 incompatible_version, |
24b79bccc181
Irccd: initial support of error code responses
David Demelier <markand@malikania.fr>
parents:
553
diff
changeset
|
207 |
24b79bccc181
Irccd: initial support of error code responses
David Demelier <markand@malikania.fr>
parents:
553
diff
changeset
|
208 //!< Authentication was required but not issued. |
24b79bccc181
Irccd: initial support of error code responses
David Demelier <markand@malikania.fr>
parents:
553
diff
changeset
|
209 auth_required, |
24b79bccc181
Irccd: initial support of error code responses
David Demelier <markand@malikania.fr>
parents:
553
diff
changeset
|
210 |
24b79bccc181
Irccd: initial support of error code responses
David Demelier <markand@malikania.fr>
parents:
553
diff
changeset
|
211 //!< Authentication was invalid. |
24b79bccc181
Irccd: initial support of error code responses
David Demelier <markand@malikania.fr>
parents:
553
diff
changeset
|
212 invalid_auth, |
24b79bccc181
Irccd: initial support of error code responses
David Demelier <markand@malikania.fr>
parents:
553
diff
changeset
|
213 |
24b79bccc181
Irccd: initial support of error code responses
David Demelier <markand@malikania.fr>
parents:
553
diff
changeset
|
214 //!< The message was not a valid JSON object. |
24b79bccc181
Irccd: initial support of error code responses
David Demelier <markand@malikania.fr>
parents:
553
diff
changeset
|
215 invalid_message, |
24b79bccc181
Irccd: initial support of error code responses
David Demelier <markand@malikania.fr>
parents:
553
diff
changeset
|
216 |
24b79bccc181
Irccd: initial support of error code responses
David Demelier <markand@malikania.fr>
parents:
553
diff
changeset
|
217 //!< The specified command does not exist. |
24b79bccc181
Irccd: initial support of error code responses
David Demelier <markand@malikania.fr>
parents:
553
diff
changeset
|
218 invalid_command, |
24b79bccc181
Irccd: initial support of error code responses
David Demelier <markand@malikania.fr>
parents:
553
diff
changeset
|
219 |
24b79bccc181
Irccd: initial support of error code responses
David Demelier <markand@malikania.fr>
parents:
553
diff
changeset
|
220 //!< The specified command requires more arguments. |
24b79bccc181
Irccd: initial support of error code responses
David Demelier <markand@malikania.fr>
parents:
553
diff
changeset
|
221 incomplete_message, |
24b79bccc181
Irccd: initial support of error code responses
David Demelier <markand@malikania.fr>
parents:
553
diff
changeset
|
222 }; |
24b79bccc181
Irccd: initial support of error code responses
David Demelier <markand@malikania.fr>
parents:
553
diff
changeset
|
223 |
24b79bccc181
Irccd: initial support of error code responses
David Demelier <markand@malikania.fr>
parents:
553
diff
changeset
|
224 /** |
24b79bccc181
Irccd: initial support of error code responses
David Demelier <markand@malikania.fr>
parents:
553
diff
changeset
|
225 * Inherited constructors. |
24b79bccc181
Irccd: initial support of error code responses
David Demelier <markand@malikania.fr>
parents:
553
diff
changeset
|
226 */ |
24b79bccc181
Irccd: initial support of error code responses
David Demelier <markand@malikania.fr>
parents:
553
diff
changeset
|
227 using system_error::system_error; |
24b79bccc181
Irccd: initial support of error code responses
David Demelier <markand@malikania.fr>
parents:
553
diff
changeset
|
228 }; |
24b79bccc181
Irccd: initial support of error code responses
David Demelier <markand@malikania.fr>
parents:
553
diff
changeset
|
229 |
24b79bccc181
Irccd: initial support of error code responses
David Demelier <markand@malikania.fr>
parents:
553
diff
changeset
|
230 /** |
24b79bccc181
Irccd: initial support of error code responses
David Demelier <markand@malikania.fr>
parents:
553
diff
changeset
|
231 * Get the irccd error category singleton. |
24b79bccc181
Irccd: initial support of error code responses
David Demelier <markand@malikania.fr>
parents:
553
diff
changeset
|
232 * |
24b79bccc181
Irccd: initial support of error code responses
David Demelier <markand@malikania.fr>
parents:
553
diff
changeset
|
233 * \return the singleton |
24b79bccc181
Irccd: initial support of error code responses
David Demelier <markand@malikania.fr>
parents:
553
diff
changeset
|
234 */ |
742 | 235 auto irccd_category() noexcept -> const std::error_category&; |
569
24b79bccc181
Irccd: initial support of error code responses
David Demelier <markand@malikania.fr>
parents:
553
diff
changeset
|
236 |
24b79bccc181
Irccd: initial support of error code responses
David Demelier <markand@malikania.fr>
parents:
553
diff
changeset
|
237 /** |
734
649bb151f40d
Irccd: use std::error_code everywhere
David Demelier <markand@malikania.fr>
parents:
725
diff
changeset
|
238 * Create a std::error_code from irccd_error::error enum. |
569
24b79bccc181
Irccd: initial support of error code responses
David Demelier <markand@malikania.fr>
parents:
553
diff
changeset
|
239 * |
24b79bccc181
Irccd: initial support of error code responses
David Demelier <markand@malikania.fr>
parents:
553
diff
changeset
|
240 * \param e the error code |
24b79bccc181
Irccd: initial support of error code responses
David Demelier <markand@malikania.fr>
parents:
553
diff
changeset
|
241 */ |
742 | 242 auto make_error_code(irccd_error::error e) noexcept -> std::error_code; |
569
24b79bccc181
Irccd: initial support of error code responses
David Demelier <markand@malikania.fr>
parents:
553
diff
changeset
|
243 |
291
b490853404d9
Irccd: split lib into libirccd, #564
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
244 } // !irccd |
b490853404d9
Irccd: split lib into libirccd, #564
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
245 |
670
95ac3ace1610
Common: introduce new io code
David Demelier <markand@malikania.fr>
parents:
653
diff
changeset
|
246 namespace std { |
569
24b79bccc181
Irccd: initial support of error code responses
David Demelier <markand@malikania.fr>
parents:
553
diff
changeset
|
247 |
24b79bccc181
Irccd: initial support of error code responses
David Demelier <markand@malikania.fr>
parents:
553
diff
changeset
|
248 template <> |
24b79bccc181
Irccd: initial support of error code responses
David Demelier <markand@malikania.fr>
parents:
553
diff
changeset
|
249 struct is_error_code_enum<irccd::irccd_error::error> : public std::true_type { |
24b79bccc181
Irccd: initial support of error code responses
David Demelier <markand@malikania.fr>
parents:
553
diff
changeset
|
250 }; |
24b79bccc181
Irccd: initial support of error code responses
David Demelier <markand@malikania.fr>
parents:
553
diff
changeset
|
251 |
670
95ac3ace1610
Common: introduce new io code
David Demelier <markand@malikania.fr>
parents:
653
diff
changeset
|
252 } // !std |
569
24b79bccc181
Irccd: initial support of error code responses
David Demelier <markand@malikania.fr>
parents:
553
diff
changeset
|
253 |
603
986ed3a7575d
Misc: fix includes style, closes #732
David Demelier <markand@malikania.fr>
parents:
599
diff
changeset
|
254 #endif // !IRCCD_DAEMON_IRCCD_HPP |