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

Side by Side 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
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 #include "dbus/message.h" 5 #include "dbus/message.h"
6 6
7 #include "base/basictypes.h" 7 #include "base/basictypes.h"
8 #include "base/format_macros.h" 8 #include "base/format_macros.h"
9 #include "base/logging.h" 9 #include "base/logging.h"
10 #include "base/stringprintf.h" 10 #include "base/stringprintf.h"
(...skipping 160 matching lines...) Expand 10 before | Expand all | Expand 10 after
171 // member: SomeMethod 171 // member: SomeMethod
172 // 172 //
173 // string \"payload\" 173 // string \"payload\"
174 // ... 174 // ...
175 std::string Message::ToString() { 175 std::string Message::ToString() {
176 if (!raw_message_) 176 if (!raw_message_)
177 return ""; 177 return "";
178 178
179 // Generate headers first. 179 // Generate headers first.
180 std::string headers; 180 std::string headers;
181 const char* destination = dbus_message_get_destination(raw_message_); 181 const std::string destination = GetDestination();
182 if (destination) 182 if (!destination.empty())
183 headers += base::StringPrintf("destination: %s\n", destination); 183 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.
184 const char* path = dbus_message_get_path(raw_message_); 184 const std::string path = GetPath();
185 if (path) 185 if (!path.empty())
186 headers += base::StringPrintf("path: %s\n", path); 186 headers += "path: " + path + "\n";
187 const char* interface = dbus_message_get_interface(raw_message_); 187 const std::string interface = GetInterface();
188 if (interface) 188 if (!interface.empty())
189 headers += base::StringPrintf("interface: %s\n", interface); 189 headers += "interface: " + interface + "\n";
190 const char* member = dbus_message_get_member(raw_message_); 190 const std::string member = GetMember();
191 if (member) 191 if (!member.empty())
192 headers += base::StringPrintf("member: %s\n", member); 192 headers += "member: " + member + "\n";
193 const char* error_name = dbus_message_get_error_name(raw_message_); 193 const std::string error_name = GetErrorName();
194 if (error_name) 194 if (!error_name.empty())
195 headers += base::StringPrintf("error_name: %s\n", error_name); 195 headers += "error_name: " + error_name + "\n";
196 const char* sender = dbus_message_get_sender(raw_message_); 196 const std::string sender = GetSender();
197 if (sender) 197 if (!sender.empty())
198 headers += base::StringPrintf("sender: %s\n", sender); 198 headers += "sender: " + sender + "\n";
199 const char* signature = dbus_message_get_signature(raw_message_); 199 const std::string signature = GetSignature();
200 if (signature) 200 if (!signature.empty())
201 headers += base::StringPrintf("signature: %s\n", signature); 201 headers += "signature: " + signature + "\n";
202 const uint32 serial = GetSerial();
203 if (serial != 0)
204 headers += "serial: " + base::StringPrintf("%u", serial) + "\n";
205 const uint32 reply_serial = GetReplySerial();
206 if (reply_serial != 0)
207 headers += "reply_serial: " + base::StringPrintf("%u", reply_serial) + "\n";
202 208
203 // Generate the payload. 209 // Generate the payload.
204 MessageReader reader(this); 210 MessageReader reader(this);
205 return headers + "\n" + ToStringInternal("", &reader); 211 return headers + "\n" + ToStringInternal("", &reader);
206 } 212 }
207 213
214 void Message::SetDestination(const std::string& destination) {
215 const bool success = dbus_message_set_destination(raw_message_,
216 destination.c_str());
217 CHECK(success) << "Unable to allocate memory";
218 }
219
220 void Message::SetPath(const std::string& path) {
221 const bool success = dbus_message_set_path(raw_message_,
222 path.c_str());
223 CHECK(success) << "Unable to allocate memory";
224 }
225
226 void Message::SetInterface(const std::string& interface) {
227 const bool success = dbus_message_set_interface(raw_message_,
228 interface.c_str());
229 CHECK(success) << "Unable to allocate memory";
230 }
231
232 void Message::SetMember(const std::string& member) {
233 const bool success = dbus_message_set_member(raw_message_,
234 member.c_str());
235 CHECK(success) << "Unable to allocate memory";
236 }
237
238 void Message::SetErrorName(const std::string& error_name) {
239 const bool success = dbus_message_set_error_name(raw_message_,
240 error_name.c_str());
241 CHECK(success) << "Unable to allocate memory";
242 }
243
244 void Message::SetSender(const std::string& sender) {
245 const bool success = dbus_message_set_sender(raw_message_,
246 sender.c_str());
247 CHECK(success) << "Unable to allocate memory";
248 }
249
250 void Message::SetSerial(uint32 serial) {
251 dbus_message_set_serial(raw_message_, serial);
252 }
253
254 void Message::SetReplySerial(uint32 reply_serial) {
255 dbus_message_set_reply_serial(raw_message_, reply_serial);
256 }
257
258 std::string Message::GetDestination() {
259 const char* destination = dbus_message_get_destination(raw_message_);
260 return destination ? destination : "";
261 }
262
263 std::string Message::GetPath() {
264 const char* path = dbus_message_get_path(raw_message_);
265 return path ? path : "";
266 }
267
268 std::string Message::GetInterface() {
269 const char* interface = dbus_message_get_interface(raw_message_);
270 return interface ? interface : "";
271 }
272
273 std::string Message::GetMember() {
274 const char* member = dbus_message_get_member(raw_message_);
275 return member ? member : "";
276 }
277
278 std::string Message::GetErrorName() {
279 const char* error_name = dbus_message_get_error_name(raw_message_);
280 return error_name ? error_name : "";
281 }
282
283 std::string Message::GetSender() {
284 const char* sender = dbus_message_get_sender(raw_message_);
285 return sender ? sender : "";
286 }
287
288 std::string Message::GetSignature() {
289 const char* signature = dbus_message_get_signature(raw_message_);
290 return signature ? signature : "";
291 }
292
293 uint32 Message::GetSerial() {
294 return dbus_message_get_serial(raw_message_);
295 }
296
297 uint32 Message::GetReplySerial() {
298 return dbus_message_get_reply_serial(raw_message_);
299 }
300
208 // 301 //
209 // MethodCall implementation. 302 // MethodCall implementation.
210 // 303 //
211 304
212 MethodCall::MethodCall(const std::string& interface_name, 305 MethodCall::MethodCall(const std::string& interface_name,
213 const std::string& method_name) 306 const std::string& method_name)
214 : Message(), 307 : Message() {
215 interface_name_(interface_name),
216 method_name_(method_name) {
217 reset_raw_message(dbus_message_new(DBUS_MESSAGE_TYPE_METHOD_CALL)); 308 reset_raw_message(dbus_message_new(DBUS_MESSAGE_TYPE_METHOD_CALL));
218 309
219 bool success = dbus_message_set_interface(raw_message(), 310 SetInterface(interface_name);
220 interface_name.c_str()); 311 SetMember(method_name);
221 CHECK(success) << "Unable to allocate memory";
222
223 success = dbus_message_set_member(raw_message(), method_name.c_str());
224 CHECK(success) << "Unable to allocate memory";
225 } 312 }
226 313
227 void MethodCall::SetServiceName(const std::string& service_name) { 314 MethodCall* MethodCall::FromRawMessage(DBusMessage* raw_message) {
228 const bool success = dbus_message_set_destination(raw_message(), 315 DCHECK_EQ(DBUS_MESSAGE_TYPE_METHOD_CALL, dbus_message_get_type(raw_message));
229 service_name.c_str());
230 CHECK(success) << "Unable to allocate memory";
231 }
232 316
233 void MethodCall::SetObjectPath(const std::string& object_path) { 317 const char* interface = dbus_message_get_interface(raw_message);
234 const bool success = dbus_message_set_path(raw_message(), 318 const char* member = dbus_message_get_member(raw_message);
235 object_path.c_str()); 319 if (!interface)
236 CHECK(success) << "Unable to allocate memory"; 320 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.
321 if (!member)
322 member = "";
323
324 MethodCall* method_call = new MethodCall(interface, member);
325 method_call->reset_raw_message(raw_message);
326 return method_call;
237 } 327 }
238 328
239 // 329 //
240 // Response implementation. 330 // Response implementation.
241 // 331 //
242 332
243 Response::Response() : Message() { 333 Response::Response() : Message() {
244 } 334 }
245 335
336 Response* Response::FromMethodCall(MethodCall* method_call) {
337 Response* response = new Response;
338 response->reset_raw_message(
339 dbus_message_new_method_return(method_call->raw_message()));
340 return response;
341 }
342
343 //
344 // ErrorResponse implementation.
345 //
346
347 ErrorResponse::ErrorResponse() : Message() {
348 }
349
350 ErrorResponse* ErrorResponse::FromMethodCall(
351 MethodCall* method_call,
352 const std::string& error_name,
353 const std::string& error_message) {
354 ErrorResponse* response = new ErrorResponse;
355 response->reset_raw_message(
356 dbus_message_new_error(method_call->raw_message(),
357 error_name.c_str(),
358 error_message.c_str()));
359 return response;
360 }
361
246 // 362 //
247 // MessageWriter implementation. 363 // MessageWriter implementation.
248 // 364 //
249 365
250 MessageWriter::MessageWriter(Message* message) : 366 MessageWriter::MessageWriter(Message* message) :
251 message_(message), 367 message_(message),
252 container_is_open_(false) { 368 container_is_open_(false) {
253 dbus_message_iter_init_append(message_->raw_message(), &raw_message_iter_); 369 dbus_message_iter_init_append(message_->raw_message(), &raw_message_iter_);
254 } 370 }
255 371
(...skipping 417 matching lines...) Expand 10 before | Expand all | Expand 10 after
673 } 789 }
674 790
675 bool MessageReader::PopVariantOfBasic(int dbus_type, void* value) { 791 bool MessageReader::PopVariantOfBasic(int dbus_type, void* value) {
676 dbus::MessageReader variant_reader(message_); 792 dbus::MessageReader variant_reader(message_);
677 if (!PopVariant(&variant_reader)) 793 if (!PopVariant(&variant_reader))
678 return false; 794 return false;
679 return variant_reader.PopBasic(dbus_type, value); 795 return variant_reader.PopBasic(dbus_type, value);
680 } 796 }
681 797
682 } // namespace dbus 798 } // namespace dbus
OLDNEW
« 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