xref: /haiku/src/add-ons/kernel/file_systems/netfs/server/StatisticsManager.h (revision 5a1d355fdf2747f80f8c46e2539f844a0b813346)
1*5a1d355fSStephan Aßmus // StatisticsManager.h
2*5a1d355fSStephan Aßmus 
3*5a1d355fSStephan Aßmus #ifndef NET_FS_STATISTICS_MANAGER_H
4*5a1d355fSStephan Aßmus #define NET_FS_STATISTICS_MANAGER_H
5*5a1d355fSStephan Aßmus 
6*5a1d355fSStephan Aßmus #include "Locker.h"
7*5a1d355fSStephan Aßmus 
8*5a1d355fSStephan Aßmus class BMessage;
9*5a1d355fSStephan Aßmus 
10*5a1d355fSStephan Aßmus class Share;
11*5a1d355fSStephan Aßmus class User;
12*5a1d355fSStephan Aßmus 
13*5a1d355fSStephan Aßmus class StatisticsManager {
14*5a1d355fSStephan Aßmus private:
15*5a1d355fSStephan Aßmus 								StatisticsManager();
16*5a1d355fSStephan Aßmus 								~StatisticsManager();
17*5a1d355fSStephan Aßmus 
18*5a1d355fSStephan Aßmus 			status_t			Init();
19*5a1d355fSStephan Aßmus 
20*5a1d355fSStephan Aßmus public:
21*5a1d355fSStephan Aßmus 	static	status_t			CreateDefault();
22*5a1d355fSStephan Aßmus 	static	void				DeleteDefault();
23*5a1d355fSStephan Aßmus 	static	StatisticsManager*	GetDefault();
24*5a1d355fSStephan Aßmus 
25*5a1d355fSStephan Aßmus 			void				UserRemoved(User* user);
26*5a1d355fSStephan Aßmus 			void				ShareRemoved(Share* share);
27*5a1d355fSStephan Aßmus 
28*5a1d355fSStephan Aßmus 			void				ShareMounted(Share* share, User* user);
29*5a1d355fSStephan Aßmus 			void				ShareUnmounted(Share* share, User* user);
30*5a1d355fSStephan Aßmus 
31*5a1d355fSStephan Aßmus 			status_t			GetUserStatistics(User* user,
32*5a1d355fSStephan Aßmus 									BMessage* statistics);
33*5a1d355fSStephan Aßmus 			status_t			GetUserStatistics(const char* user,
34*5a1d355fSStephan Aßmus 									BMessage* statistics);
35*5a1d355fSStephan Aßmus 
36*5a1d355fSStephan Aßmus 			status_t			GetShareStatistics(Share* share,
37*5a1d355fSStephan Aßmus 									BMessage* statistics);
38*5a1d355fSStephan Aßmus 			status_t			GetShareStatistics(const char* share,
39*5a1d355fSStephan Aßmus 									BMessage* statistics);
40*5a1d355fSStephan Aßmus 
41*5a1d355fSStephan Aßmus private:
42*5a1d355fSStephan Aßmus 			class ShareStatistics;
43*5a1d355fSStephan Aßmus 			struct ShareStatisticsMap;
44*5a1d355fSStephan Aßmus 
45*5a1d355fSStephan Aßmus 			Locker				fLock;
46*5a1d355fSStephan Aßmus 			ShareStatisticsMap*	fShareStatistics;
47*5a1d355fSStephan Aßmus 
48*5a1d355fSStephan Aßmus 	static	StatisticsManager*	fManager;
49*5a1d355fSStephan Aßmus };
50*5a1d355fSStephan Aßmus 
51*5a1d355fSStephan Aßmus #endif	// NET_FS_STATISTICS_MANAGER_H
52