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 3 // found in the LICENSE file. 4 5 #ifndef MOJO_EMBEDDER_PLATFORM_HANDLE_H_ 6 #define MOJO_EMBEDDER_PLATFORM_HANDLE_H_ 7 8 #include "build/build_config.h" 9 #include "mojo/system/system_impl_export.h" 10 11 #if defined(OS_WIN) 12 #include <windows.h> 13 #endif 14 15 namespace mojo { 16 namespace embedder { 17 18 #if defined(OS_POSIX) 19 struct MOJO_SYSTEM_IMPL_EXPORT PlatformHandle { 20 PlatformHandle() : fd(-1) {} 21 explicit PlatformHandle(int fd) : fd(fd) {} 22 23 void CloseIfNecessary(); 24 25 bool is_valid() const { return fd != -1; } 26 27 int fd; 28 }; 29 #elif defined(OS_WIN) 30 struct MOJO_SYSTEM_IMPL_EXPORT PlatformHandle { 31 PlatformHandle() : handle(INVALID_HANDLE_VALUE) {} 32 explicit PlatformHandle(HANDLE handle) : handle(handle) {} 33 34 void CloseIfNecessary(); 35 36 bool is_valid() const { return handle != INVALID_HANDLE_VALUE; } 37 38 HANDLE handle; 39 }; 40 #else 41 #error "Platform not yet supported." 42 #endif 43 44 } // namespace embedder 45 } // namespace mojo 46 47 #endif // MOJO_EMBEDDER_PLATFORM_HANDLE_H_ 48