summaryrefslogtreecommitdiff
path: root/ipc/ipc_message_utils.h
diff options
context:
space:
mode:
Diffstat (limited to 'ipc/ipc_message_utils.h')
-rwxr-xr-xipc/ipc_message_utils.h15
1 files changed, 13 insertions, 2 deletions
diff --git a/ipc/ipc_message_utils.h b/ipc/ipc_message_utils.h
index a7b7895..3b5ff6f1 100755
--- a/ipc/ipc_message_utils.h
+++ b/ipc/ipc_message_utils.h
@@ -962,7 +962,14 @@ class __attribute__((visibility("default"))) MessageWithTuple : public Message {
// those translation units.
MessageWithTuple(int32 routing_id, uint32 type, const RefParam& p);
- static bool Read(const Message* msg, Param* p) IPC_MSG_NOINLINE;
+ static bool Read(const Message* msg, Param* p)
+ { // Put definition into class so that Dispatch method could use it.
+ void* iter = NULL;
+ if (ReadParam(msg, &iter, p))
+ return true;
+ NOTREACHED() << "Error deserializing message " << msg->type();
+ return false;
+ } IPC_MSG_NOINLINE;
// Generic dispatcher. Should cover most cases.
template<class T, class S, class Method>
@@ -1154,7 +1161,11 @@ class __attribute__((visibility("default"))) MessageWithReply : public SyncMessa
MessageWithReply(int32 routing_id, uint32 type,
const RefSendParam& send, const ReplyParam& reply);
- static bool ReadSendParam(const Message* msg, SendParam* p) IPC_MSG_NOINLINE;
+ static bool ReadSendParam(const Message* msg, SendParam* p)
+ { // Put definition into class so that Dispatch method could use it.
+ void* iter = SyncMessage::GetDataIterator(msg);
+ return ReadParam(msg, &iter, p);
+ } IPC_MSG_NOINLINE;
static bool ReadReplyParam(
const Message* msg,
typename TupleTypes<ReplyParam>::ValueTuple* p) IPC_MSG_NOINLINE;