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