summaryrefslogtreecommitdiff
path: root/ipc
diff options
context:
space:
mode:
Diffstat (limited to 'ipc')
-rwxr-xr-xipc/ipc_message_utils.h15
-rw-r--r--ipc/ipc_message_utils_impl.h16
2 files changed, 13 insertions, 18 deletions
diff --git a/ipc/ipc_message_utils.h b/ipc/ipc_message_utils.h
index a7b78959fb02..3b5ff6f1152b 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;
diff --git a/ipc/ipc_message_utils_impl.h b/ipc/ipc_message_utils_impl.h
index 7e512a62c28b..2e571eda39e2 100644
--- a/ipc/ipc_message_utils_impl.h
+++ b/ipc/ipc_message_utils_impl.h
@@ -18,15 +18,6 @@ MessageWithTuple<ParamType>::MessageWithTuple(
WriteParam(this, p);
}
-template <class ParamType>
-bool MessageWithTuple<ParamType>::Read(const Message* msg, Param* p) {
- void* iter = NULL;
- if (ReadParam(msg, &iter, p))
- return true;
- NOTREACHED() << "Error deserializing message " << msg->type();
- return false;
-}
-
// We can't migrate the template for Log() to MessageWithTuple, because each
// subclass needs to have Log() to call Read(), which instantiates the above
// template.
@@ -43,13 +34,6 @@ MessageWithReply<SendParamType, ReplyParamType>::MessageWithReply(
}
template <class SendParamType, class ReplyParamType>
-bool MessageWithReply<SendParamType, ReplyParamType>::ReadSendParam(
- const Message* msg, SendParam* p) {
- void* iter = SyncMessage::GetDataIterator(msg);
- return ReadParam(msg, &iter, p);
-}
-
-template <class SendParamType, class ReplyParamType>
bool MessageWithReply<SendParamType, ReplyParamType>::ReadReplyParam(
const Message* msg, typename TupleTypes<ReplyParam>::ValueTuple* p) {
void* iter = SyncMessage::GetDataIterator(msg);