⛏️ index : haiku.git

// ServerQueryIterator.h

#ifndef NET_FS_SERVER_QUERY_ITERATOR_H
#define NET_FS_SERVER_QUERY_ITERATOR_H

#include "EntryInfo.h"
#include "NodeInfo.h"
#include "QueryIterator.h"
#include "HashString.h"

class ServerQueryIterator : public QueryIterator {
public:
								ServerQueryIterator(Volume* volume);
	virtual						~ServerQueryIterator();

			void				SetRemoteCookie(int32 cookie);
			int32				GetRemoteCookie() const;

			status_t			SetEntry(const int32* shareVolumeIDs,
									int32 shareVolumeCount,
									const NodeInfo& dirInfo,
									const EntryInfo& entryInfo);
			void				UnsetEntry();

			const int32*		GetShareVolumeIDs() const;
			int32				CountShareVolumes() const;
			const NodeInfo&		GetDirectoryInfo() const;
			const EntryInfo&	GetEntryInfo() const;

			bool				HasNextShareVolumeID() const;
			int32				NextShareVolumeID();

private:
			enum { IN_OBJECT_ID_COUNT = 4 };

			int32				fRemoteCookie;
			int32*				fShareVolumeIDs;
			int32				fShareVolumeCount;
			int32				fShareVolumeIndex;
			NodeInfo			fDirectoryInfo;
			EntryInfo			fEntryInfo;
			HashString			fEntryName;
			int32				fInObjectIDs[IN_OBJECT_ID_COUNT];
};

#endif	// NET_FS_SERVER_QUERY_ITERATOR_H