Chromium Code Reviews| 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" |
| 11 #include "base/debug/trace_event.h" | 11 #include "base/debug/trace_event.h" |
| 12 #include "base/files/file.h" | 12 #include "base/memory/ref_counted.h" |
| 13 #include "base/pickle.h" | 13 #include "base/pickle.h" |
| 14 #include "ipc/ipc_export.h" | 14 #include "ipc/ipc_export.h" |
| 15 | 15 |
| 16 #if !defined(NDEBUG) | 16 #if !defined(NDEBUG) |
| 17 #define IPC_MESSAGE_LOG_ENABLED | 17 #define IPC_MESSAGE_LOG_ENABLED |
| 18 #endif | 18 #endif |
| 19 | 19 |
| 20 #if defined(OS_POSIX) | |
| 21 #include "base/memory/ref_counted.h" | |
| 22 #endif | |
| 23 | |
| 24 namespace IPC { | 20 namespace IPC { |
| 25 | 21 |
| 26 //------------------------------------------------------------------------------ | 22 //------------------------------------------------------------------------------ |
| 27 | 23 |
| 28 struct LogData; | 24 struct LogData; |
| 25 class MessageAttachment; | |
| 29 class MessageAttachmentSet; | 26 class MessageAttachmentSet; |
| 30 | 27 |
| 31 class IPC_EXPORT Message : public Pickle { | 28 class IPC_EXPORT Message : public Pickle { |
| 32 public: | 29 public: |
| 33 enum PriorityValue { | 30 enum PriorityValue { |
| 34 PRIORITY_LOW = 1, | 31 PRIORITY_LOW = 1, |
| 35 PRIORITY_NORMAL, | 32 PRIORITY_NORMAL, |
| 36 PRIORITY_HIGH | 33 PRIORITY_HIGH |
| 37 }; | 34 }; |
| 38 | 35 |
| (...skipping 123 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 162 // Used for async messages with no parameters. | 159 // Used for async messages with no parameters. |
| 163 static void Log(std::string* name, const Message* msg, std::string* l) { | 160 static void Log(std::string* name, const Message* msg, std::string* l) { |
| 164 } | 161 } |
| 165 | 162 |
| 166 // Find the end of the message data that starts at range_start. Returns NULL | 163 // Find the end of the message data that starts at range_start. Returns NULL |
| 167 // if the entire message is not found in the given data range. | 164 // if the entire message is not found in the given data range. |
| 168 static const char* FindNext(const char* range_start, const char* range_end) { | 165 static const char* FindNext(const char* range_start, const char* range_end) { |
| 169 return Pickle::FindNext(sizeof(Header), range_start, range_end); | 166 return Pickle::FindNext(sizeof(Header), range_start, range_end); |
| 170 } | 167 } |
| 171 | 168 |
| 172 #if defined(OS_POSIX) | 169 bool WriteAttachment(scoped_refptr<MessageAttachment> attachment); |
|
agl
2015/01/30 19:34:02
comments for these?
// WriteAttachment appends |a
Hajime Morrita
2015/01/30 21:01:29
Thank you for the suggestion! Adopted.
| |
| 173 // On POSIX, a message supports reading / writing FileDescriptor objects. | 170 bool ReadAttachment(PickleIterator* iter, |
|
agl
2015/01/30 19:34:02
// ReadAttachment parses an attachment given the p
Hajime Morrita
2015/01/30 21:01:29
Done.
| |
| 174 // This is used to pass a file descriptor to the peer of an IPC channel. | 171 scoped_refptr<MessageAttachment>* attachment) const; |
| 175 | 172 // Returns true if there are any attachment in this message. |
| 176 // Add a descriptor to the end of the set. Returns false if the set is full. | 173 bool HasAttachments() const; |
| 177 bool WriteFile(base::ScopedFD descriptor); | |
| 178 bool WriteBorrowingFile(const base::PlatformFile& descriptor); | |
| 179 | |
| 180 // Get a file descriptor from the message. Returns false on error. | |
| 181 // iter: a Pickle iterator to the current location in the message. | |
| 182 bool ReadFile(PickleIterator* iter, base::ScopedFD* file) const; | |
| 183 | |
| 184 // Returns true if there are any file descriptors in this message. | |
| 185 bool HasFileDescriptors() const; | |
| 186 #endif | |
| 187 | 174 |
| 188 #ifdef IPC_MESSAGE_LOG_ENABLED | 175 #ifdef IPC_MESSAGE_LOG_ENABLED |
| 189 // Adds the outgoing time from Time::Now() at the end of the message and sets | 176 // Adds the outgoing time from Time::Now() at the end of the message and sets |
| 190 // a bit to indicate that it's been added. | 177 // a bit to indicate that it's been added. |
| 191 void set_sent_time(int64 time); | 178 void set_sent_time(int64 time); |
| 192 int64 sent_time() const; | 179 int64 sent_time() const; |
| 193 | 180 |
| 194 void set_received_time(int64 time) const; | 181 void set_received_time(int64 time) const; |
| 195 int64 received_time() const { return received_time_; } | 182 int64 received_time() const { return received_time_; } |
| 196 void set_output_params(const std::string& op) const { output_params_ = op; } | 183 void set_output_params(const std::string& op) const { output_params_ = op; } |
| (...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 281 MSG_ROUTING_NONE = -2, | 268 MSG_ROUTING_NONE = -2, |
| 282 | 269 |
| 283 // indicates a general message not sent to a particular tab. | 270 // indicates a general message not sent to a particular tab. |
| 284 MSG_ROUTING_CONTROL = kint32max, | 271 MSG_ROUTING_CONTROL = kint32max, |
| 285 }; | 272 }; |
| 286 | 273 |
| 287 #define IPC_REPLY_ID 0xFFFFFFF0 // Special message id for replies | 274 #define IPC_REPLY_ID 0xFFFFFFF0 // Special message id for replies |
| 288 #define IPC_LOGGING_ID 0xFFFFFFF1 // Special message id for logging | 275 #define IPC_LOGGING_ID 0xFFFFFFF1 // Special message id for logging |
| 289 | 276 |
| 290 #endif // IPC_IPC_MESSAGE_H_ | 277 #endif // IPC_IPC_MESSAGE_H_ |
| OLD | NEW |