// Copyright 2016 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef LIB_FXL_FILES_UNIQUE_FD_H_
#define LIB_FXL_FILES_UNIQUE_FD_H_

#include "src/lib/fxl/memory/unique_object.h"

namespace fxl {
namespace internal {

struct UniqueFDTraits {
  static int InvalidValue() { return -1; }
  static bool IsValid(int value) { return value >= 0; }
  static void Free(int fd);
};

}  // namespace internal

using UniqueFD = UniqueObject<int, internal::UniqueFDTraits>;

}  // namespace fxl

#endif  // LIB_FXL_FILES_UNIQUE_FD_H_
