1// ServerVolume.h
2
3#ifndef NET_FS_SERVER_VOLUME_H
4#define NET_FS_SERVER_VOLUME_H
5
6#include "Locker.h"
7#include "NetAddress.h"
8#include "ServerManager.h"
9#include "VirtualVolume.h"
10
11class ExtendedServerInfo;
12class ExtendedShareInfo;
13class ServerConnectionProvider;
14class ShareVolume;
15class VirtualNode;
16
17class ServerVolume : public VirtualVolume {
18public:
19								ServerVolume(VolumeManager* volumeManager,
20									ExtendedServerInfo* serverInfo);
21								~ServerVolume();
22
23			NetAddress			GetServerAddress();
24
25			void				SetServerInfo(ExtendedServerInfo* serverInfo);
26
27			status_t			Init(const char* name);
28			void				Uninit();
29
30	virtual	void				PrepareToUnmount();
31
32	virtual	void				HandleEvent(VolumeEvent* event);
33
34			// FS
35	virtual	status_t			Unmount();
36
37			// queries
38	virtual	status_t			OpenQuery(const char* queryString,
39									uint32 flags, port_id port, int32 token,
40									QueryIterator** iterator);
41	virtual	void				FreeQueryIterator(QueryIterator* iterator);
42	virtual	status_t			ReadQuery(QueryIterator* iterator,
43									struct dirent* buffer, size_t bufferSize,
44									int32 count, int32* countRead);
45
46private:
47			status_t			_AddShare(ExtendedShareInfo* shareInfo);
48			ShareVolume*		_GetShareVolume(int32 volumeID);
49
50protected:
51			ExtendedServerInfo*	fServerInfo;
52			ServerConnectionProvider* fConnectionProvider;
53};
54
55#endif	// NET_FS_SERVER_VOLUME_H
56