• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 {
PlatformHandlePlatformHandle20   PlatformHandle() : fd(-1) {}
PlatformHandlePlatformHandle21   explicit PlatformHandle(int fd) : fd(fd) {}
22 
23   void CloseIfNecessary();
24 
is_validPlatformHandle25   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