Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(155)

Unified Diff: dbus/message.cc

Issue 7569020: Add utility functions to Message classes. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: get back one line Created 9 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: dbus/message.cc
diff --git a/dbus/message.cc b/dbus/message.cc
index 81182028120d466c61ab676ac6f93202078292dd..ba00a7d5d7e8c8cc05815ebd20b0b399b2cdf275 100644
--- a/dbus/message.cc
+++ b/dbus/message.cc
@@ -178,31 +178,124 @@ std::string Message::ToString() {
// Generate headers first.
std::string headers;
+ const std::string destination = GetDestination();
+ if (!destination.empty())
+ headers += "destination: " + destination + "\n";
stevenjb 2011/08/09 18:30:41 nit: We could simplify this code by creating a loc
satorux1 2011/08/09 20:39:08 Good idea. Done.
+ const std::string path = GetPath();
+ if (!path.empty())
+ headers += "path: " + path + "\n";
+ const std::string interface = GetInterface();
+ if (!interface.empty())
+ headers += "interface: " + interface + "\n";
+ const std::string member = GetMember();
+ if (!member.empty())
+ headers += "member: " + member + "\n";
+ const std::string error_name = GetErrorName();
+ if (!error_name.empty())
+ headers += "error_name: " + error_name + "\n";
+ const std::string sender = GetSender();
+ if (!sender.empty())
+ headers += "sender: " + sender + "\n";
+ const std::string signature = GetSignature();
+ if (!signature.empty())
+ headers += "signature: " + signature + "\n";
+ const uint32 serial = GetSerial();
+ if (serial != 0)
+ headers += "serial: " + base::StringPrintf("%u", serial) + "\n";
+ const uint32 reply_serial = GetReplySerial();
+ if (reply_serial != 0)
+ headers += "reply_serial: " + base::StringPrintf("%u", reply_serial) + "\n";
+
+ // Generate the payload.
+ MessageReader reader(this);
+ return headers + "\n" + ToStringInternal("", &reader);
+}
+
+void Message::SetDestination(const std::string& destination) {
+ const bool success = dbus_message_set_destination(raw_message_,
+ destination.c_str());
+ CHECK(success) << "Unable to allocate memory";
+}
+
+void Message::SetPath(const std::string& path) {
+ const bool success = dbus_message_set_path(raw_message_,
+ path.c_str());
+ CHECK(success) << "Unable to allocate memory";
+}
+
+void Message::SetInterface(const std::string& interface) {
+ const bool success = dbus_message_set_interface(raw_message_,
+ interface.c_str());
+ CHECK(success) << "Unable to allocate memory";
+}
+
+void Message::SetMember(const std::string& member) {
+ const bool success = dbus_message_set_member(raw_message_,
+ member.c_str());
+ CHECK(success) << "Unable to allocate memory";
+}
+
+void Message::SetErrorName(const std::string& error_name) {
+ const bool success = dbus_message_set_error_name(raw_message_,
+ error_name.c_str());
+ CHECK(success) << "Unable to allocate memory";
+}
+
+void Message::SetSender(const std::string& sender) {
+ const bool success = dbus_message_set_sender(raw_message_,
+ sender.c_str());
+ CHECK(success) << "Unable to allocate memory";
+}
+
+void Message::SetSerial(uint32 serial) {
+ dbus_message_set_serial(raw_message_, serial);
+}
+
+void Message::SetReplySerial(uint32 reply_serial) {
+ dbus_message_set_reply_serial(raw_message_, reply_serial);
+}
+
+std::string Message::GetDestination() {
const char* destination = dbus_message_get_destination(raw_message_);
- if (destination)
- headers += base::StringPrintf("destination: %s\n", destination);
+ return destination ? destination : "";
+}
+
+std::string Message::GetPath() {
const char* path = dbus_message_get_path(raw_message_);
- if (path)
- headers += base::StringPrintf("path: %s\n", path);
+ return path ? path : "";
+}
+
+std::string Message::GetInterface() {
const char* interface = dbus_message_get_interface(raw_message_);
- if (interface)
- headers += base::StringPrintf("interface: %s\n", interface);
+ return interface ? interface : "";
+}
+
+std::string Message::GetMember() {
const char* member = dbus_message_get_member(raw_message_);
- if (member)
- headers += base::StringPrintf("member: %s\n", member);
+ return member ? member : "";
+}
+
+std::string Message::GetErrorName() {
const char* error_name = dbus_message_get_error_name(raw_message_);
- if (error_name)
- headers += base::StringPrintf("error_name: %s\n", error_name);
+ return error_name ? error_name : "";
+}
+
+std::string Message::GetSender() {
const char* sender = dbus_message_get_sender(raw_message_);
- if (sender)
- headers += base::StringPrintf("sender: %s\n", sender);
+ return sender ? sender : "";
+}
+
+std::string Message::GetSignature() {
const char* signature = dbus_message_get_signature(raw_message_);
- if (signature)
- headers += base::StringPrintf("signature: %s\n", signature);
+ return signature ? signature : "";
+}
- // Generate the payload.
- MessageReader reader(this);
- return headers + "\n" + ToStringInternal("", &reader);
+uint32 Message::GetSerial() {
+ return dbus_message_get_serial(raw_message_);
+}
+
+uint32 Message::GetReplySerial() {
+ return dbus_message_get_reply_serial(raw_message_);
}
//
@@ -211,29 +304,26 @@ std::string Message::ToString() {
MethodCall::MethodCall(const std::string& interface_name,
const std::string& method_name)
- : Message(),
- interface_name_(interface_name),
- method_name_(method_name) {
+ : Message() {
reset_raw_message(dbus_message_new(DBUS_MESSAGE_TYPE_METHOD_CALL));
- bool success = dbus_message_set_interface(raw_message(),
- interface_name.c_str());
- CHECK(success) << "Unable to allocate memory";
-
- success = dbus_message_set_member(raw_message(), method_name.c_str());
- CHECK(success) << "Unable to allocate memory";
+ SetInterface(interface_name);
+ SetMember(method_name);
}
-void MethodCall::SetServiceName(const std::string& service_name) {
- const bool success = dbus_message_set_destination(raw_message(),
- service_name.c_str());
- CHECK(success) << "Unable to allocate memory";
-}
+MethodCall* MethodCall::FromRawMessage(DBusMessage* raw_message) {
+ DCHECK_EQ(DBUS_MESSAGE_TYPE_METHOD_CALL, dbus_message_get_type(raw_message));
-void MethodCall::SetObjectPath(const std::string& object_path) {
- const bool success = dbus_message_set_path(raw_message(),
- object_path.c_str());
- CHECK(success) << "Unable to allocate memory";
+ const char* interface = dbus_message_get_interface(raw_message);
+ const char* member = dbus_message_get_member(raw_message);
+ if (!interface)
+ interface = "";
stevenjb 2011/08/09 18:30:41 nit: might be slightly more readable as: std::stri
satorux1 2011/08/09 20:39:08 Good idea. Done.
+ if (!member)
+ member = "";
+
+ MethodCall* method_call = new MethodCall(interface, member);
+ method_call->reset_raw_message(raw_message);
+ return method_call;
}
//
@@ -243,6 +333,32 @@ void MethodCall::SetObjectPath(const std::string& object_path) {
Response::Response() : Message() {
}
+Response* Response::FromMethodCall(MethodCall* method_call) {
+ Response* response = new Response;
+ response->reset_raw_message(
+ dbus_message_new_method_return(method_call->raw_message()));
+ return response;
+}
+
+//
+// ErrorResponse implementation.
+//
+
+ErrorResponse::ErrorResponse() : Message() {
+}
+
+ErrorResponse* ErrorResponse::FromMethodCall(
+ MethodCall* method_call,
+ const std::string& error_name,
+ const std::string& error_message) {
+ ErrorResponse* response = new ErrorResponse;
+ response->reset_raw_message(
+ dbus_message_new_error(method_call->raw_message(),
+ error_name.c_str(),
+ error_message.c_str()));
+ return response;
+}
+
//
// MessageWriter implementation.
//
« dbus/message.h ('K') | « dbus/message.h ('k') | dbus/message_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698