-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathClientDynamicsManager.h
63 lines (46 loc) · 1.97 KB
/
ClientDynamicsManager.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
#ifndef MembershipManager_ClientDynamicsManager_h_IsIncluded
#define MembershipManager_ClientDynamicsManager_h_IsIncluded
#include"MembershipManager/IncludeExtLibs.h"
#include"MembershipManager/MembershipManagerConnection.h"
#include"MembershipManager/GroupManagerConnection.h"
/*
Create a client-based membership-manager implementation
that automatically detects when clients join and leave.
This class should include:
-> All multicast objects (MulticastManager with client/server), etc.
-> Maintain connection with MembershipManager, GroupManager, etc,
and update all objects based on need.
*/
#include "MembershipManager/Export.h"
DLL_STATE class ClientDynamicsManager : public Thread
{
public:
ClientDynamicsManager();
~ClientDynamicsManager();
private:
virtual void run();
public:
GroupInformation GetGroupInformation();
HostInformation GetHostInformation();
void StartMulticastManager(const InterfaceHandle &multicastServerHandle);
void RegisterInterface(int interfaceId, RpcServer *rpcServer);
void RegisterAsMember(const HostInformation &info, const InterfaceHandle &handle);
bool RegisterInGroup(const HostInformation &info,const InterfaceHandle &handle, const string &groupName);
inline MulticastManager* GetMulticastManager() const { return multicastManager_; }
inline GroupManagerConnection* GetGroupManagerConnection() const { return groupManagerConnection_; }
inline MembershipManagerConnection* GetMembershipManagerConnection() const { return membershipManagerConnection_; }
private:
bool StopAllThreads();
inline void lock() { mutexUpdate_.lock(); }
inline void unlock() { mutexUpdate_.unlock(); }
inline void wakeAll() { waitCondition_.wakeAll(); }
private:
MulticastManager *multicastManager_;
GroupManagerConnection *groupManagerConnection_;
MembershipManagerConnection *membershipManagerConnection_;
WaitCondition waitCondition_;
Mutex mutexUpdate_;
bool runThread_;
GroupInformation groupInformation_;
};
#endif