diff options
author | erikchen <erikchen@chromium.org> | 2015-09-11 12:08:53 -0700 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2015-09-11 19:09:24 +0000 |
commit | 29e0f2f9ad9a9f377995804efaf72476cc987714 (patch) | |
tree | 72b58eb99aedc497763b145ae1a8efc22347afd8 /ipc/ipc_channel_reader.cc | |
parent | b37d327f039850e3f1faa3be67f1c7c3255b0f96 (diff) | |
download | chromium_src-29e0f2f9ad9a9f377995804efaf72476cc987714.zip chromium_src-29e0f2f9ad9a9f377995804efaf72476cc987714.tar.gz chromium_src-29e0f2f9ad9a9f377995804efaf72476cc987714.tar.bz2 |
ipc: Update Message::FindNext to parse brokered attachments.
The method Message::FindNext now takes an output parameter NextMessageInfo which
contains additional metadata needed for generating brokered attachments.
BUG=493414
Review URL: https://codereview.chromium.org/1308613006
Cr-Commit-Position: refs/heads/master@{#348459}
Diffstat (limited to 'ipc/ipc_channel_reader.cc')
-rw-r--r-- | ipc/ipc_channel_reader.cc | 16 |
1 files changed, 10 insertions, 6 deletions
diff --git a/ipc/ipc_channel_reader.cc b/ipc/ipc_channel_reader.cc index f80d75d..b3dd0b7 100644 --- a/ipc/ipc_channel_reader.cc +++ b/ipc/ipc_channel_reader.cc @@ -91,11 +91,15 @@ bool ChannelReader::TranslateInputData(const char* input_data, // Dispatch all complete messages in the data buffer. while (p < end) { - const char* message_tail = Message::FindNext(p, end); - if (message_tail) { - int len = static_cast<int>(message_tail - p); + Message::NextMessageInfo info; + Message::FindNext(p, end, &info); + if (info.message_found) { + int pickle_len = static_cast<int>(info.pickle_end - p); + Message translated_message(p, pickle_len); + + // TODO(erikchen): Make attachments for info.attachment_ids. + // http://crbug.com/493414. - Message translated_message(p, len); if (!GetNonBrokeredAttachments(&translated_message)) return false; @@ -109,7 +113,7 @@ bool ChannelReader::TranslateInputData(const char* input_data, if (blocked_ids.empty()) { // Dispatch the message and continue the loop. DispatchMessage(&translated_message); - p = message_tail; + p = info.message_end; continue; } @@ -120,7 +124,7 @@ bool ChannelReader::TranslateInputData(const char* input_data, // Make a deep copy of |translated_message| to add to the queue. scoped_ptr<Message> m(new Message(translated_message)); queued_messages_.push_back(m.release()); - p = message_tail; + p = info.message_end; } else { // Last message is partial. break; |