14e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)// Copyright 2013 The Chromium Authors. All rights reserved. 24e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 34e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)// found in the LICENSE file. 44e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 523730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)#ifndef MOJO_EMBEDDER_PLATFORM_HANDLE_H_ 623730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)#define MOJO_EMBEDDER_PLATFORM_HANDLE_H_ 74e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 84e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)#include "build/build_config.h" 95d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "mojo/system/system_impl_export.h" 104e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 11a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)#if defined(OS_WIN) 12a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)#include <windows.h> 13a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)#endif 14a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 154e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)namespace mojo { 165d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)namespace embedder { 174e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 184e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)#if defined(OS_POSIX) 195d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)struct MOJO_SYSTEM_IMPL_EXPORT PlatformHandle { 205d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) PlatformHandle() : fd(-1) {} 215d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) explicit PlatformHandle(int fd) : fd(fd) {} 224e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 23a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) void CloseIfNecessary(); 24a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 25a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) bool is_valid() const { return fd != -1; } 26a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 274e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) int fd; 284e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)}; 29a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)#elif defined(OS_WIN) 305d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)struct MOJO_SYSTEM_IMPL_EXPORT PlatformHandle { 315d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) PlatformHandle() : handle(INVALID_HANDLE_VALUE) {} 325d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) explicit PlatformHandle(HANDLE handle) : handle(handle) {} 33a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 34a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) void CloseIfNecessary(); 35a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 36a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) bool is_valid() const { return handle != INVALID_HANDLE_VALUE; } 37a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 38a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) HANDLE handle; 39a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)}; 404e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)#else 414e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)#error "Platform not yet supported." 424e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)#endif 434e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 445d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)} // namespace embedder 454e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)} // namespace mojo 464e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 4723730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)#endif // MOJO_EMBEDDER_PLATFORM_HANDLE_H_ 48