15d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)// Copyright 2013 The Chromium Authors. All rights reserved. 2ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch// Use of this source code is governed by a BSD-style license that can be 3ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch// found in the LICENSE file. 4ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch 55d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#ifndef LIBRARIES_NACL_IO_MEMFS_MEM_FS_NODE_H_ 65d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#define LIBRARIES_NACL_IO_MEMFS_MEM_FS_NODE_H_ 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 85d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "nacl_io/node.h" 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 10ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdochnamespace nacl_io { 11ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch 125d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)class MemFsNode : public Node { 135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public: 145d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) explicit MemFsNode(Filesystem* filesystem); 155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) protected: 175d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) virtual ~MemFsNode(); 185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public: 205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Normal read/write operations on a file 214e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) virtual Error Read(const HandleAttr& attr, 224e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) void* buf, 234e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) size_t count, 244e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) int* out_bytes); 254e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) virtual Error Write(const HandleAttr& attr, 26868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) const void* buf, 27868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) size_t count, 28868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) int* out_bytes); 29868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) virtual Error FTruncate(off_t size); 301320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci virtual Error Fchmod(mode_t mode); 315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) private: 336e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) Error Resize(off_t size); 34424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) 356e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) char* data_; 366e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) size_t data_capacity_; 375d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) friend class MemFs; 385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 40ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch} // namespace nacl_io 41ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch 425d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#endif // LIBRARIES_NACL_IO_MEMFS_MEM_FS_NODE_H_ 43