Index: ipc/ipc_message_utils.h |
diff --git a/ipc/ipc_message_utils.h b/ipc/ipc_message_utils.h |
index 1a7555bf397ff961c707e785be7ebd8ed3c97281..3908b12296025f6bf92547279956dfd954144682 100644 |
--- a/ipc/ipc_message_utils.h |
+++ b/ipc/ipc_message_utils.h |
@@ -124,34 +124,33 @@ struct ChannelHandle; |
class MessageIterator { |
public: |
- explicit MessageIterator(const Message& m) : msg_(m), iter_(NULL) { |
+ explicit MessageIterator(const Message& m) : iter_(m) { |
} |
int NextInt() const { |
int val = -1; |
- if (!msg_.ReadInt(&iter_, &val)) |
+ if (!iter_.ReadInt(&val)) |
NOTREACHED(); |
return val; |
} |
const std::string NextString() const { |
std::string val; |
- if (!msg_.ReadString(&iter_, &val)) |
+ if (!iter_.ReadString(&val)) |
NOTREACHED(); |
return val; |
} |
const std::wstring NextWString() const { |
std::wstring val; |
- if (!msg_.ReadWString(&iter_, &val)) |
+ if (!iter_.ReadWString(&val)) |
NOTREACHED(); |
return val; |
} |
void NextData(const char** data, int* length) const { |
- if (!msg_.ReadData(&iter_, data, length)) { |
+ if (!iter_.ReadData(data, length)) { |
NOTREACHED(); |
} |
} |
private: |
- const Message& msg_; |
- mutable void* iter_; |
+ mutable PickleIterator iter_; |
}; |
//----------------------------------------------------------------------------- |
@@ -170,7 +169,8 @@ static inline void WriteParam(Message* m, const P& p) { |
} |
template <class P> |
-static inline bool WARN_UNUSED_RESULT ReadParam(const Message* m, void** iter, |
+static inline bool WARN_UNUSED_RESULT ReadParam(const Message* m, |
+ PickleIterator* iter, |
P* p) { |
typedef typename SimilarTypeTraits<P>::Type Type; |
return ParamTraits<Type>::Read(m, iter, reinterpret_cast<Type* >(p)); |
@@ -188,7 +188,8 @@ struct ParamTraits<bool> { |
static void Write(Message* m, const param_type& p) { |
m->WriteBool(p); |
} |
- static bool Read(const Message* m, void** iter, param_type* r) { |
+ static bool Read(const Message* m, PickleIterator* iter, |
+ param_type* r) { |
return m->ReadBool(iter, r); |
} |
static void Log(const param_type& p, std::string* l) { |
@@ -202,7 +203,8 @@ struct ParamTraits<int> { |
static void Write(Message* m, const param_type& p) { |
m->WriteInt(p); |
} |
- static bool Read(const Message* m, void** iter, param_type* r) { |
+ static bool Read(const Message* m, PickleIterator* iter, |
+ param_type* r) { |
return m->ReadInt(iter, r); |
} |
IPC_EXPORT static void Log(const param_type& p, std::string* l); |
@@ -214,7 +216,8 @@ struct ParamTraits<unsigned int> { |
static void Write(Message* m, const param_type& p) { |
m->WriteInt(p); |
} |
- static bool Read(const Message* m, void** iter, param_type* r) { |
+ static bool Read(const Message* m, PickleIterator* iter, |
+ param_type* r) { |
return m->ReadInt(iter, reinterpret_cast<int*>(r)); |
} |
IPC_EXPORT static void Log(const param_type& p, std::string* l); |
@@ -226,7 +229,8 @@ struct ParamTraits<long> { |
static void Write(Message* m, const param_type& p) { |
m->WriteLong(p); |
} |
- static bool Read(const Message* m, void** iter, param_type* r) { |
+ static bool Read(const Message* m, PickleIterator* iter, |
+ param_type* r) { |
return m->ReadLong(iter, r); |
} |
IPC_EXPORT static void Log(const param_type& p, std::string* l); |
@@ -238,7 +242,8 @@ struct ParamTraits<unsigned long> { |
static void Write(Message* m, const param_type& p) { |
m->WriteLong(p); |
} |
- static bool Read(const Message* m, void** iter, param_type* r) { |
+ static bool Read(const Message* m, PickleIterator* iter, |
+ param_type* r) { |
return m->ReadLong(iter, reinterpret_cast<long*>(r)); |
} |
IPC_EXPORT static void Log(const param_type& p, std::string* l); |
@@ -250,7 +255,8 @@ struct ParamTraits<long long> { |
static void Write(Message* m, const param_type& p) { |
m->WriteInt64(static_cast<int64>(p)); |
} |
- static bool Read(const Message* m, void** iter, param_type* r) { |
+ static bool Read(const Message* m, PickleIterator* iter, |
+ param_type* r) { |
return m->ReadInt64(iter, reinterpret_cast<int64*>(r)); |
} |
IPC_EXPORT static void Log(const param_type& p, std::string* l); |
@@ -262,7 +268,8 @@ struct ParamTraits<unsigned long long> { |
static void Write(Message* m, const param_type& p) { |
m->WriteInt64(p); |
} |
- static bool Read(const Message* m, void** iter, param_type* r) { |
+ static bool Read(const Message* m, PickleIterator* iter, |
+ param_type* r) { |
return m->ReadInt64(iter, reinterpret_cast<int64*>(r)); |
} |
IPC_EXPORT static void Log(const param_type& p, std::string* l); |
@@ -272,7 +279,7 @@ template <> |
struct IPC_EXPORT ParamTraits<unsigned short> { |
typedef unsigned short param_type; |
static void Write(Message* m, const param_type& p); |
- static bool Read(const Message* m, void** iter, param_type* r); |
+ static bool Read(const Message* m, PickleIterator* iter, param_type* r); |
static void Log(const param_type& p, std::string* l); |
}; |
@@ -285,7 +292,8 @@ struct ParamTraits<float> { |
static void Write(Message* m, const param_type& p) { |
m->WriteData(reinterpret_cast<const char*>(&p), sizeof(param_type)); |
} |
- static bool Read(const Message* m, void** iter, param_type* r) { |
+ static bool Read(const Message* m, PickleIterator* iter, |
+ param_type* r) { |
const char *data; |
int data_size; |
if (!m->ReadData(iter, &data, &data_size) || |
@@ -307,7 +315,8 @@ struct ParamTraits<double> { |
static void Write(Message* m, const param_type& p) { |
m->WriteData(reinterpret_cast<const char*>(&p), sizeof(param_type)); |
} |
- static bool Read(const Message* m, void** iter, param_type* r) { |
+ static bool Read(const Message* m, PickleIterator* iter, |
+ param_type* r) { |
const char *data; |
int data_size; |
if (!m->ReadData(iter, &data, &data_size) || |
@@ -327,7 +336,7 @@ template <> |
struct IPC_EXPORT ParamTraits<base::Time> { |
typedef base::Time param_type; |
static void Write(Message* m, const param_type& p); |
- static bool Read(const Message* m, void** iter, param_type* r); |
+ static bool Read(const Message* m, PickleIterator* iter, param_type* r); |
static void Log(const param_type& p, std::string* l); |
}; |
@@ -335,7 +344,7 @@ template <> |
struct IPC_EXPORT ParamTraits<base::TimeDelta> { |
typedef base::TimeDelta param_type; |
static void Write(Message* m, const param_type& p); |
- static bool Read(const Message* m, void** iter, param_type* r); |
+ static bool Read(const Message* m, PickleIterator* iter, param_type* r); |
static void Log(const param_type& p, std::string* l); |
}; |
@@ -343,7 +352,7 @@ template <> |
struct IPC_EXPORT ParamTraits<base::TimeTicks> { |
typedef base::TimeTicks param_type; |
static void Write(Message* m, const param_type& p); |
- static bool Read(const Message* m, void** iter, param_type* r); |
+ static bool Read(const Message* m, PickleIterator* iter, param_type* r); |
static void Log(const param_type& p, std::string* l); |
}; |
@@ -354,7 +363,8 @@ struct ParamTraits<LOGFONT> { |
static void Write(Message* m, const param_type& p) { |
m->WriteData(reinterpret_cast<const char*>(&p), sizeof(LOGFONT)); |
} |
- static bool Read(const Message* m, void** iter, param_type* r) { |
+ static bool Read(const Message* m, PickleIterator* iter, |
+ param_type* r) { |
const char *data; |
int data_size = 0; |
bool result = m->ReadData(iter, &data, &data_size); |
@@ -378,7 +388,8 @@ struct ParamTraits<MSG> { |
static void Write(Message* m, const param_type& p) { |
m->WriteData(reinterpret_cast<const char*>(&p), sizeof(MSG)); |
} |
- static bool Read(const Message* m, void** iter, param_type* r) { |
+ static bool Read(const Message* m, PickleIterator* iter, |
+ param_type* r) { |
const char *data; |
int data_size = 0; |
bool result = m->ReadData(iter, &data, &data_size); |
@@ -401,7 +412,7 @@ template <> |
struct IPC_EXPORT ParamTraits<base::DictionaryValue> { |
typedef base::DictionaryValue param_type; |
static void Write(Message* m, const param_type& p); |
- static bool Read(const Message* m, void** iter, param_type* r); |
+ static bool Read(const Message* m, PickleIterator* iter, param_type* r); |
static void Log(const param_type& p, std::string* l); |
}; |
@@ -409,7 +420,7 @@ template <> |
struct IPC_EXPORT ParamTraits<base::ListValue> { |
typedef base::ListValue param_type; |
static void Write(Message* m, const param_type& p); |
- static bool Read(const Message* m, void** iter, param_type* r); |
+ static bool Read(const Message* m, PickleIterator* iter, param_type* r); |
static void Log(const param_type& p, std::string* l); |
}; |
@@ -419,7 +430,8 @@ struct ParamTraits<std::string> { |
static void Write(Message* m, const param_type& p) { |
m->WriteString(p); |
} |
- static bool Read(const Message* m, void** iter, param_type* r) { |
+ static bool Read(const Message* m, PickleIterator* iter, |
+ param_type* r) { |
return m->ReadString(iter, r); |
} |
static void Log(const param_type& p, std::string* l) { |
@@ -461,7 +473,8 @@ struct ParamTraits<std::vector<unsigned char> > { |
static_cast<int>(p.size())); |
} |
} |
- static bool Read(const Message* m, void** iter, param_type* r) { |
+ static bool Read(const Message* m, PickleIterator* iter, |
+ param_type* r) { |
const char *data; |
int data_size = 0; |
if (!m->ReadData(iter, &data, &data_size) || data_size < 0) |
@@ -486,7 +499,8 @@ struct ParamTraits<std::vector<char> > { |
m->WriteData(&p.front(), static_cast<int>(p.size())); |
} |
} |
- static bool Read(const Message* m, void** iter, param_type* r) { |
+ static bool Read(const Message* m, PickleIterator* iter, |
+ param_type* r) { |
const char *data; |
int data_size = 0; |
if (!m->ReadData(iter, &data, &data_size) || data_size < 0) |
@@ -509,7 +523,8 @@ struct ParamTraits<std::vector<bool> > { |
for (size_t i = 0; i < p.size(); i++) |
WriteParam(m, p[i]); |
} |
- static bool Read(const Message* m, void** iter, param_type* r) { |
+ static bool Read(const Message* m, PickleIterator* iter, |
+ param_type* r) { |
int size; |
// ReadLength() checks for < 0 itself. |
if (!m->ReadLength(iter, &size)) |
@@ -540,7 +555,8 @@ struct ParamTraits<std::vector<P> > { |
for (size_t i = 0; i < p.size(); i++) |
WriteParam(m, p[i]); |
} |
- static bool Read(const Message* m, void** iter, param_type* r) { |
+ static bool Read(const Message* m, PickleIterator* iter, |
+ param_type* r) { |
int size; |
// ReadLength() checks for < 0 itself. |
if (!m->ReadLength(iter, &size)) |
@@ -573,7 +589,8 @@ struct ParamTraits<std::set<P> > { |
for (iter = p.begin(); iter != p.end(); ++iter) |
WriteParam(m, *iter); |
} |
- static bool Read(const Message* m, void** iter, param_type* r) { |
+ static bool Read(const Message* m, PickleIterator* iter, |
+ param_type* r) { |
int size; |
if (!m->ReadLength(iter, &size)) |
return false; |
@@ -602,7 +619,8 @@ struct ParamTraits<std::map<K, V> > { |
WriteParam(m, iter->second); |
} |
} |
- static bool Read(const Message* m, void** iter, param_type* r) { |
+ static bool Read(const Message* m, PickleIterator* iter, |
+ param_type* r) { |
int size; |
if (!ReadParam(m, iter, &size) || size < 0) |
return false; |
@@ -628,7 +646,8 @@ struct ParamTraits<std::wstring> { |
static void Write(Message* m, const param_type& p) { |
m->WriteWString(p); |
} |
- static bool Read(const Message* m, void** iter, param_type* r) { |
+ static bool Read(const Message* m, PickleIterator* iter, |
+ param_type* r) { |
return m->ReadWString(iter, r); |
} |
IPC_EXPORT static void Log(const param_type& p, std::string* l); |
@@ -641,7 +660,8 @@ struct ParamTraits<std::pair<A, B> > { |
WriteParam(m, p.first); |
WriteParam(m, p.second); |
} |
- static bool Read(const Message* m, void** iter, param_type* r) { |
+ static bool Read(const Message* m, PickleIterator* iter, |
+ param_type* r) { |
return ReadParam(m, iter, &r->first) && ReadParam(m, iter, &r->second); |
} |
static void Log(const param_type& p, std::string* l) { |
@@ -657,7 +677,8 @@ template <> |
struct IPC_EXPORT ParamTraits<NullableString16> { |
typedef NullableString16 param_type; |
static void Write(Message* m, const param_type& p); |
- static bool Read(const Message* m, void** iter, param_type* r); |
+ static bool Read(const Message* m, PickleIterator* iter, |
+ param_type* r); |
static void Log(const param_type& p, std::string* l); |
}; |
@@ -670,7 +691,8 @@ struct ParamTraits<string16> { |
static void Write(Message* m, const param_type& p) { |
m->WriteString16(p); |
} |
- static bool Read(const Message* m, void** iter, param_type* r) { |
+ static bool Read(const Message* m, PickleIterator* iter, |
+ param_type* r) { |
return m->ReadString16(iter, r); |
} |
IPC_EXPORT static void Log(const param_type& p, std::string* l); |
@@ -687,7 +709,8 @@ struct ParamTraits<HANDLE> { |
// bit systems. |
m->WriteUInt32(reinterpret_cast<uint32>(p)); |
} |
- static bool Read(const Message* m, void** iter, param_type* r) { |
+ static bool Read(const Message* m, PickleIterator* iter, |
+ param_type* r) { |
DCHECK_EQ(sizeof(param_type), sizeof(uint32)); |
return m->ReadUInt32(iter, reinterpret_cast<uint32*>(r)); |
} |
@@ -702,7 +725,7 @@ struct ParamTraits<HCURSOR> { |
static void Write(Message* m, const param_type& p) { |
m->WriteUInt32(reinterpret_cast<uint32>(p)); |
} |
- static bool Read(const Message* m, void** iter, param_type* r) { |
+ static bool Read(const Message* m, PickleIterator* iter, param_type* r) { |
DCHECK_EQ(sizeof(param_type), sizeof(uint32)); |
return m->ReadUInt32(iter, reinterpret_cast<uint32*>(r)); |
} |
@@ -717,7 +740,7 @@ struct ParamTraits<HACCEL> { |
static void Write(Message* m, const param_type& p) { |
m->WriteUInt32(reinterpret_cast<uint32>(p)); |
} |
- static bool Read(const Message* m, void** iter, param_type* r) { |
+ static bool Read(const Message* m, PickleIterator* iter, param_type* r) { |
DCHECK_EQ(sizeof(param_type), sizeof(uint32)); |
return m->ReadUInt32(iter, reinterpret_cast<uint32*>(r)); |
} |
@@ -730,7 +753,7 @@ struct ParamTraits<POINT> { |
m->WriteInt(p.x); |
m->WriteInt(p.y); |
} |
- static bool Read(const Message* m, void** iter, param_type* r) { |
+ static bool Read(const Message* m, PickleIterator* iter, param_type* r) { |
int x, y; |
if (!m->ReadInt(iter, &x) || !m->ReadInt(iter, &y)) |
return false; |
@@ -748,7 +771,7 @@ template <> |
struct IPC_EXPORT ParamTraits<FilePath> { |
typedef FilePath param_type; |
static void Write(Message* m, const param_type& p); |
- static bool Read(const Message* m, void** iter, param_type* r); |
+ static bool Read(const Message* m, PickleIterator* iter, param_type* r); |
static void Log(const param_type& p, std::string* l); |
}; |
@@ -772,7 +795,7 @@ template<> |
struct IPC_EXPORT ParamTraits<base::FileDescriptor> { |
typedef base::FileDescriptor param_type; |
static void Write(Message* m, const param_type& p); |
- static bool Read(const Message* m, void** iter, param_type* r); |
+ static bool Read(const Message* m, PickleIterator* iter, param_type* r); |
static void Log(const param_type& p, std::string* l); |
}; |
#endif // defined(OS_POSIX) |
@@ -784,7 +807,7 @@ template<> |
struct IPC_EXPORT ParamTraits<IPC::ChannelHandle> { |
typedef ChannelHandle param_type; |
static void Write(Message* m, const param_type& p); |
- static bool Read(const Message* m, void** iter, param_type* r); |
+ static bool Read(const Message* m, PickleIterator* iter, param_type* r); |
static void Log(const param_type& p, std::string* l); |
}; |
@@ -795,7 +818,7 @@ struct ParamTraits<XFORM> { |
static void Write(Message* m, const param_type& p) { |
m->WriteData(reinterpret_cast<const char*>(&p), sizeof(XFORM)); |
} |
- static bool Read(const Message* m, void** iter, param_type* r) { |
+ static bool Read(const Message* m, PickleIterator* iter, param_type* r) { |
const char *data; |
int data_size = 0; |
bool result = m->ReadData(iter, &data, &data_size); |
@@ -835,7 +858,7 @@ template <> |
struct IPC_EXPORT ParamTraits<LogData> { |
typedef LogData param_type; |
static void Write(Message* m, const param_type& p); |
- static bool Read(const Message* m, void** iter, param_type* r); |
+ static bool Read(const Message* m, PickleIterator* iter, param_type* r); |
static void Log(const param_type& p, std::string* l) { |
// Doesn't make sense to implement this! |
} |
@@ -849,7 +872,7 @@ struct ParamTraits<Message> { |
m->WriteInt(message_size); |
m->WriteData(reinterpret_cast<const char*>(p.data()), message_size); |
} |
- static bool Read(const Message* m, void** iter, Message* r) { |
+ static bool Read(const Message* m, PickleIterator* iter, Message* r) { |
int size; |
if (!m->ReadInt(iter, &size)) |
return false; |
@@ -869,7 +892,7 @@ struct ParamTraits<Tuple0> { |
typedef Tuple0 param_type; |
static void Write(Message* m, const param_type& p) { |
} |
- static bool Read(const Message* m, void** iter, param_type* r) { |
+ static bool Read(const Message* m, PickleIterator* iter, param_type* r) { |
return true; |
} |
static void Log(const param_type& p, std::string* l) { |
@@ -882,7 +905,7 @@ struct ParamTraits< Tuple1<A> > { |
static void Write(Message* m, const param_type& p) { |
WriteParam(m, p.a); |
} |
- static bool Read(const Message* m, void** iter, param_type* r) { |
+ static bool Read(const Message* m, PickleIterator* iter, param_type* r) { |
return ReadParam(m, iter, &r->a); |
} |
static void Log(const param_type& p, std::string* l) { |
@@ -897,7 +920,7 @@ struct ParamTraits< Tuple2<A, B> > { |
WriteParam(m, p.a); |
WriteParam(m, p.b); |
} |
- static bool Read(const Message* m, void** iter, param_type* r) { |
+ static bool Read(const Message* m, PickleIterator* iter, param_type* r) { |
return (ReadParam(m, iter, &r->a) && |
ReadParam(m, iter, &r->b)); |
} |
@@ -916,7 +939,7 @@ struct ParamTraits< Tuple3<A, B, C> > { |
WriteParam(m, p.b); |
WriteParam(m, p.c); |
} |
- static bool Read(const Message* m, void** iter, param_type* r) { |
+ static bool Read(const Message* m, PickleIterator* iter, param_type* r) { |
return (ReadParam(m, iter, &r->a) && |
ReadParam(m, iter, &r->b) && |
ReadParam(m, iter, &r->c)); |
@@ -939,7 +962,7 @@ struct ParamTraits< Tuple4<A, B, C, D> > { |
WriteParam(m, p.c); |
WriteParam(m, p.d); |
} |
- static bool Read(const Message* m, void** iter, param_type* r) { |
+ static bool Read(const Message* m, PickleIterator* iter, param_type* r) { |
return (ReadParam(m, iter, &r->a) && |
ReadParam(m, iter, &r->b) && |
ReadParam(m, iter, &r->c) && |
@@ -966,7 +989,7 @@ struct ParamTraits< Tuple5<A, B, C, D, E> > { |
WriteParam(m, p.d); |
WriteParam(m, p.e); |
} |
- static bool Read(const Message* m, void** iter, param_type* r) { |
+ static bool Read(const Message* m, PickleIterator* iter, param_type* r) { |
return (ReadParam(m, iter, &r->a) && |
ReadParam(m, iter, &r->b) && |
ReadParam(m, iter, &r->c) && |
@@ -1054,7 +1077,7 @@ class ParamDeserializer : public MessageReplyDeserializer { |
public: |
explicit ParamDeserializer(const RefTuple& out) : out_(out) { } |
- bool SerializeOutputParameters(const IPC::Message& msg, void* iter) { |
+ bool SerializeOutputParameters(const IPC::Message& msg, PickleIterator iter) { |
return ReadParam(&msg, &iter, &out_); |
} |