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

Side by Side Diff: extensions/browser/api/cast_channel/cast_framer.cc

Issue 2891923004: [cast_channel] Make cast_channel related files not depend on "cast_channel.h" (Closed)
Patch Set: fix windows compile errors Created 3 years, 6 months 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
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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 #include "extensions/browser/api/cast_channel/cast_framer.h" 5 #include "extensions/browser/api/cast_channel/cast_framer.h"
6 6
7 #include <stdlib.h> 7 #include <stdlib.h>
8 8
9 #include <limits> 9 #include <limits>
10 10
(...skipping 101 matching lines...) Expand 10 before | Expand all | Expand 10 after
112 return 0; 112 return 0;
113 } 113 }
114 } 114 }
115 115
116 std::unique_ptr<CastMessage> MessageFramer::Ingest(size_t num_bytes, 116 std::unique_ptr<CastMessage> MessageFramer::Ingest(size_t num_bytes,
117 size_t* message_length, 117 size_t* message_length,
118 ChannelError* error) { 118 ChannelError* error) {
119 DCHECK(error); 119 DCHECK(error);
120 DCHECK(message_length); 120 DCHECK(message_length);
121 if (error_) { 121 if (error_) {
122 *error = CHANNEL_ERROR_INVALID_MESSAGE; 122 *error = ChannelError::INVALID_MESSAGE;
123 return nullptr; 123 return nullptr;
124 } 124 }
125 125
126 DCHECK_EQ(base::checked_cast<int32_t>(message_bytes_received_), 126 DCHECK_EQ(base::checked_cast<int32_t>(message_bytes_received_),
127 input_buffer_->offset()); 127 input_buffer_->offset());
128 CHECK_LE(num_bytes, BytesRequested()); 128 CHECK_LE(num_bytes, BytesRequested());
129 message_bytes_received_ += num_bytes; 129 message_bytes_received_ += num_bytes;
130 *error = CHANNEL_ERROR_NONE; 130 *error = ChannelError::NONE;
131 *message_length = 0; 131 *message_length = 0;
132 switch (current_element_) { 132 switch (current_element_) {
133 case HEADER: 133 case HEADER:
134 if (BytesRequested() == 0) { 134 if (BytesRequested() == 0) {
135 MessageHeader header; 135 MessageHeader header;
136 MessageHeader::Deserialize(input_buffer_->StartOfBuffer(), &header); 136 MessageHeader::Deserialize(input_buffer_->StartOfBuffer(), &header);
137 if (header.message_size > MessageHeader::max_message_size()) { 137 if (header.message_size > MessageHeader::max_message_size()) {
138 VLOG(1) << "Error parsing header (message size too large)."; 138 VLOG(1) << "Error parsing header (message size too large).";
139 *error = CHANNEL_ERROR_INVALID_MESSAGE; 139 *error = ChannelError::INVALID_MESSAGE;
140 error_ = true; 140 error_ = true;
141 return nullptr; 141 return nullptr;
142 } 142 }
143 current_element_ = BODY; 143 current_element_ = BODY;
144 body_size_ = header.message_size; 144 body_size_ = header.message_size;
145 } 145 }
146 break; 146 break;
147 case BODY: 147 case BODY:
148 if (BytesRequested() == 0) { 148 if (BytesRequested() == 0) {
149 std::unique_ptr<CastMessage> parsed_message(new CastMessage); 149 std::unique_ptr<CastMessage> parsed_message(new CastMessage);
150 if (!parsed_message->ParseFromArray( 150 if (!parsed_message->ParseFromArray(
151 input_buffer_->StartOfBuffer() + MessageHeader::header_size(), 151 input_buffer_->StartOfBuffer() + MessageHeader::header_size(),
152 body_size_)) { 152 body_size_)) {
153 VLOG(1) << "Error parsing packet body."; 153 VLOG(1) << "Error parsing packet body.";
154 *error = CHANNEL_ERROR_INVALID_MESSAGE; 154 *error = ChannelError::INVALID_MESSAGE;
155 error_ = true; 155 error_ = true;
156 return nullptr; 156 return nullptr;
157 } 157 }
158 *message_length = body_size_; 158 *message_length = body_size_;
159 Reset(); 159 Reset();
160 return parsed_message; 160 return parsed_message;
161 } 161 }
162 break; 162 break;
163 default: 163 default:
164 NOTREACHED() << "Unhandled packet element type."; 164 NOTREACHED() << "Unhandled packet element type.";
165 return nullptr; 165 return nullptr;
166 } 166 }
167 167
168 input_buffer_->set_offset(message_bytes_received_); 168 input_buffer_->set_offset(message_bytes_received_);
169 return nullptr; 169 return nullptr;
170 } 170 }
171 171
172 void MessageFramer::Reset() { 172 void MessageFramer::Reset() {
173 current_element_ = HEADER; 173 current_element_ = HEADER;
174 message_bytes_received_ = 0; 174 message_bytes_received_ = 0;
175 body_size_ = 0; 175 body_size_ = 0;
176 input_buffer_->set_offset(0); 176 input_buffer_->set_offset(0);
177 } 177 }
178 178
179 } // namespace cast_channel 179 } // namespace cast_channel
180 } // namespace api 180 } // namespace api
181 } // namespace extensions 181 } // namespace extensions
OLDNEW
« no previous file with comments | « extensions/browser/api/cast_channel/cast_framer.h ('k') | extensions/browser/api/cast_channel/cast_framer_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698