| // Copyright 2013 The Flutter Authors. All rights reserved. | |
| // Use of this source code is governed by a BSD-style license that can be | |
| // found in the LICENSE file. | |
| #pragma once | |
| #include "flutter/fml/logging.h" | |
| #include "flutter/fml/unique_object.h" | |
| #include "lib/fdio/namespace.h" | |
| namespace flutter_runner { | |
| struct UniqueFDIONSTraits { | |
| static fdio_ns_t* InvalidValue() { return nullptr; } | |
| static bool IsValid(fdio_ns_t* ns) { return ns != InvalidValue(); } | |
| static void Free(fdio_ns_t* ns) { | |
| auto status = fdio_ns_destroy(ns); | |
| FML_DCHECK(status == ZX_OK); | |
| } | |
| }; | |
| using UniqueFDIONS = fml::UniqueObject<fdio_ns_t*, UniqueFDIONSTraits>; | |
| inline UniqueFDIONS UniqueFDIONSCreate() { | |
| fdio_ns_t* ns = nullptr; | |
| if (fdio_ns_create(&ns) == ZX_OK) { | |
| return UniqueFDIONS{ns}; | |
| } | |
| return UniqueFDIONS{nullptr}; | |
| } | |
| } // namespace flutter_runner |