1// Copyright (c) 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#include "ppapi/cpp/private/pass_file_handle.h"
6
7#ifdef _WIN32
8# include <windows.h>
9#else
10# include <unistd.h>
11#endif
12
13namespace pp {
14
15PassFileHandle::PassFileHandle()
16    : handle_(PP_kInvalidFileHandle) {
17}
18
19PassFileHandle::PassFileHandle(PP_FileHandle handle)
20    : handle_(handle) {
21}
22
23PassFileHandle::PassFileHandle(PassFileHandle& handle)
24    : handle_(handle.Release()) {
25}
26
27PassFileHandle::~PassFileHandle() {
28  Close();
29}
30
31PP_FileHandle PassFileHandle::Release() {
32  PP_FileHandle released = handle_;
33  handle_ = PP_kInvalidFileHandle;
34  return released;
35}
36
37void PassFileHandle::Close() {
38  if (handle_ != PP_kInvalidFileHandle) {
39#ifdef _WIN32
40    CloseHandle(handle_);
41#else
42    close(handle_);
43#endif
44    handle_ = PP_kInvalidFileHandle;
45  }
46}
47
48}  // namespace pp
49