Update To 11.40.268.0
[platform/framework/web/crosswalk.git] / src / native_client_sdk / src / libraries / nacl_io / memfs / mem_fs_node.h
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_MEMFS_MEM_FS_NODE_H_
6 #define LIBRARIES_NACL_IO_MEMFS_MEM_FS_NODE_H_
7
8 #include "nacl_io/node.h"
9
10 namespace nacl_io {
11
12 class MemFsNode : public Node {
13  public:
14   explicit MemFsNode(Filesystem* filesystem);
15
16  protected:
17   virtual ~MemFsNode();
18
19  public:
20   // Normal read/write operations on a file
21   virtual Error Read(const HandleAttr& attr,
22                      void* buf,
23                      size_t count,
24                      int* out_bytes);
25   virtual Error Write(const HandleAttr& attr,
26                       const void* buf,
27                       size_t count,
28                       int* out_bytes);
29   virtual Error FTruncate(off_t size);
30   virtual Error Futimens(const struct timespec times[2]);
31   virtual Error Fchmod(mode_t mode);
32
33  private:
34   Error Resize(off_t size);
35
36   char* data_;
37   size_t data_capacity_;
38   friend class MemFs;
39 };
40
41 }  // namespace nacl_io
42
43 #endif  // LIBRARIES_NACL_IO_MEMFS_MEM_FS_NODE_H_