1// Copyright 2013 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 LIBRARIES_NACL_IO_DEVFS_DEV_FS_H_
6#define LIBRARIES_NACL_IO_DEVFS_DEV_FS_H_
7
8#include "nacl_io/filesystem.h"
9#include "nacl_io/typed_fs_factory.h"
10
11namespace nacl_io {
12
13class Node;
14
15class DevFs : public Filesystem {
16 public:
17  virtual Error OpenWithMode(const Path& path, int open_flags, mode_t mode,
18                             ScopedNode* out_node);
19  virtual Error Unlink(const Path& path);
20  virtual Error Mkdir(const Path& path, int permissions);
21  virtual Error Rmdir(const Path& path);
22  virtual Error Remove(const Path& path);
23  virtual Error Rename(const Path& path, const Path& newpath);
24
25  Error CreateFsNode(Filesystem* fs);
26  Error DestroyFsNode(Filesystem* fs);
27
28 protected:
29  DevFs();
30
31  virtual Error Init(const FsInitArgs& args);
32
33 private:
34  ScopedNode root_;
35  ScopedNode fs_dir_;
36
37  friend class TypedFsFactory<DevFs>;
38  DISALLOW_COPY_AND_ASSIGN(DevFs);
39};
40
41}  // namespace nacl_io
42
43#endif  // LIBRARIES_NACL_IO_DEVFS_DEV_FS_H_
44