summaryrefslogtreecommitdiff
path: root/src/components/rpc_base/include/rpc_base/rpc_base_dbus_inl.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/components/rpc_base/include/rpc_base/rpc_base_dbus_inl.h')
-rw-r--r--src/components/rpc_base/include/rpc_base/rpc_base_dbus_inl.h232
1 files changed, 142 insertions, 90 deletions
diff --git a/src/components/rpc_base/include/rpc_base/rpc_base_dbus_inl.h b/src/components/rpc_base/include/rpc_base/rpc_base_dbus_inl.h
index 5f9c45a060..2b968dd034 100644
--- a/src/components/rpc_base/include/rpc_base/rpc_base_dbus_inl.h
+++ b/src/components/rpc_base/include/rpc_base/rpc_base_dbus_inl.h
@@ -45,28 +45,32 @@ inline PrimitiveType::ValueState PrimitiveType::InitHelper(bool is_next) {
}
// static
-inline CompositeType::InitializationState CompositeType::InitHelper(bool is_next) {
+inline CompositeType::InitializationState CompositeType::InitHelper(
+ bool is_next) {
return is_next ? kInitialized : kUninitialized;
}
namespace impl {
-
// Helper functions to statically map int types to appropriate
// MessageReader functions
// Non-specialized versions doesn't have implementation
// Tells if next element of reader is of type T
-template<typename T> inline bool NextIs(const dbus::MessageReader& reader);
+template <typename T>
+inline bool NextIs(const dbus::MessageReader& reader);
// Takes next element of type T from reader
-template<typename T> inline T Take(dbus::MessageReader* reader);
+template <typename T>
+inline T Take(dbus::MessageReader* reader);
-template<> inline bool NextIs<int8_t>(const dbus::MessageReader& reader) {
+template <>
+inline bool NextIs<int8_t>(const dbus::MessageReader& reader) {
return reader.NextIsByte();
}
-template<> inline int8_t Take<int8_t>(dbus::MessageReader* reader) {
+template <>
+inline int8_t Take<int8_t>(dbus::MessageReader* reader) {
return static_cast<int8_t>(reader->TakeByte());
}
@@ -74,11 +78,13 @@ inline void Put(int8_t val, dbus::MessageWriter* writer) {
writer->PutByte(static_cast<uint8_t>(val));
}
-template<> inline bool NextIs<uint8_t>(const dbus::MessageReader& reader) {
+template <>
+inline bool NextIs<uint8_t>(const dbus::MessageReader& reader) {
return reader.NextIsByte();
}
-template<> inline uint8_t Take<uint8_t>(dbus::MessageReader* reader) {
+template <>
+inline uint8_t Take<uint8_t>(dbus::MessageReader* reader) {
return reader->TakeByte();
}
@@ -86,11 +92,13 @@ inline void Put(uint8_t val, dbus::MessageWriter* writer) {
writer->PutByte(val);
}
-template<> inline bool NextIs<int16_t>(const dbus::MessageReader& reader) {
+template <>
+inline bool NextIs<int16_t>(const dbus::MessageReader& reader) {
return reader.NextIsInt16();
}
-template<> inline int16_t Take<int16_t>(dbus::MessageReader* reader) {
+template <>
+inline int16_t Take<int16_t>(dbus::MessageReader* reader) {
return reader->TakeInt16();
}
@@ -98,11 +106,13 @@ inline void Put(int16_t val, dbus::MessageWriter* writer) {
writer->PutInt16(val);
}
-template<> inline bool NextIs<uint16_t>(const dbus::MessageReader& reader) {
+template <>
+inline bool NextIs<uint16_t>(const dbus::MessageReader& reader) {
return reader.NextIsUint16();
}
-template<> inline uint16_t Take<uint16_t>(dbus::MessageReader* reader) {
+template <>
+inline uint16_t Take<uint16_t>(dbus::MessageReader* reader) {
return reader->TakeUint16();
}
@@ -110,11 +120,13 @@ inline void Put(uint16_t val, dbus::MessageWriter* writer) {
writer->PutUint16(val);
}
-template<> inline bool NextIs<int32_t>(const dbus::MessageReader& reader) {
+template <>
+inline bool NextIs<int32_t>(const dbus::MessageReader& reader) {
return reader.NextIsInt32();
}
-template<> inline int32_t Take<int32_t>(dbus::MessageReader* reader) {
+template <>
+inline int32_t Take<int32_t>(dbus::MessageReader* reader) {
return reader->TakeInt32();
}
@@ -122,11 +134,13 @@ inline void Put(int32_t val, dbus::MessageWriter* writer) {
writer->PutInt32(val);
}
-template<> inline bool NextIs<uint32_t>(const dbus::MessageReader& reader) {
+template <>
+inline bool NextIs<uint32_t>(const dbus::MessageReader& reader) {
return reader.NextIsUint32();
}
-template<> inline uint32_t Take<uint32_t>(dbus::MessageReader* reader) {
+template <>
+inline uint32_t Take<uint32_t>(dbus::MessageReader* reader) {
return reader->TakeUint32();
}
@@ -134,11 +148,13 @@ inline void Put(uint32_t val, dbus::MessageWriter* writer) {
writer->PutUint32(val);
}
-template<> inline bool NextIs<int64_t>(const dbus::MessageReader& reader) {
+template <>
+inline bool NextIs<int64_t>(const dbus::MessageReader& reader) {
return reader.NextIsInt64();
}
-template<> inline int64_t Take<int64_t>(dbus::MessageReader* reader) {
+template <>
+inline int64_t Take<int64_t>(dbus::MessageReader* reader) {
return reader->TakeInt64();
}
@@ -146,11 +162,13 @@ inline void Put(int64_t val, dbus::MessageWriter* writer) {
writer->PutInt64(val);
}
-template<> inline bool NextIs<uint64_t>(const dbus::MessageReader& reader) {
+template <>
+inline bool NextIs<uint64_t>(const dbus::MessageReader& reader) {
return reader.NextIsUint64();
}
-template<> inline uint64_t Take<uint64_t>(dbus::MessageReader* reader) {
+template <>
+inline uint64_t Take<uint64_t>(dbus::MessageReader* reader) {
return reader->TakeUint64();
}
@@ -158,7 +176,8 @@ inline void Put(uint64_t val, dbus::MessageWriter* writer) {
writer->PutUint64(val);
}
-template<> inline std::string Take<std::string>(dbus::MessageReader* reader) {
+template <>
+inline std::string Take<std::string>(dbus::MessageReader* reader) {
return reader->TakeString();
}
@@ -167,66 +186,103 @@ inline void Put(const std::string val, dbus::MessageWriter* writer) {
}
// Type to DBus type id mappers
-template<typename T> char DbusTypeCode();
-template<> inline char DbusTypeCode<bool>() { return DBUS_TYPE_BOOLEAN; }
+template <typename T>
+char DbusTypeCode();
+template <>
+inline char DbusTypeCode<bool>() {
+ return DBUS_TYPE_BOOLEAN;
+}
// There is no dbus type for signed byte, map to unsigned
-template<> inline char DbusTypeCode<int8_t>() { return DBUS_TYPE_BYTE; }
-template<> inline char DbusTypeCode<uint8_t>() { return DBUS_TYPE_BYTE; }
-template<> inline char DbusTypeCode<int16_t>() { return DBUS_TYPE_INT16; }
-template<> inline char DbusTypeCode<uint16_t>() { return DBUS_TYPE_UINT16; }
-template<> inline char DbusTypeCode<int32_t>() { return DBUS_TYPE_INT32; }
-template<> inline char DbusTypeCode<uint32_t>() { return DBUS_TYPE_UINT32; }
-template<> inline char DbusTypeCode<int64_t>() { return DBUS_TYPE_INT64; }
-template<> inline char DbusTypeCode<uint64_t>() { return DBUS_TYPE_UINT64; }
-template<> inline char DbusTypeCode<double>() { return DBUS_TYPE_DOUBLE; }
-template<> inline char DbusTypeCode<std::string>() { return DBUS_TYPE_STRING; }
-template<> inline char DbusTypeCode<const std::string>() { return DBUS_TYPE_STRING; }
+template <>
+inline char DbusTypeCode<int8_t>() {
+ return DBUS_TYPE_BYTE;
+}
+template <>
+inline char DbusTypeCode<uint8_t>() {
+ return DBUS_TYPE_BYTE;
+}
+template <>
+inline char DbusTypeCode<int16_t>() {
+ return DBUS_TYPE_INT16;
+}
+template <>
+inline char DbusTypeCode<uint16_t>() {
+ return DBUS_TYPE_UINT16;
+}
+template <>
+inline char DbusTypeCode<int32_t>() {
+ return DBUS_TYPE_INT32;
+}
+template <>
+inline char DbusTypeCode<uint32_t>() {
+ return DBUS_TYPE_UINT32;
+}
+template <>
+inline char DbusTypeCode<int64_t>() {
+ return DBUS_TYPE_INT64;
+}
+template <>
+inline char DbusTypeCode<uint64_t>() {
+ return DBUS_TYPE_UINT64;
+}
+template <>
+inline char DbusTypeCode<double>() {
+ return DBUS_TYPE_DOUBLE;
+}
+template <>
+inline char DbusTypeCode<std::string>() {
+ return DBUS_TYPE_STRING;
+}
+template <>
+inline char DbusTypeCode<const std::string>() {
+ return DBUS_TYPE_STRING;
+}
// Non-specialized template supposes there is static
// void GetDbusSignature(std::string*) method in T
-template<typename T>
+template <typename T>
struct DbusSignatureHelper {
static void DbusSignature(std::string* signature) {
T::GetDbusSignature(signature);
}
};
-template<>
+template <>
struct DbusSignatureHelper<Boolean> {
static void DbusSignature(std::string* signature) {
(*signature) += rpc::impl::DbusTypeCode<bool>();
}
};
-template<typename T, T minval, T maxval>
+template <typename T, T minval, T maxval>
struct DbusSignatureHelper<Integer<T, minval, maxval> > {
static void DbusSignature(std::string* signature) {
(*signature) += rpc::impl::DbusTypeCode<T>();
}
};
-template<int64_t minnum, int64_t maxnum, int64_t minden, int64_t maxden>
+template <int64_t minnum, int64_t maxnum, int64_t minden, int64_t maxden>
struct DbusSignatureHelper<Float<minnum, maxnum, minden, maxden> > {
static void DbusSignature(std::string* signature) {
(*signature) += rpc::impl::DbusTypeCode<double>();
}
};
-template<typename T>
+template <typename T>
struct DbusSignatureHelper<Enum<T> > {
static void DbusSignature(std::string* signature) {
(*signature) += rpc::impl::DbusTypeCode<int32_t>();
}
};
-template<size_t minlen, size_t maxlen>
+template <size_t minlen, size_t maxlen>
struct DbusSignatureHelper<String<minlen, maxlen> > {
static void DbusSignature(std::string* signature) {
(*signature) += rpc::impl::DbusTypeCode<std::string>();
}
};
-template<typename K, typename V>
+template <typename K, typename V>
struct DbusSignatureHelper<std::pair<K, V> > {
static void DbusSignature(std::string* signature) {
(*signature) += DBUS_DICT_ENTRY_BEGIN_CHAR;
@@ -236,7 +292,7 @@ struct DbusSignatureHelper<std::pair<K, V> > {
}
};
-template<typename T, size_t minsize, size_t maxsize>
+template <typename T, size_t minsize, size_t maxsize>
struct DbusSignatureHelper<Array<T, minsize, maxsize> > {
static void DbusSignature(std::string* signature) {
(*signature) += DBUS_TYPE_ARRAY;
@@ -244,16 +300,16 @@ struct DbusSignatureHelper<Array<T, minsize, maxsize> > {
}
};
-template<typename T, size_t minsize, size_t maxsize>
+template <typename T, size_t minsize, size_t maxsize>
struct DbusSignatureHelper<Map<T, minsize, maxsize> > {
static void DbusSignature(std::string* signature) {
(*signature) += DBUS_TYPE_ARRAY;
- rpc::impl::DbusSignatureHelper<
- typename Map<T, minsize, maxsize>::value_type>::DbusSignature(signature);
+ rpc::impl::DbusSignatureHelper<typename Map<T, minsize, maxsize>::
+ value_type>::DbusSignature(signature);
}
};
-template<typename T>
+template <typename T>
struct DbusSignatureHelper<Optional<T> > {
static void DbusSignature(std::string* signature) {
(*signature) += DBUS_STRUCT_BEGIN_CHAR;
@@ -263,7 +319,7 @@ struct DbusSignatureHelper<Optional<T> > {
}
};
-template<typename T>
+template <typename T>
struct DbusSignatureHelper<Nullable<T> > {
static void DbusSignature(std::string* signature) {
(*signature) += DBUS_STRUCT_BEGIN_CHAR;
@@ -274,7 +330,7 @@ struct DbusSignatureHelper<Nullable<T> > {
};
// Helper Optional type initialization functipon
-template<typename T>
+template <typename T>
T TakeOptional(dbus::MessageReader* reader) {
dbus::MessageReader struct_reader = reader->TakeStructReader();
bool available = struct_reader.TakeBool();
@@ -283,7 +339,7 @@ T TakeOptional(dbus::MessageReader* reader) {
}
// Helper Nullable type initialization functipon
-template<typename T>
+template <typename T>
bool TakeNullable(dbus::MessageReader* reader) {
dbus::MessageReader struct_reader = reader->TakeStructReader();
bool is_null = struct_reader.TakeBool();
@@ -292,69 +348,67 @@ bool TakeNullable(dbus::MessageReader* reader) {
} // namespace impl
-
// Helper function that outputs dbus signature for type T
-template<typename T>
+template <typename T>
void DbusSignature(std::string* signature) {
impl::DbusSignatureHelper<T>::DbusSignature(signature);
}
// Type constructors
inline Boolean::Boolean(dbus::MessageReader* reader)
- : PrimitiveType(InitHelper(reader->NextIsBool())),
- value_(reader->TakeBool()) {
-}
+ : PrimitiveType(InitHelper(reader->NextIsBool()))
+ , value_(reader->TakeBool()) {}
-template<typename T, T minval, T maxval>
+template <typename T, T minval, T maxval>
inline Integer<T, minval, maxval>::Integer(dbus::MessageReader* reader)
- : PrimitiveType(InitHelper(impl::NextIs<IntType>(*reader))),
- value_(impl::Take<IntType>(reader)) {
+ : PrimitiveType(InitHelper(impl::NextIs<IntType>(*reader)))
+ , value_(impl::Take<IntType>(reader)) {
if (is_valid()) {
value_state_ = range_.Includes(value_) ? kValid : kInvalid;
}
}
-template<int64_t minnum, int64_t maxnum, int64_t minden, int64_t maxden>
+template <int64_t minnum, int64_t maxnum, int64_t minden, int64_t maxden>
inline Float<minnum, maxnum, minden, maxden>::Float(dbus::MessageReader* reader)
- : PrimitiveType(InitHelper(reader->NextIsDouble())),
- value_(reader->TakeDouble()) {
+ : PrimitiveType(InitHelper(reader->NextIsDouble()))
+ , value_(reader->TakeDouble()) {
if (is_valid()) {
value_state_ = range_.Includes(value_) ? kValid : kInvalid;
}
}
-template<size_t minlen, size_t maxlen>
+template <size_t minlen, size_t maxlen>
inline String<minlen, maxlen>::String(dbus::MessageReader* reader)
- : PrimitiveType(InitHelper(reader->NextIsString())),
- value_(reader->TakeString()) {
+ : PrimitiveType(InitHelper(reader->NextIsString()))
+ , value_(reader->TakeString()) {
if (is_valid()) {
value_state_ = length_range_.Includes(value_.length()) ? kValid : kInvalid;
}
}
-template<typename T>
+template <typename T>
inline Enum<T>::Enum(dbus::MessageReader* reader)
- : PrimitiveType(InitHelper(reader->NextIsInt32())),
- value_(EnumType(reader->TakeInt32())) {
+ : PrimitiveType(InitHelper(reader->NextIsInt32()))
+ , value_(EnumType(reader->TakeInt32())) {
if (is_valid()) {
value_state_ = IsValidEnum(value_) ? kValid : kInvalid;
}
}
-template<typename T, size_t minsize, size_t maxsize>
+template <typename T, size_t minsize, size_t maxsize>
inline Array<T, minsize, maxsize>::Array(dbus::MessageReader* reader)
: CompositeType(InitHelper(reader->NextIsArray())) {
dbus::MessageReader array_reader = reader->TakeArrayReader();
if (array_reader.has_failed()) {
push_back(T());
} else {
- while(array_reader.HasNext()) {
+ while (array_reader.HasNext()) {
push_back(T(&array_reader));
}
}
}
-template<typename T, size_t minsize, size_t maxsize>
+template <typename T, size_t minsize, size_t maxsize>
inline Map<T, minsize, maxsize>::Map(dbus::MessageReader* reader)
: CompositeType(InitHelper(reader->NextIsStruct())) {
// Map key-value pairs are serialized into array
@@ -362,7 +416,7 @@ inline Map<T, minsize, maxsize>::Map(dbus::MessageReader* reader)
if (array_reader.has_failed()) {
this->insert(typename MapType::value_type("", T()));
} else {
- while(array_reader.HasNext()) {
+ while (array_reader.HasNext()) {
dbus::MessageReader dictvalue_reader = array_reader.TakeDictEntryReader();
typename MapType::key_type key =
impl::Take<typename MapType::key_type>(&dictvalue_reader);
@@ -371,64 +425,62 @@ inline Map<T, minsize, maxsize>::Map(dbus::MessageReader* reader)
}
}
-template<typename T>
+template <typename T>
inline Nullable<T>::Nullable(dbus::MessageReader* reader)
- : T(reader),
- marked_null_(impl::TakeNullable<T>(reader)){
-}
+ : T(reader), marked_null_(impl::TakeNullable<T>(reader)) {}
-template<typename T>
+template <typename T>
inline Optional<T>::Optional(dbus::MessageReader* reader)
- : value_(impl::TakeOptional<T>(reader)){
-}
+ : value_(impl::TakeOptional<T>(reader)) {}
// MessageWriter serializers
inline void Boolean::ToDbusWriter(dbus::MessageWriter* writer) const {
writer->PutBool(value_);
}
-template<typename T, T minval, T maxval>
+template <typename T, T minval, T maxval>
inline void Integer<T, minval, maxval>::ToDbusWriter(
dbus::MessageWriter* writer) const {
impl::Put(value_, writer);
}
-template<int64_t minnum, int64_t maxnum, int64_t minden, int64_t maxden>
+template <int64_t minnum, int64_t maxnum, int64_t minden, int64_t maxden>
inline void Float<minnum, maxnum, minden, maxden>::ToDbusWriter(
dbus::MessageWriter* writer) const {
writer->PutDouble(value_);
}
-template<size_t minlen, size_t maxlen>
+template <size_t minlen, size_t maxlen>
inline void String<minlen, maxlen>::ToDbusWriter(
dbus::MessageWriter* writer) const {
writer->PutString(value_);
}
-template<typename T>
+template <typename T>
inline void Enum<T>::ToDbusWriter(dbus::MessageWriter* writer) const {
writer->PutInt32(static_cast<int32_t>(value_));
}
-template<typename T, size_t minsize, size_t maxsize>
+template <typename T, size_t minsize, size_t maxsize>
inline void Array<T, minsize, maxsize>::ToDbusWriter(
dbus::MessageWriter* writer) const {
std::string array_signature;
DbusSignature<typename ArrayType::value_type>(&array_signature);
- dbus::MessageWriter array_writer(writer, dbus::kArray,
- array_signature.c_str());
- for (typename ArrayType::const_iterator i = this->begin(); i != this->end(); ++i) {
+ dbus::MessageWriter array_writer(
+ writer, dbus::kArray, array_signature.c_str());
+ for (typename ArrayType::const_iterator i = this->begin(); i != this->end();
+ ++i) {
i->ToDbusWriter(&array_writer);
}
}
-template<typename T, size_t minsize, size_t maxsize>
+template <typename T, size_t minsize, size_t maxsize>
inline void Map<T, minsize, maxsize>::ToDbusWriter(
dbus::MessageWriter* writer) const {
std::string array_signature;
DbusSignature<typename MapType::value_type>(&array_signature);
- dbus::MessageWriter array_writer(writer, dbus::kArray,
- array_signature.c_str());
+ dbus::MessageWriter array_writer(
+ writer, dbus::kArray, array_signature.c_str());
for (typename MapType::const_iterator i = this->begin(); i != this->end();
++i) {
dbus::MessageWriter dictentry_writer(&array_writer, dbus::kDictEntry, NULL);
@@ -437,7 +489,7 @@ inline void Map<T, minsize, maxsize>::ToDbusWriter(
}
}
-template<typename T>
+template <typename T>
inline void Optional<T>::ToDbusWriter(dbus::MessageWriter* writer) const {
dbus::MessageWriter struct_writer(writer, dbus::kStruct, NULL);
struct_writer.PutBool(value_.is_initialized());
@@ -446,4 +498,4 @@ inline void Optional<T>::ToDbusWriter(dbus::MessageWriter* writer) const {
} // namespace rpc
-#endif // RPC_BASE_DBUS_INL_H_
+#endif // RPC_BASE_DBUS_INL_H_