| 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 #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 737 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 748 } | 748 } |
| 749 | 749 |
| 750 bool MessageReader::PopVariant(MessageReader* sub_reader) { | 750 bool MessageReader::PopVariant(MessageReader* sub_reader) { |
| 751 return PopContainer(DBUS_TYPE_VARIANT, sub_reader); | 751 return PopContainer(DBUS_TYPE_VARIANT, sub_reader); |
| 752 } | 752 } |
| 753 | 753 |
| 754 bool MessageReader::PopArrayOfBytes(uint8** bytes, size_t* length) { | 754 bool MessageReader::PopArrayOfBytes(uint8** bytes, size_t* length) { |
| 755 MessageReader array_reader(message_); | 755 MessageReader array_reader(message_); |
| 756 if (!PopArray(&array_reader)) | 756 if (!PopArray(&array_reader)) |
| 757 return false; | 757 return false; |
| 758 // An empty array is allowed. |
| 759 if (!array_reader.HasMoreData()) { |
| 760 *length = 0; |
| 761 *bytes = NULL; |
| 762 return true; |
| 763 } |
| 758 if (!array_reader.CheckDataType(DBUS_TYPE_BYTE)) | 764 if (!array_reader.CheckDataType(DBUS_TYPE_BYTE)) |
| 759 return false; | 765 return false; |
| 760 int int_length = 0; | 766 int int_length = 0; |
| 761 dbus_message_iter_get_fixed_array(&array_reader.raw_message_iter_, | 767 dbus_message_iter_get_fixed_array(&array_reader.raw_message_iter_, |
| 762 bytes, | 768 bytes, |
| 763 &int_length); | 769 &int_length); |
| 764 *length = static_cast<int>(int_length); | 770 *length = static_cast<int>(int_length); |
| 765 return bytes != NULL; | 771 return true; |
| 766 } | 772 } |
| 767 | 773 |
| 768 bool MessageReader::PopArrayOfStrings( | 774 bool MessageReader::PopArrayOfStrings( |
| 769 std::vector<std::string> *strings) { | 775 std::vector<std::string> *strings) { |
| 770 MessageReader array_reader(message_); | 776 MessageReader array_reader(message_); |
| 771 if (!PopArray(&array_reader)) | 777 if (!PopArray(&array_reader)) |
| 772 return false; | 778 return false; |
| 773 while (array_reader.HasMoreData()) { | 779 while (array_reader.HasMoreData()) { |
| 774 std::string string; | 780 std::string string; |
| 775 if (!array_reader.PopString(&string)) | 781 if (!array_reader.PopString(&string)) |
| (...skipping 112 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 888 } | 894 } |
| 889 | 895 |
| 890 bool MessageReader::PopVariantOfBasic(int dbus_type, void* value) { | 896 bool MessageReader::PopVariantOfBasic(int dbus_type, void* value) { |
| 891 dbus::MessageReader variant_reader(message_); | 897 dbus::MessageReader variant_reader(message_); |
| 892 if (!PopVariant(&variant_reader)) | 898 if (!PopVariant(&variant_reader)) |
| 893 return false; | 899 return false; |
| 894 return variant_reader.PopBasic(dbus_type, value); | 900 return variant_reader.PopBasic(dbus_type, value); |
| 895 } | 901 } |
| 896 | 902 |
| 897 } // namespace dbus | 903 } // namespace dbus |
| OLD | NEW |