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

Side by Side Diff: mojo/system/channel.cc

Issue 253493003: Mojo: Windows: Enable Channel::Shutdown() on fatal error. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: don't reenable tests Created 6 years, 8 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 | Annotate | Revision Log
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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 "mojo/system/channel.h" 5 #include "mojo/system/channel.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 8
9 #include "base/basictypes.h" 9 #include "base/basictypes.h"
10 #include "base/bind.h" 10 #include "base/bind.h"
11 #include "base/compiler_specific.h" 11 #include "base/compiler_specific.h"
12 #include "base/logging.h" 12 #include "base/logging.h"
13 #include "base/strings/stringprintf.h" 13 #include "base/strings/stringprintf.h"
14 #include "build/build_config.h" // TODO(vtl): Remove this.
15 #include "mojo/system/message_pipe_endpoint.h" 14 #include "mojo/system/message_pipe_endpoint.h"
16 15
17 namespace mojo { 16 namespace mojo {
18 namespace system { 17 namespace system {
19 18
20 COMPILE_ASSERT(Channel::kBootstrapEndpointId != 19 COMPILE_ASSERT(Channel::kBootstrapEndpointId !=
21 MessageInTransit::kInvalidEndpointId, 20 MessageInTransit::kInvalidEndpointId,
22 kBootstrapEndpointId_is_invalid); 21 kBootstrapEndpointId_is_invalid);
23 22
24 STATIC_CONST_MEMBER_DEFINITION const MessageInTransit::EndpointId 23 STATIC_CONST_MEMBER_DEFINITION const MessageInTransit::EndpointId
(...skipping 258 matching lines...) Expand 10 before | Expand all | Expand 10 after
283 default: 282 default:
284 HandleRemoteError(base::StringPrintf( 283 HandleRemoteError(base::StringPrintf(
285 "Received message of invalid type %u", 284 "Received message of invalid type %u",
286 static_cast<unsigned>(message_view.type()))); 285 static_cast<unsigned>(message_view.type())));
287 break; 286 break;
288 } 287 }
289 } 288 }
290 289
291 void Channel::OnFatalError(FatalError fatal_error) { 290 void Channel::OnFatalError(FatalError fatal_error) {
292 LOG(ERROR) << "RawChannel fatal error (type " << fatal_error << ")"; 291 LOG(ERROR) << "RawChannel fatal error (type " << fatal_error << ")";
293 // TODO(vtl): We have some nested-deletion bugs on Windows, so this crashes.
294 #if defined(OS_WIN)
295 LOG(ERROR) << "Not shutting down due Windows-only bug";
296 #else
297 Shutdown(); 292 Shutdown();
298 #endif
299 } 293 }
300 294
301 bool Channel::ValidateReadMessage(const MessageInTransit::View& message_view) { 295 bool Channel::ValidateReadMessage(const MessageInTransit::View& message_view) {
302 const char* error_message = NULL; 296 const char* error_message = NULL;
303 if (!message_view.IsValid(&error_message)) { 297 if (!message_view.IsValid(&error_message)) {
304 DCHECK(error_message); 298 DCHECK(error_message);
305 HandleRemoteError(error_message); 299 HandleRemoteError(error_message);
306 return false; 300 return false;
307 } 301 }
308 302
(...skipping 170 matching lines...) Expand 10 before | Expand all | Expand 10 after
479 // TODO(vtl): Is this how we really want to handle this? 473 // TODO(vtl): Is this how we really want to handle this?
480 // Sometimes we'll want to propagate the error back to the message pipe 474 // Sometimes we'll want to propagate the error back to the message pipe
481 // (endpoint), and notify it that the remote is (effectively) closed. 475 // (endpoint), and notify it that the remote is (effectively) closed.
482 // Sometimes we'll want to kill the channel (and notify all the endpoints that 476 // Sometimes we'll want to kill the channel (and notify all the endpoints that
483 // their remotes are dead. 477 // their remotes are dead.
484 LOG(WARNING) << error_message; 478 LOG(WARNING) << error_message;
485 } 479 }
486 480
487 } // namespace system 481 } // namespace system
488 } // namespace mojo 482 } // namespace mojo
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698