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

Unified Diff: sandbox/mac/mach_message_server.cc

Issue 392273002: Create DispatchSourceMach to run a MACH_RECV dispatch source. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: I despise the shared_library build with a deep, deep passion Created 6 years, 5 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « sandbox/mac/mach_message_server.h ('k') | sandbox/mac/sandbox_mac.gypi » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: sandbox/mac/mach_message_server.cc
diff --git a/sandbox/mac/mach_message_server.cc b/sandbox/mac/mach_message_server.cc
index cbd991635bb63f3cd39efcb588681ac89feb3870..5a733577f310c4ba9f8edbce7a1761d2ce572107 100644
--- a/sandbox/mac/mach_message_server.cc
+++ b/sandbox/mac/mach_message_server.cc
@@ -12,6 +12,7 @@
#include "base/logging.h"
#include "base/mac/mach_logging.h"
#include "base/strings/stringprintf.h"
+#include "sandbox/mac/dispatch_source_mach.h"
namespace sandbox {
@@ -21,9 +22,6 @@ MachMessageServer::MachMessageServer(
mach_msg_size_t buffer_size)
: demuxer_(demuxer),
server_port_(server_receive_right),
- server_queue_(NULL),
- server_source_(NULL),
- source_canceled_(dispatch_semaphore_create(0)),
buffer_size_(
mach_vm_round_page(buffer_size + sizeof(mach_msg_audit_trailer_t))),
did_forward_message_(false) {
@@ -31,15 +29,6 @@ MachMessageServer::MachMessageServer(
}
MachMessageServer::~MachMessageServer() {
- if (server_source_) {
- dispatch_source_cancel(server_source_);
- dispatch_release(server_source_);
-
- dispatch_semaphore_wait(source_canceled_, DISPATCH_TIME_FOREVER);
- dispatch_release(source_canceled_);
- }
- if (server_queue_)
- dispatch_release(server_queue_);
}
bool MachMessageServer::Initialize() {
@@ -78,18 +67,11 @@ bool MachMessageServer::Initialize() {
reply_buffer_.reset(buffer, buffer_size_);
// Set up the dispatch queue to service the bootstrap port.
- // TODO(rsesek): Specify DISPATCH_QUEUE_SERIAL, in the 10.7 SDK. NULL means
- // the same thing but is not symbolically clear.
std::string label = base::StringPrintf(
"org.chromium.sandbox.MachMessageServer.%p", demuxer_);
- server_queue_ = dispatch_queue_create(label.c_str(), NULL);
- server_source_ = dispatch_source_create(DISPATCH_SOURCE_TYPE_MACH_RECV,
- server_port_.get(), 0, server_queue_);
- dispatch_source_set_event_handler(server_source_, ^{ ReceiveMessage(); });
- dispatch_source_set_cancel_handler(server_source_, ^{
- dispatch_semaphore_signal(source_canceled_);
- });
- dispatch_resume(server_source_);
+ dispatch_source_.reset(new DispatchSourceMach(
+ label.c_str(), server_port_.get(), ^{ ReceiveMessage(); }));
+ dispatch_source_->Resume();
return true;
}
« no previous file with comments | « sandbox/mac/mach_message_server.h ('k') | sandbox/mac/sandbox_mac.gypi » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698