diff options
Diffstat (limited to 'ipc')
-rwxr-xr-x | ipc/ipc_message_utils.h | 15 | ||||
-rw-r--r-- | ipc/ipc_message_utils_impl.h | 16 |
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); |