diff options
Diffstat (limited to 'ipc')
-rw-r--r-- | ipc/ipc_message_utils.cc | 19 | ||||
-rw-r--r-- | ipc/ipc_message_utils.h | 9 |
2 files changed, 28 insertions, 0 deletions
diff --git a/ipc/ipc_message_utils.cc b/ipc/ipc_message_utils.cc index 9664810..cc10cc2 100644 --- a/ipc/ipc_message_utils.cc +++ b/ipc/ipc_message_utils.cc @@ -250,6 +250,25 @@ void ParamTraits<base::Time>::Log(const param_type& p, std::string* l) { ParamTraits<int64>::Log(p.ToInternalValue(), l); } +void ParamTraits<base::TimeDelta> ::Write(Message* m, const param_type& p) { + ParamTraits<int64> ::Write(m, p.InMicroseconds()); +} + +bool ParamTraits<base::TimeDelta> ::Read(const Message* m, + void** iter, + param_type* r) { + int64 value; + bool ret = ParamTraits<int64> ::Read(m, iter, &value); + if (ret) + *r = base::TimeDelta::FromMicroseconds(value); + + return ret; +} + +void ParamTraits<base::TimeDelta> ::Log(const param_type& p, std::string* l) { + ParamTraits<int64> ::Log(p.InMicroseconds(), l); +} + void ParamTraits<DictionaryValue>::Write(Message* m, const param_type& p) { WriteValue(m, &p, 0); } diff --git a/ipc/ipc_message_utils.h b/ipc/ipc_message_utils.h index 0e22c6b..9629fac 100644 --- a/ipc/ipc_message_utils.h +++ b/ipc/ipc_message_utils.h @@ -88,6 +88,7 @@ class NullableString16; namespace base { class Time; +class TimeDelta; struct FileDescriptor; } @@ -293,6 +294,14 @@ struct ParamTraits<base::Time> { static void Log(const param_type& p, std::string* l); }; +template <> +struct 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 void Log(const param_type& p, std::string* l); +}; + #if defined(OS_WIN) template <> struct ParamTraits<LOGFONT> { |