• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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_HTML5FS_HTML5_FS_NODE_H_
6 #define LIBRARIES_NACL_IO_HTML5FS_HTML5_FS_NODE_H_
7 
8 #include <ppapi/c/pp_resource.h>
9 #include "nacl_io/node.h"
10 
11 namespace nacl_io {
12 
13 class Html5Fs;
14 
15 class Html5FsNode : public Node {
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 filesystem.
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(off_t* out_size);
38 
39  protected:
40   Html5FsNode(Filesystem* filesystem, PP_Resource fileref);
41 
42   // Init with standard open flags
43   virtual Error Init(int open_flags);
44   virtual void Destroy();
45 
46  private:
47   PP_Resource fileref_resource_;
48   PP_Resource fileio_resource_;  // 0 if the file is a directory.
49 
50   friend class Html5Fs;
51 };
52 
53 }  // namespace nacl_io
54 
55 #endif  // LIBRARIES_NACL_IO_HTML5FS_HTML5_FS_NODE_H_
56