sdbus-c++ 2.1.0
High-level C++ D-Bus library based on systemd D-Bus implementation
Loading...
Searching...
No Matches
VTableItems.h
Go to the documentation of this file.
1
25
26#ifndef SDBUS_CXX_VTABLEITEMS_H_
27#define SDBUS_CXX_VTABLEITEMS_H_
28
29#include <sdbus-c++/Flags.h>
30#include <sdbus-c++/Types.h>
32
33#include <string>
34#include <variant>
35#include <vector>
36
37namespace sdbus {
38
40 {
41 template <typename _Function> MethodVTableItem& implementedAs(_Function&& callback);
42 MethodVTableItem& withInputParamNames(std::vector<std::string> names);
43 template <typename... _String> MethodVTableItem& withInputParamNames(_String... names);
44 MethodVTableItem& withOutputParamNames(std::vector<std::string> names);
45 template <typename... _String> MethodVTableItem& withOutputParamNames(_String... names);
46 MethodVTableItem& markAsDeprecated();
47 MethodVTableItem& markAsPrivileged();
48 MethodVTableItem& withNoReply();
49
50 MethodName name;
51 Signature inputSignature;
52 std::vector<std::string> inputParamNames;
53 Signature outputSignature;
54 std::vector<std::string> outputParamNames;
55 method_callback callbackHandler;
56 Flags flags;
57 };
58
59 MethodVTableItem registerMethod(MethodName methodName);
60 MethodVTableItem registerMethod(std::string methodName);
61
63 {
64 template <typename... _Args> SignalVTableItem& withParameters();
65 template <typename... _Args> SignalVTableItem& withParameters(std::vector<std::string> names);
66 template <typename... _Args, typename... _String> SignalVTableItem& withParameters(_String... names);
67 SignalVTableItem& markAsDeprecated();
68
69 SignalName name;
70 Signature signature;
71 std::vector<std::string> paramNames;
72 Flags flags;
73 };
74
75 SignalVTableItem registerSignal(SignalName signalName);
76 SignalVTableItem registerSignal(std::string signalName);
77
79 {
80 template <typename _Function> PropertyVTableItem& withGetter(_Function&& callback);
81 template <typename _Function> PropertyVTableItem& withSetter(_Function&& callback);
82 PropertyVTableItem& markAsDeprecated();
83 PropertyVTableItem& markAsPrivileged();
84 PropertyVTableItem& withUpdateBehavior(Flags::PropertyUpdateBehaviorFlags behavior);
85
86 PropertyName name;
87 Signature signature;
88 property_get_callback getter;
89 property_set_callback setter;
90 Flags flags;
91 };
92
93 PropertyVTableItem registerProperty(PropertyName propertyName);
94 PropertyVTableItem registerProperty(std::string propertyName);
95
97 {
98 InterfaceFlagsVTableItem& markAsDeprecated();
99 InterfaceFlagsVTableItem& markAsPrivileged();
100 InterfaceFlagsVTableItem& withNoReplyMethods();
101 InterfaceFlagsVTableItem& withPropertyUpdateBehavior(Flags::PropertyUpdateBehaviorFlags behavior);
102
103 Flags flags;
104 };
105
106 InterfaceFlagsVTableItem setInterfaceFlags();
107
108 using VTableItem = std::variant<MethodVTableItem, SignalVTableItem, PropertyVTableItem, InterfaceFlagsVTableItem>;
109
110} // namespace sdbus
111
112#endif /* SDBUS_CXX_VTABLEITEMS_H_ */
Definition Flags.h:37
Definition Types.h:282
Definition VTableItems.h:97
Definition VTableItems.h:40
Definition VTableItems.h:79
Definition VTableItems.h:63