1 // Copyright 2014 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_PASSTHROUGHFS_REAL_NODE_H_ 6 #define LIBRARIES_NACL_IO_PASSTHROUGHFS_REAL_NODE_H_ 7 8 #include "nacl_io/node.h" 9 10 namespace nacl_io { 11 12 class RealNode : public Node { 13 public: 14 RealNode(Filesystem* filesystem, int real_fd, bool close_on_destroy = false); 15 16 protected: Init(int flags)17 virtual Error Init(int flags) { return 0; } 18 19 virtual void Destroy(); 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 virtual Error GetDents(size_t offs, 33 struct dirent* pdir, 34 size_t count, 35 int* out_bytes); 36 virtual Error GetStat(struct stat* stat); 37 virtual Error Isatty(); 38 virtual Error MMap(void* addr, 39 size_t length, 40 int prot, 41 int flags, 42 size_t offset, 43 void** out_addr); 44 45 private: 46 int real_fd_; 47 bool close_on_destroy_; 48 }; 49 50 } // namespace nacl_io 51 52 #endif // LIBRARIES_NACL_IO_PASSTHROUGHFS_REAL_NODE_H_ 53