diff options
Diffstat (limited to 'mojo/edk/system/platform_handle_dispatcher.cc')
-rw-r--r-- | mojo/edk/system/platform_handle_dispatcher.cc | 104 |
1 files changed, 0 insertions, 104 deletions
diff --git a/mojo/edk/system/platform_handle_dispatcher.cc b/mojo/edk/system/platform_handle_dispatcher.cc deleted file mode 100644 index 3e708c2..0000000 --- a/mojo/edk/system/platform_handle_dispatcher.cc +++ /dev/null @@ -1,104 +0,0 @@ -// Copyright 2014 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#include "mojo/edk/system/platform_handle_dispatcher.h" - -#include "base/synchronization/lock.h" -#include "mojo/edk/embedder/platform_handle_vector.h" - -namespace mojo { -namespace edk { - -// static -scoped_refptr<PlatformHandleDispatcher> PlatformHandleDispatcher::Create( - ScopedPlatformHandle platform_handle) { - return new PlatformHandleDispatcher(std::move(platform_handle)); -} - -ScopedPlatformHandle PlatformHandleDispatcher::PassPlatformHandle() { - return std::move(platform_handle_); -} - -Dispatcher::Type PlatformHandleDispatcher::GetType() const { - return Type::PLATFORM_HANDLE; -} - -MojoResult PlatformHandleDispatcher::Close() { - base::AutoLock lock(lock_); - if (is_closed_ || in_transit_) - return MOJO_RESULT_INVALID_ARGUMENT; - is_closed_ = true; - platform_handle_.reset(); - return MOJO_RESULT_OK; -} - -void PlatformHandleDispatcher::StartSerialize(uint32_t* num_bytes, - uint32_t* num_ports, - uint32_t* num_handles) { - *num_bytes = 0; - *num_ports = 0; - *num_handles = 1; -} - -bool PlatformHandleDispatcher::EndSerialize(void* destination, - ports::PortName* ports, - PlatformHandle* handles) { - base::AutoLock lock(lock_); - if (is_closed_) - return false; - handles[0] = platform_handle_.get(); - return true; -} - -bool PlatformHandleDispatcher::BeginTransit() { - base::AutoLock lock(lock_); - if (in_transit_) - return false; - in_transit_ = !is_closed_; - return in_transit_; -} - -void PlatformHandleDispatcher::CompleteTransitAndClose() { - base::AutoLock lock(lock_); - - in_transit_ = false; - is_closed_ = true; - - // The system has taken ownership of our handle. - ignore_result(platform_handle_.release()); -} - -void PlatformHandleDispatcher::CancelTransit() { - base::AutoLock lock(lock_); - in_transit_ = false; -} - -// static -scoped_refptr<PlatformHandleDispatcher> PlatformHandleDispatcher::Deserialize( - const void* bytes, - size_t num_bytes, - const ports::PortName* ports, - size_t num_ports, - PlatformHandle* handles, - size_t num_handles) { - if (num_bytes || num_ports || num_handles != 1) - return nullptr; - - PlatformHandle handle; - std::swap(handle, handles[0]); - - return PlatformHandleDispatcher::Create(ScopedPlatformHandle(handle)); -} - -PlatformHandleDispatcher::PlatformHandleDispatcher( - ScopedPlatformHandle platform_handle) - : platform_handle_(std::move(platform_handle)) {} - -PlatformHandleDispatcher::~PlatformHandleDispatcher() { - DCHECK(is_closed_ && !in_transit_); - DCHECK(!platform_handle_.is_valid()); -} - -} // namespace edk -} // namespace mojo |