Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(147)

Side by Side Diff: ipc/ipc_message_utils.h

Issue 2474783004: [ABANDONED] Make it possible to send unique_ptr<Value> over IPC/Mojo. (Closed)
Patch Set: Created 4 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | ipc/ipc_message_utils.cc » ('j') | ipc/ipc_message_utils.cc » ('J')
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #ifndef IPC_IPC_MESSAGE_UTILS_H_ 5 #ifndef IPC_IPC_MESSAGE_UTILS_H_
6 #define IPC_IPC_MESSAGE_UTILS_H_ 6 #define IPC_IPC_MESSAGE_UTILS_H_
7 7
8 #include <limits.h> 8 #include <limits.h>
9 #include <stddef.h> 9 #include <stddef.h>
10 #include <stdint.h> 10 #include <stdint.h>
(...skipping 661 matching lines...) Expand 10 before | Expand all | Expand 10 after
672 typedef base::UnguessableToken param_type; 672 typedef base::UnguessableToken param_type;
673 static void GetSize(base::PickleSizer* sizer, const param_type& p); 673 static void GetSize(base::PickleSizer* sizer, const param_type& p);
674 static void Write(base::Pickle* m, const param_type& p); 674 static void Write(base::Pickle* m, const param_type& p);
675 static bool Read(const base::Pickle* m, 675 static bool Read(const base::Pickle* m,
676 base::PickleIterator* iter, 676 base::PickleIterator* iter,
677 param_type* r); 677 param_type* r);
678 static void Log(const param_type& p, std::string* l); 678 static void Log(const param_type& p, std::string* l);
679 }; 679 };
680 680
681 template <> 681 template <>
682 struct IPC_EXPORT ParamTraits<std::unique_ptr<base::Value>> {
683 typedef std::unique_ptr<base::Value> param_type;
684 static void GetSize(base::PickleSizer* sizer, const param_type& p);
685 static void Write(base::Pickle* m, const param_type& p);
686 static bool Read(const base::Pickle* m,
687 base::PickleIterator* iter,
688 param_type* r);
689 static void Log(const param_type& p, std::string* l);
690 };
691
692 template <>
682 struct ParamTraits<std::tuple<>> { 693 struct ParamTraits<std::tuple<>> {
683 typedef std::tuple<> param_type; 694 typedef std::tuple<> param_type;
684 static void GetSize(base::PickleSizer* sizer, const param_type& p) {} 695 static void GetSize(base::PickleSizer* sizer, const param_type& p) {}
685 static void Write(base::Pickle* m, const param_type& p) {} 696 static void Write(base::Pickle* m, const param_type& p) {}
686 static bool Read(const base::Pickle* m, 697 static bool Read(const base::Pickle* m,
687 base::PickleIterator* iter, 698 base::PickleIterator* iter,
688 param_type* r) { 699 param_type* r) {
689 return true; 700 return true;
690 } 701 }
691 static void Log(const param_type& p, std::string* l) { 702 static void Log(const param_type& p, std::string* l) {
(...skipping 256 matching lines...) Expand 10 before | Expand all | Expand 10 after
948 if (!ReadParam(m, iter, &value)) 959 if (!ReadParam(m, iter, &value))
949 return false; 960 return false;
950 } 961 }
951 return true; 962 return true;
952 } 963 }
953 static void Log(const param_type& p, std::string* l) { 964 static void Log(const param_type& p, std::string* l) {
954 l->append("<base::SmallMap>"); 965 l->append("<base::SmallMap>");
955 } 966 }
956 }; 967 };
957 968
958 template <class P> 969 template <class P>
Tom Sepez 2016/11/03 20:54:50 Wondering why this partial specialization doesn't
959 struct ParamTraits<std::unique_ptr<P>> { 970 struct ParamTraits<std::unique_ptr<P>> {
960 typedef std::unique_ptr<P> param_type; 971 typedef std::unique_ptr<P> param_type;
961 static void GetSize(base::PickleSizer* sizer, const param_type& p) { 972 static void GetSize(base::PickleSizer* sizer, const param_type& p) {
962 bool valid = !!p; 973 bool valid = !!p;
963 GetParamSize(sizer, valid); 974 GetParamSize(sizer, valid);
964 if (valid) 975 if (valid)
965 GetParamSize(sizer, *p); 976 GetParamSize(sizer, *p);
966 } 977 }
967 static void Write(base::Pickle* m, const param_type& p) { 978 static void Write(base::Pickle* m, const param_type& p) {
968 bool valid = !!p; 979 bool valid = !!p;
(...skipping 183 matching lines...) Expand 10 before | Expand all | Expand 10 after
1152 template <class ReplyParamType> 1163 template <class ReplyParamType>
1153 inline void LogReplyParamsToMessage(const ReplyParamType& reply_params, 1164 inline void LogReplyParamsToMessage(const ReplyParamType& reply_params,
1154 const Message* msg) {} 1165 const Message* msg) {}
1155 1166
1156 inline void ConnectMessageAndReply(const Message* msg, Message* reply) {} 1167 inline void ConnectMessageAndReply(const Message* msg, Message* reply) {}
1157 #endif 1168 #endif
1158 1169
1159 } // namespace IPC 1170 } // namespace IPC
1160 1171
1161 #endif // IPC_IPC_MESSAGE_UTILS_H_ 1172 #endif // IPC_IPC_MESSAGE_UTILS_H_
OLDNEW
« no previous file with comments | « no previous file | ipc/ipc_message_utils.cc » ('j') | ipc/ipc_message_utils.cc » ('J')

Powered by Google App Engine
This is Rietveld 408576698