1// Copyright (c) 2012 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_MOUNT_HTML5FS_NODE_H_ 6#define LIBRARIES_NACL_IO_MOUNT_HTML5FS_NODE_H_ 7 8#include <ppapi/c/pp_resource.h> 9#include "nacl_io/mount_node.h" 10 11namespace nacl_io { 12 13class MountHtml5Fs; 14 15class MountNodeHtml5Fs : public MountNode { 16 public: 17 // Normal OS operations on a node (file), can be called by the kernel 18 // directly so it must lock and unlock appropriately. These functions 19 // must not be called by the mount. 20 virtual Error FSync(); 21 virtual Error GetDents(size_t offs, 22 struct dirent* pdir, 23 size_t count, 24 int* out_bytes); 25 virtual Error GetStat(struct stat* stat); 26 virtual Error Read(const HandleAttr& attr, 27 void* buf, 28 size_t count, 29 int* out_bytes); 30 virtual Error FTruncate(off_t size); 31 virtual Error Write(const HandleAttr& attr, 32 const void* buf, 33 size_t count, 34 int* out_bytes); 35 36 virtual int GetType(); 37 virtual Error GetSize(size_t *out_size); 38 virtual bool IsaDir(); 39 virtual bool IsaFile(); 40 41 protected: 42 MountNodeHtml5Fs(Mount* mount, PP_Resource fileref); 43 44 // Init with standard open flags 45 virtual Error Init(int open_flags); 46 virtual void Destroy(); 47 48 private: 49 PP_Resource fileref_resource_; 50 PP_Resource fileio_resource_; // 0 if the file is a directory. 51 52 friend class MountHtml5Fs; 53}; 54 55} // namespace nacl_io 56 57#endif // LIBRARIES_NACL_IO_MOUNT_HTML5FS_NODE_H_ 58