1cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)// Copyright 2014 The Chromium Authors. All rights reserved.
2cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
3cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)// found in the LICENSE file.
4cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
5cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#ifndef MOJO_EMBEDDER_PLATFORM_HANDLE_UTILS_H_
6cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#define MOJO_EMBEDDER_PLATFORM_HANDLE_UTILS_H_
7cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
8cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#include "mojo/embedder/platform_handle.h"
9cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#include "mojo/embedder/scoped_platform_handle.h"
10cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#include "mojo/system/system_impl_export.h"
11cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
12cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)namespace mojo {
13cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)namespace embedder {
14cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
15cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)// Closes all the |PlatformHandle|s in the given container.
16cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)template <typename PlatformHandleContainer>
17cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)MOJO_SYSTEM_IMPL_EXPORT inline void CloseAllPlatformHandles(
18cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)    PlatformHandleContainer* platform_handles) {
19cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  for (typename PlatformHandleContainer::iterator it =
20cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)           platform_handles->begin();
21cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)       it != platform_handles->end();
22cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)       ++it)
23cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)    it->CloseIfNecessary();
24cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)}
25cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
26cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)// Duplicates the given |PlatformHandle| (which must be valid). (Returns an
27cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)// invalid |ScopedPlatformHandle| on failure.)
285f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)MOJO_SYSTEM_IMPL_EXPORT ScopedPlatformHandle
295f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)    DuplicatePlatformHandle(PlatformHandle platform_handle);
30cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
31cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)}  // namespace embedder
32cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)}  // namespace mojo
33cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
34cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#endif  // MOJO_EMBEDDER_PLATFORM_HANDLE_UTILS_H_
35