1 /* This Source Code Form is subject to the terms of the Mozilla Public
2 * License, v. 2.0. If a copy of the MPL was not distributed with this
3 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
4 #ifndef COMMONAPI_DBUS_DBUS_MESSAGE_H_
5 #define COMMONAPI_DBUS_DBUS_MESSAGE_H_
19 DBusMessage(::DBusMessage* libdbusMessage);
20 DBusMessage(::DBusMessage* libdbusMessage, bool increaseReferenceCount);
21 DBusMessage(const DBusMessage& src);
22 DBusMessage(DBusMessage&& src);
26 DBusMessage& operator=(const DBusMessage& src);
27 DBusMessage& operator=(DBusMessage&& rsrc);
28 operator bool() const;
30 static DBusMessage createOrgFreedesktopOrgMethodCall(const char* methodName,
31 const char* signature = NULL);
33 static DBusMessage createOrgFreedesktopOrgMethodCall(const std::string& methodName,
34 const std::string& signature = "");
36 static DBusMessage createMethodCall(const char* busName,
37 const char* objectPath,
38 const char* interfaceName,
39 const char* methodName,
40 const char* signature = NULL);
42 static DBusMessage createMethodCall(const std::string& busName,
43 const std::string& objectPath,
44 const std::string& interfaceName,
45 const std::string& methodName,
46 const std::string& signature = "");
48 DBusMessage createMethodReturn(const char* signature = NULL) const;
50 DBusMessage createMethodReturn(const std::string& signature) const;
52 static DBusMessage createSignal(const char* objectPath,
53 const char* interfaceName,
54 const char* signalName,
55 const char* signature = NULL);
57 static DBusMessage createSignal(const std::string& objectPath,
58 const std::string& interfaceName,
59 const std::string& signalName,
60 const std::string& signature = "");
62 const char* getSenderName() const;
63 const char* getObjectPath() const;
64 const char* getInterfaceName() const;
65 const char* getMemberName() const;
66 const char* getSignatureString() const;
67 const char* getErrorName() const;
69 bool hasMemberName(const char* memberName) const;
70 bool hasSignature(const char* signature) const;
72 enum class Type: int {
73 Invalid = DBUS_MESSAGE_TYPE_INVALID,
74 MethodCall = DBUS_MESSAGE_TYPE_METHOD_CALL,
75 MethodReturn = DBUS_MESSAGE_TYPE_METHOD_RETURN,
76 Error = DBUS_MESSAGE_TYPE_ERROR,
77 Signal = DBUS_MESSAGE_TYPE_SIGNAL
79 const Type getType() const;
80 inline bool isInvalidType() const;
81 inline bool isMethodCallType() const;
82 inline bool isMethodReturnType() const;
83 inline bool isErrorType() const;
84 inline bool isSignalType() const;
86 char* getBodyData() const;
87 int getBodyLength() const;
88 int getBodySize() const;
90 bool setBodyLength(const int bodyLength);
93 ::DBusMessage* libdbusMessage_;
95 friend class DBusConnection;
98 bool DBusMessage::isInvalidType() const {
99 return (getType() == Type::Invalid);
102 bool DBusMessage::isMethodCallType() const {
103 return (getType() == Type::MethodCall);
106 bool DBusMessage::isMethodReturnType() const {
107 return (getType() == Type::MethodReturn);
110 bool DBusMessage::isErrorType() const {
111 return (getType() == Type::Error);
114 bool DBusMessage::isSignalType() const {
115 return (getType() == Type::Signal);
119 } // namespace CommonAPI
121 #endif // COMMONAPI_DBUS_DBUS_MESSAGE_H_