blob: a299cadfecfb35e60e8020327361ee65e35d9752 [file] [log] [blame]
// 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.
#ifndef FLUTTER_SHELL_PLATFORM_FUCHSIA_FILE_IN_NAMESPACE_BUFFER_H_
#define FLUTTER_SHELL_PLATFORM_FUCHSIA_FILE_IN_NAMESPACE_BUFFER_H_
#include "flutter/fml/mapping.h"
namespace flutter_runner {
/// A mapping to a buffer for a file that has been loaded into a namespace.
class FileInNamespaceBuffer final : public fml::Mapping {
public:
/// Loads the file at |path| into the namespace |namespace_fd|, creating
/// a mapping to the loaded buffer.
///
/// The file will be loaded with the readable permission. If |executable| is
/// true, the file will also be loaded with the executable permission.
FileInNamespaceBuffer(int namespace_fd, const char* path, bool executable);
~FileInNamespaceBuffer();
// |fml::Mapping|
const uint8_t* GetMapping() const override;
// |fml::Mapping|
size_t GetSize() const override;
private:
/// The address that was mapped to the buffer.
void* address_;
/// The size of the buffer.
size_t size_;
FML_DISALLOW_COPY_AND_ASSIGN(FileInNamespaceBuffer);
};
/// Loads a file from |file_path| into the namespace |namespace_fd|, returning
/// the mapping for that file.
///
/// The file will be loaded with the readable permission. If |executable| is
/// true, the file will be also be loaded with the executable permission.
std::unique_ptr<fml::Mapping> LoadFile(int namespace_fd,
const char* path,
bool executable);
/// Opens the file at |path| and creates a file mapping for the file.
///
/// The file will be opened with the readable permission. If |executable| is
/// true, the file will also be opened with the executable permission.
std::unique_ptr<fml::FileMapping> MakeFileMapping(const char* path,
bool executable);
} // namespace flutter_runner
#endif // FLUTTER_SHELL_PLATFORM_FUCHSIA_FILE_IN_NAMESPACE_BUFFER_H_