xref: /haiku/src/add-ons/kernel/file_systems/netfs/client/ServerQueryIterator.h (revision 5a1d355fdf2747f80f8c46e2539f844a0b813346)
1 // ServerQueryIterator.h
2 
3 #ifndef NET_FS_SERVER_QUERY_ITERATOR_H
4 #define NET_FS_SERVER_QUERY_ITERATOR_H
5 
6 #include "EntryInfo.h"
7 #include "NodeInfo.h"
8 #include "QueryIterator.h"
9 #include "HashString.h"
10 
11 class ServerQueryIterator : public QueryIterator {
12 public:
13 								ServerQueryIterator(Volume* volume);
14 	virtual						~ServerQueryIterator();
15 
16 			void				SetRemoteCookie(int32 cookie);
17 			int32				GetRemoteCookie() const;
18 
19 			status_t			SetEntry(const int32* shareVolumeIDs,
20 									int32 shareVolumeCount,
21 									const NodeInfo& dirInfo,
22 									const EntryInfo& entryInfo);
23 			void				UnsetEntry();
24 
25 			const int32*		GetShareVolumeIDs() const;
26 			int32				CountShareVolumes() const;
27 			const NodeInfo&		GetDirectoryInfo() const;
28 			const EntryInfo&	GetEntryInfo() const;
29 
30 			bool				HasNextShareVolumeID() const;
31 			int32				NextShareVolumeID();
32 
33 private:
34 			enum { IN_OBJECT_ID_COUNT = 4 };
35 
36 			int32				fRemoteCookie;
37 			int32*				fShareVolumeIDs;
38 			int32				fShareVolumeCount;
39 			int32				fShareVolumeIndex;
40 			NodeInfo			fDirectoryInfo;
41 			EntryInfo			fEntryInfo;
42 			HashString			fEntryName;
43 			int32				fInObjectIDs[IN_OBJECT_ID_COUNT];
44 };
45 
46 #endif	// NET_FS_SERVER_QUERY_ITERATOR_H
47