| OLD | NEW |
| 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #ifndef DBUS_MESSAGE_H_ | 5 #ifndef DBUS_MESSAGE_H_ |
| 6 #define DBUS_MESSAGE_H_ | 6 #define DBUS_MESSAGE_H_ |
| 7 #pragma once | 7 #pragma once |
| 8 | 8 |
| 9 #include <string> | 9 #include <string> |
| 10 #include <vector> | 10 #include <vector> |
| (...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 67 // Returns the type of the message. Returns MESSAGE_INVALID if | 67 // Returns the type of the message. Returns MESSAGE_INVALID if |
| 68 // raw_message_ is NULL. | 68 // raw_message_ is NULL. |
| 69 MessageType GetMessageType(); | 69 MessageType GetMessageType(); |
| 70 | 70 |
| 71 DBusMessage* raw_message() { return raw_message_; } | 71 DBusMessage* raw_message() { return raw_message_; } |
| 72 | 72 |
| 73 // Resets raw_message_ with the given raw message. Takes the ownership | 73 // Resets raw_message_ with the given raw message. Takes the ownership |
| 74 // of raw_message. raw_message_ will be unref'ed in the destructor. | 74 // of raw_message. raw_message_ will be unref'ed in the destructor. |
| 75 void reset_raw_message(DBusMessage* raw_message); | 75 void reset_raw_message(DBusMessage* raw_message); |
| 76 | 76 |
| 77 // Sets the destination, the path, the interface, the member, etc. |
| 78 void SetDestination(const std::string& destination); |
| 79 void SetPath(const std::string& path); |
| 80 void SetInterface(const std::string& interface); |
| 81 void SetMember(const std::string& member); |
| 82 void SetErrorName(const std::string& error_name); |
| 83 void SetSender(const std::string& sender); |
| 84 void SetSerial(uint32 serial); |
| 85 void SetReplySerial(uint32 reply_serial); |
| 86 // SetSignature() does not exist as we cannot do it. |
| 87 |
| 88 // Gets the destination, the path, the interface, the member, etc. |
| 89 // If not set, an empty string is returned. |
| 90 std::string GetDestination(); |
| 91 std::string GetPath(); |
| 92 std::string GetInterface(); |
| 93 std::string GetMember(); |
| 94 std::string GetErrorName(); |
| 95 std::string GetSender(); |
| 96 std::string GetSignature(); |
| 97 // Gets the serial and reply serial numbers. Returns 0 if not set. |
| 98 uint32 GetSerial(); |
| 99 uint32 GetReplySerial(); |
| 100 |
| 77 // Returns the string representation of this message. Useful for | 101 // Returns the string representation of this message. Useful for |
| 78 // debugging. | 102 // debugging. |
| 79 std::string ToString(); | 103 std::string ToString(); |
| 80 | 104 |
| 81 private: | 105 private: |
| 82 // Helper function used in ToString(). | 106 // Helper function used in ToString(). |
| 83 std::string ToStringInternal(const std::string& indent, | 107 std::string ToStringInternal(const std::string& indent, |
| 84 MessageReader* reader); | 108 MessageReader* reader); |
| 85 | 109 |
| 86 DBusMessage* raw_message_; | 110 DBusMessage* raw_message_; |
| (...skipping 10 matching lines...) Expand all Loading... |
| 97 // interface ("org.freedesktop.DBus.Introspectable"), create a method | 121 // interface ("org.freedesktop.DBus.Introspectable"), create a method |
| 98 // call like this: | 122 // call like this: |
| 99 // | 123 // |
| 100 // MethodCall method_call(DBUS_INTERFACE_INTROSPECTABLE, "Get"); | 124 // MethodCall method_call(DBUS_INTERFACE_INTROSPECTABLE, "Get"); |
| 101 // | 125 // |
| 102 // The constructor creates the internal raw_message_, so the client | 126 // The constructor creates the internal raw_message_, so the client |
| 103 // doesn't need to set this with reset_raw_message(). | 127 // doesn't need to set this with reset_raw_message(). |
| 104 MethodCall(const std::string& interface_name, | 128 MethodCall(const std::string& interface_name, |
| 105 const std::string& method_name); | 129 const std::string& method_name); |
| 106 | 130 |
| 107 const std::string& interface_name() { return interface_name_; } | 131 // Returns a newly created MethodCall from the given raw message of the |
| 108 const std::string& method_name() { return method_name_; } | 132 // type DBUS_MESSAGE_TYPE_METHOD_CALL. The caller must delete the |
| 109 | 133 // returned object. Takes the ownership of |raw_message|. |
| 110 // Sets the service name. This will be handled by the object proxy. | 134 static MethodCall* FromRawMessage(DBusMessage* raw_message); |
| 111 void SetServiceName(const std::string& service_name); | |
| 112 // Sets the object path. This will be handled by the object proxy. | |
| 113 void SetObjectPath(const std::string& object_path); | |
| 114 | |
| 115 std::string interface_name_; | |
| 116 std::string method_name_; | |
| 117 | 135 |
| 118 DISALLOW_COPY_AND_ASSIGN(MethodCall); | 136 DISALLOW_COPY_AND_ASSIGN(MethodCall); |
| 119 }; | 137 }; |
| 120 | 138 |
| 121 // Response is a type of message used for receiving a response from a | 139 // Response is a type of message used for receiving a response from a |
| 122 // method via D-Bus. | 140 // method via D-Bus. |
| 123 class Response : public Message { | 141 class Response : public Message { |
| 124 public: | 142 public: |
| 125 // Creates a Response message. The internal raw message is NULL. | 143 // Creates a Response message. The internal raw message is NULL. |
| 126 // Classes that implment method calls need to set the raw message once a | 144 // Classes that implment method calls need to set the raw message once a |
| 127 // response is received from the server. See object_proxy.h. | 145 // response is received from the server. See object_proxy.h. |
| 128 Response(); | 146 Response(); |
| 129 | 147 |
| 148 // Returns a newly created Response from the given method call. The |
| 149 // caller must delete the returned object. Used for implementing |
| 150 // exported methods. |
| 151 static Response* FromMethodCall(MethodCall* method_call); |
| 152 |
| 130 private: | 153 private: |
| 131 DISALLOW_COPY_AND_ASSIGN(Response); | 154 DISALLOW_COPY_AND_ASSIGN(Response); |
| 132 }; | 155 }; |
| 133 | 156 |
| 157 // ErrorResponse is a type of message used to return an error to the |
| 158 // caller of a method. |
| 159 class ErrorResponse: public Message { |
| 160 public: |
| 161 // Creates a ErrorResponse message. The internal raw message is NULL. |
| 162 // Classes that implment method calls need to set the raw message once a |
| 163 // response is received from the server. See object_proxy.h. |
| 164 ErrorResponse(); |
| 165 |
| 166 // Returns a newly created ErrorResponse from the given method call, the |
| 167 // error name, and the error message. The error name looks like |
| 168 // "org.freedesktop.DBus.Error.Failed". Used for returning an error to a |
| 169 // failed method call. |
| 170 static ErrorResponse* FromMethodCall(MethodCall* method_call, |
| 171 const std::string& error_name, |
| 172 const std::string& error_message); |
| 173 |
| 174 private: |
| 175 DISALLOW_COPY_AND_ASSIGN(ErrorResponse); |
| 176 }; |
| 177 |
| 134 // MessageWriter is used to write outgoing messages for calling methods | 178 // MessageWriter is used to write outgoing messages for calling methods |
| 135 // and sending signals. | 179 // and sending signals. |
| 136 // | 180 // |
| 137 // The main design goal of MessageReader and MessageWriter classes is to | 181 // The main design goal of MessageReader and MessageWriter classes is to |
| 138 // provide a type safe API. In the past, there was a Chrome OS blocker | 182 // provide a type safe API. In the past, there was a Chrome OS blocker |
| 139 // bug, that took days to fix, that would have been prevented if the API | 183 // bug, that took days to fix, that would have been prevented if the API |
| 140 // was type-safe. | 184 // was type-safe. |
| 141 // | 185 // |
| 142 // For instance, instead of doing something like: | 186 // For instance, instead of doing something like: |
| 143 // | 187 // |
| (...skipping 180 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 324 | 368 |
| 325 Message* message_; | 369 Message* message_; |
| 326 DBusMessageIter raw_message_iter_; | 370 DBusMessageIter raw_message_iter_; |
| 327 | 371 |
| 328 DISALLOW_COPY_AND_ASSIGN(MessageReader); | 372 DISALLOW_COPY_AND_ASSIGN(MessageReader); |
| 329 }; | 373 }; |
| 330 | 374 |
| 331 } // namespace dbus | 375 } // namespace dbus |
| 332 | 376 |
| 333 #endif // DBUS_MESSAGE_H_ | 377 #endif // DBUS_MESSAGE_H_ |
| OLD | NEW |