// ServerVolume.h #ifndef NET_FS_SERVER_VOLUME_H #define NET_FS_SERVER_VOLUME_H #include "Locker.h" #include "NetAddress.h" #include "ServerManager.h" #include "VirtualVolume.h" class ExtendedServerInfo; class ExtendedShareInfo; class ServerConnectionProvider; class ShareVolume; class VirtualNode; class ServerVolume : public VirtualVolume { public: ServerVolume(VolumeManager* volumeManager, ExtendedServerInfo* serverInfo); ~ServerVolume(); NetAddress GetServerAddress(); void SetServerInfo(ExtendedServerInfo* serverInfo); status_t Init(const char* name); void Uninit(); virtual void PrepareToUnmount(); virtual void HandleEvent(VolumeEvent* event); // FS virtual status_t Unmount(); // queries virtual status_t OpenQuery(const char* queryString, uint32 flags, port_id port, int32 token, QueryIterator** iterator); virtual void FreeQueryIterator(QueryIterator* iterator); virtual status_t ReadQuery(QueryIterator* iterator, struct dirent* buffer, size_t bufferSize, int32 count, int32* countRead); private: status_t _AddShare(ExtendedShareInfo* shareInfo); ShareVolume* _GetShareVolume(int32 volumeID); protected: ExtendedServerInfo* fServerInfo; ServerConnectionProvider* fConnectionProvider; }; #endif // NET_FS_SERVER_VOLUME_H