Upstream version 10.39.225.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 Fchmod(mode_t mode);
31
32  private:
33   Error Resize(off_t size);
34
35   char* data_;
36   size_t data_capacity_;
37   friend class MemFs;
38 };
39
40 }  // namespace nacl_io
41
42 #endif  // LIBRARIES_NACL_IO_MEMFS_MEM_FS_NODE_H_