Upstream version 5.34.92.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 #include <vector>
11
12 namespace nacl_io {
13
14 class MemFsNode : public Node {
15  public:
16   explicit MemFsNode(Filesystem* filesystem);
17
18  protected:
19   virtual ~MemFsNode();
20
21  public:
22   // Normal read/write operations on a file
23   virtual Error Read(const HandleAttr& attr,
24                      void* buf,
25                      size_t count,
26                      int* out_bytes);
27   virtual Error Write(const HandleAttr& attr,
28                       const void* buf,
29                       size_t count,
30                       int* out_bytes);
31   virtual Error FTruncate(off_t size);
32
33  private:
34   void Resize(off_t size);
35
36   std::vector<char> data_;
37   friend class MemFs;
38 };
39
40 }  // namespace nacl_io
41
42 #endif  // LIBRARIES_NACL_IO_MEMFS_MEM_FS_NODE_H_