OLD | NEW |
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_H_ | 5 #ifndef IPC_IPC_MESSAGE_H_ |
6 #define IPC_IPC_MESSAGE_H_ | 6 #define IPC_IPC_MESSAGE_H_ |
7 | 7 |
8 #include <string> | 8 #include <string> |
9 | 9 |
10 #include "base/basictypes.h" | 10 #include "base/basictypes.h" |
(...skipping 123 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
134 } | 134 } |
135 | 135 |
136 uint32 flags() const { | 136 uint32 flags() const { |
137 return header()->flags; | 137 return header()->flags; |
138 } | 138 } |
139 | 139 |
140 // Sets all the given header values. The message should be empty at this | 140 // Sets all the given header values. The message should be empty at this |
141 // call. | 141 // call. |
142 void SetHeaderValues(int32 routing, uint32 type, uint32 flags); | 142 void SetHeaderValues(int32 routing, uint32 type, uint32 flags); |
143 | 143 |
144 template<class T, class S> | 144 template<class T, class S, class P> |
145 static bool Dispatch(const Message* msg, T* obj, S* sender, | 145 static bool Dispatch(const Message* msg, T* obj, S* sender, P* parameter, |
146 void (T::*func)()) { | 146 void (T::*func)()) { |
147 (obj->*func)(); | 147 (obj->*func)(); |
148 return true; | 148 return true; |
149 } | 149 } |
150 | 150 |
151 template<class T, class S> | 151 template<class T, class S, class P> |
152 static bool Dispatch(const Message* msg, T* obj, S* sender, | 152 static bool Dispatch(const Message* msg, T* obj, S* sender, P* parameter, |
153 void (T::*func)() const) { | 153 void (T::*func)(P*)) { |
154 (obj->*func)(); | 154 (obj->*func)(parameter); |
155 return true; | |
156 } | |
157 | |
158 template<class T, class S> | |
159 static bool Dispatch(const Message* msg, T* obj, S* sender, | |
160 void (T::*func)(const Message&)) { | |
161 (obj->*func)(*msg); | |
162 return true; | |
163 } | |
164 | |
165 template<class T, class S> | |
166 static bool Dispatch(const Message* msg, T* obj, S* sender, | |
167 void (T::*func)(const Message&) const) { | |
168 (obj->*func)(*msg); | |
169 return true; | 155 return true; |
170 } | 156 } |
171 | 157 |
172 // Used for async messages with no parameters. | 158 // Used for async messages with no parameters. |
173 static void Log(std::string* name, const Message* msg, std::string* l) { | 159 static void Log(std::string* name, const Message* msg, std::string* l) { |
174 } | 160 } |
175 | 161 |
176 // Find the end of the message data that starts at range_start. Returns NULL | 162 // Find the end of the message data that starts at range_start. Returns NULL |
177 // if the entire message is not found in the given data range. | 163 // if the entire message is not found in the given data range. |
178 static const char* FindNext(const char* range_start, const char* range_end) { | 164 static const char* FindNext(const char* range_start, const char* range_end) { |
(...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
286 MSG_ROUTING_NONE = -2, | 272 MSG_ROUTING_NONE = -2, |
287 | 273 |
288 // indicates a general message not sent to a particular tab. | 274 // indicates a general message not sent to a particular tab. |
289 MSG_ROUTING_CONTROL = kint32max, | 275 MSG_ROUTING_CONTROL = kint32max, |
290 }; | 276 }; |
291 | 277 |
292 #define IPC_REPLY_ID 0xFFFFFFF0 // Special message id for replies | 278 #define IPC_REPLY_ID 0xFFFFFFF0 // Special message id for replies |
293 #define IPC_LOGGING_ID 0xFFFFFFF1 // Special message id for logging | 279 #define IPC_LOGGING_ID 0xFFFFFFF1 // Special message id for logging |
294 | 280 |
295 #endif // IPC_IPC_MESSAGE_H_ | 281 #endif // IPC_IPC_MESSAGE_H_ |
OLD | NEW |