chromium/native_client_sdk/src/libraries/nacl_io/devfs/dev_fs.h

// Copyright 2013 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef LIBRARIES_NACL_IO_DEVFS_DEV_FS_H_
#define LIBRARIES_NACL_IO_DEVFS_DEV_FS_H_

#include "nacl_io/filesystem.h"
#include "nacl_io/typed_fs_factory.h"

namespace nacl_io {

class DevFs : public Filesystem {
 public:
  DevFs(const DevFs&) = delete;
  DevFs& operator=(const DevFs&) = delete;

  virtual Error OpenWithMode(const Path& path, int open_flags, mode_t mode,
                             ScopedNode* out_node);
  virtual Error Unlink(const Path& path);
  virtual Error Mkdir(const Path& path, int permissions);
  virtual Error Rmdir(const Path& path);
  virtual Error Remove(const Path& path);
  virtual Error Rename(const Path& path, const Path& newpath);

  Error CreateFsNode(Filesystem* fs);
  Error DestroyFsNode(Filesystem* fs);

 protected:
  DevFs();

  virtual Error Init(const FsInitArgs& args);

 private:
  ScopedNode root_;
  ScopedNode fs_dir_;

  friend class TypedFsFactory<DevFs>;
};

}  // namespace nacl_io

#endif  // LIBRARIES_NACL_IO_DEVFS_DEV_FS_H_