xref: /haiku/src/add-ons/kernel/file_systems/netfs/client/ExtendedServerInfo.h (revision 5a1d355fdf2747f80f8c46e2539f844a0b813346)
1*5a1d355fSStephan Aßmus // ExtendedServerInfo.h
2*5a1d355fSStephan Aßmus 
3*5a1d355fSStephan Aßmus #ifndef NET_FS_EXTENDED_SERVER_INFO_H
4*5a1d355fSStephan Aßmus #define NET_FS_EXTENDED_SERVER_INFO_H
5*5a1d355fSStephan Aßmus 
6*5a1d355fSStephan Aßmus #include <HashString.h>
7*5a1d355fSStephan Aßmus #include <Referenceable.h>
8*5a1d355fSStephan Aßmus 
9*5a1d355fSStephan Aßmus #include "NetAddress.h"
10*5a1d355fSStephan Aßmus #include "Vector.h"
11*5a1d355fSStephan Aßmus 
12*5a1d355fSStephan Aßmus class ServerInfo;
13*5a1d355fSStephan Aßmus class ShareInfo;
14*5a1d355fSStephan Aßmus 
15*5a1d355fSStephan Aßmus // ExtendedShareInfo
16*5a1d355fSStephan Aßmus class ExtendedShareInfo : public BReferenceable {
17*5a1d355fSStephan Aßmus public:
18*5a1d355fSStephan Aßmus 								ExtendedShareInfo();
19*5a1d355fSStephan Aßmus 
20*5a1d355fSStephan Aßmus 			status_t			SetTo(const ShareInfo* shareInfo);
21*5a1d355fSStephan Aßmus 
22*5a1d355fSStephan Aßmus 			const char*			GetShareName() const;
23*5a1d355fSStephan Aßmus 
24*5a1d355fSStephan Aßmus private:
25*5a1d355fSStephan Aßmus 			HashString			fShareName;
26*5a1d355fSStephan Aßmus };
27*5a1d355fSStephan Aßmus 
28*5a1d355fSStephan Aßmus // ExtendedServerInfo
29*5a1d355fSStephan Aßmus class ExtendedServerInfo : public BReferenceable {
30*5a1d355fSStephan Aßmus public:
31*5a1d355fSStephan Aßmus 								ExtendedServerInfo(const NetAddress& address);
32*5a1d355fSStephan Aßmus 								~ExtendedServerInfo();
33*5a1d355fSStephan Aßmus 
34*5a1d355fSStephan Aßmus 			const NetAddress&	GetAddress() const;
35*5a1d355fSStephan Aßmus 			const char*			GetServerName() const;
36*5a1d355fSStephan Aßmus 			const char*			GetConnectionMethod() const;
37*5a1d355fSStephan Aßmus 
38*5a1d355fSStephan Aßmus 			int32				CountShares() const;
39*5a1d355fSStephan Aßmus 			ExtendedShareInfo*	ShareInfoAt(int32 index) const;
40*5a1d355fSStephan Aßmus 			ExtendedShareInfo*	GetShareInfo(const char* name);
41*5a1d355fSStephan Aßmus 
42*5a1d355fSStephan Aßmus 			status_t			SetTo(ServerInfo* serverInfo);
43*5a1d355fSStephan Aßmus 
44*5a1d355fSStephan Aßmus 			void				SetState(uint32 state);
45*5a1d355fSStephan Aßmus 			uint32				GetState() const;
46*5a1d355fSStephan Aßmus 				// used by the ServerManager only
47*5a1d355fSStephan Aßmus 
48*5a1d355fSStephan Aßmus private:
49*5a1d355fSStephan Aßmus 			status_t			_AddShare(const ShareInfo* info);
50*5a1d355fSStephan Aßmus 
51*5a1d355fSStephan Aßmus private:
52*5a1d355fSStephan Aßmus 		NetAddress				fAddress;
53*5a1d355fSStephan Aßmus 		HashString				fServerName;
54*5a1d355fSStephan Aßmus 		HashString				fConnectionMethod;
55*5a1d355fSStephan Aßmus 		Vector<ExtendedShareInfo*> fShareInfos;
56*5a1d355fSStephan Aßmus 		uint32					fState;
57*5a1d355fSStephan Aßmus };
58*5a1d355fSStephan Aßmus 
59*5a1d355fSStephan Aßmus #endif	// NET_FS_EXTENDED_SERVER_INFO_H
60