1// Copyright 2014 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_UTILS_H_
6#define MOJO_EMBEDDER_PLATFORM_HANDLE_UTILS_H_
7
8#include "mojo/embedder/platform_handle.h"
9#include "mojo/embedder/scoped_platform_handle.h"
10#include "mojo/system/system_impl_export.h"
11
12namespace mojo {
13namespace embedder {
14
15// Closes all the |PlatformHandle|s in the given container.
16template <typename PlatformHandleContainer>
17MOJO_SYSTEM_IMPL_EXPORT inline void CloseAllPlatformHandles(
18    PlatformHandleContainer* platform_handles) {
19  for (typename PlatformHandleContainer::iterator it =
20           platform_handles->begin();
21       it != platform_handles->end();
22       ++it)
23    it->CloseIfNecessary();
24}
25
26// Duplicates the given |PlatformHandle| (which must be valid). (Returns an
27// invalid |ScopedPlatformHandle| on failure.)
28MOJO_SYSTEM_IMPL_EXPORT ScopedPlatformHandle
29    DuplicatePlatformHandle(PlatformHandle platform_handle);
30
31}  // namespace embedder
32}  // namespace mojo
33
34#endif  // MOJO_EMBEDDER_PLATFORM_HANDLE_UTILS_H_
35