From c410e02b297c491b5ad1cf49606679edaf018dba Mon Sep 17 00:00:00 2001 From: "tsepez@chromium.org" Date: Wed, 30 May 2012 21:15:57 +0000 Subject: Move ParamTraits and . Move thse to ipc/ from content/common so that they may be used in directories parallel to content/. Pre-requisite for fixing the associated bug. BUG=127624 Review URL: https://chromiumcodereview.appspot.com/10442072 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@139636 0039d316-1c4b-4281-b951-d872f2087c98 --- ipc/ipc_message_utils.cc | 43 +++++++++++++++++++++++++++++++++++++++++++ ipc/ipc_message_utils.h | 14 ++++++++++++++ 2 files changed, 57 insertions(+) (limited to 'ipc') diff --git a/ipc/ipc_message_utils.cc b/ipc/ipc_message_utils.cc index 8f27c52..3caf2a4 100644 --- a/ipc/ipc_message_utils.cc +++ b/ipc/ipc_message_utils.cc @@ -251,6 +251,49 @@ void ParamTraits::Log(const param_type& p, std::string* l) { l->append(base::UintToString(p)); } +void ParamTraits::Write( + Message* m, const param_type& p) { + WriteParam(m, p.size); + WriteParam(m, p.is_directory); + WriteParam(m, p.last_modified.ToDoubleT()); + WriteParam(m, p.last_accessed.ToDoubleT()); + WriteParam(m, p.creation_time.ToDoubleT()); +} + +bool ParamTraits::Read( + const Message* m, PickleIterator* iter, param_type* p) { + double last_modified; + double last_accessed; + double creation_time; + bool result = + ReadParam(m, iter, &p->size) && + ReadParam(m, iter, &p->is_directory) && + ReadParam(m, iter, &last_modified) && + ReadParam(m, iter, &last_accessed) && + ReadParam(m, iter, &creation_time); + if (result) { + p->last_modified = base::Time::FromDoubleT(last_modified); + p->last_accessed = base::Time::FromDoubleT(last_accessed); + p->creation_time = base::Time::FromDoubleT(creation_time); + } + return result; +} + +void ParamTraits::Log( + const param_type& p, std::string* l) { + l->append("("); + LogParam(p.size, l); + l->append(","); + LogParam(p.is_directory, l); + l->append(","); + LogParam(p.last_modified.ToDoubleT(), l); + l->append(","); + LogParam(p.last_accessed.ToDoubleT(), l); + l->append(","); + LogParam(p.creation_time.ToDoubleT(), l); + l->append(")"); +} + void ParamTraits::Write(Message* m, const param_type& p) { ParamTraits::Write(m, p.ToInternalValue()); } diff --git a/ipc/ipc_message_utils.h b/ipc/ipc_message_utils.h index 9e259f1..d744389 100644 --- a/ipc/ipc_message_utils.h +++ b/ipc/ipc_message_utils.h @@ -13,6 +13,7 @@ #include #include "base/format_macros.h" +#include "base/platform_file.h" #include "base/string16.h" #include "base/stringprintf.h" #include "base/string_util.h" @@ -335,6 +336,19 @@ struct ParamTraits { }; template <> +struct IPC_EXPORT ParamTraits { + typedef base::PlatformFileInfo param_type; + static void Write(Message* m, const param_type& p); + static bool Read(const Message* m, PickleIterator* iter, param_type* r); + static void Log(const param_type& p, std::string* l); +}; + +template <> +struct SimilarTypeTraits { + typedef int Type; +}; + +template <> struct IPC_EXPORT ParamTraits { typedef base::Time param_type; static void Write(Message* m, const param_type& p); -- cgit v1.1