1 /* 2 * Copyright 2012 Haiku, Inc. All rights reserved. 3 * Distributed under the terms of the MIT License. 4 * 5 * Authors: 6 * Paweł Dziepak, pdziepak@quarnos.org 7 */ 8 #ifndef NFS4INODE_H 9 #define NFS4INODE_H 10 11 12 #include <sys/stat.h> 13 14 #include <SupportDefs.h> 15 16 #include "Cookie.h" 17 #include "FileInfo.h" 18 #include "FileSystem.h" 19 #include "NFS4Object.h" 20 #include "ReplyInterpreter.h" 21 22 23 class NFS4Inode : protected NFS4Object { 24 public: 25 status_t GetChangeInfo(uint64* change); 26 status_t ReadLink(void* buffer, size_t* length); 27 28 protected: 29 status_t Access(uint32* allowed); 30 31 status_t CommitWrites(); 32 33 status_t LookUp(const char* name, uint64* change, uint64* fileID, 34 FileHandle* handle); 35 36 status_t Link(Inode* dir, const char* name, 37 ChangeInfo* changeInfo); 38 39 static status_t Rename(Inode* from, Inode* to, const char* fromName, 40 const char* toName, ChangeInfo* fromChange, 41 ChangeInfo* toChange, uint64* fileID); 42 43 status_t GetStat(AttrValue** values, uint32* count); 44 status_t WriteStat(OpenState* state, AttrValue* attrs, 45 uint32 attrCount); 46 47 status_t CreateFile(const char* name, int mode, int perms, 48 OpenState* state, ChangeInfo* changeInfo, 49 uint64* fileID, FileHandle* handle); 50 status_t OpenFile(OpenState* state, int mode); 51 52 status_t ReadFile(OpenFileCookie* cookie, OpenState* state, 53 uint64 position, uint32* length, void* buffer, 54 bool* eof); 55 status_t WriteFile(OpenFileCookie* cookie, OpenState* state, 56 uint64 position, uint32* length, 57 const void* buffer); 58 59 status_t CreateObject(const char* name, const char* path, 60 int mode, FileType type, ChangeInfo* changeInfo, 61 uint64* fileID, FileHandle* handle); 62 status_t RemoveObject(const char* name, FileType type, 63 ChangeInfo* changeInfo); 64 65 status_t ReadDirOnce(DirEntry** dirents, uint32* count, 66 OpenDirCookie* cookie, bool* eof, uint64* change, 67 uint64* dirCookie, uint64* dirCookieVerf); 68 69 status_t TestLock(OpenFileCookie* cookie, LockType* type, 70 uint64* position, uint64* length, bool& conflict); 71 status_t AcquireLock(OpenFileCookie* cookie, LockInfo* lockInfo, 72 bool wait); 73 status_t ReleaseLock(OpenFileCookie* cookie, LockInfo* lockInfo); 74 }; 75 76 77 #endif // NFS4INODE_H 78 79