THIS IS A TEST INSTANCE. ALL YOUR CHANGES WILL BE LOST!!!!
...
PlantUML |
---|
@startuml interface MembershipManagerFactory { + static newMembershipManagerFactory() ---- + set...() } interface MembershipManager { Core class of a running membership system. + getMembershipView(): GMSMembershipViewMembershipView } interface Messenger { + send(GMSMessageMessage) } interface GMSMembershipViewMembershipView { List<MemberID> getMembers() MemberID getCoordinator() // Do we need this?? } interface GMSMemberMemberID { A single member of the system } interface GMSMembershipListenerMembershipListener { } interface GMSMessageHandlerMessageHandler { } interface GMSAuthenticatorMemberAuthenticator { } interface GMSStatsListenerStatsListener { } interface GMSConfigConfig { } MembershipManagerFactory --> MembershipManager : creates MembershipManagerFactory *-- GMSAuthenticatorAuthenticator MembershipManagerFactory *-- GMSStatsListenerStatsListener MembershipManagerFactory *-- GMSMessageHandlerMessageHandler MembershipManagerFactory *-- GMSConfigConfig MembershipManagerFactory *-- GMSMembershipListenerMembershipListener MembershipManager *-- Messenger MembershipManager *-- GMSMembershipViewMembershipView GMSMembershipView *-- GMSMemberMemberID @enduml |
Code Block | ||
---|---|---|
| ||
/** * Creates the membership system, given the provided configuration */ interface MembershipManagerFactory { static newMembershipManagerFactory() : MembershipManagerFactory setConfig(GMSConfigConfig) setAuthenticator(GMSAuthenticatorAuthenticator) setMembershipListener(GMSMembershipListenerMembershipListener) setMessageHandler(GMSMessageHandlerMessageHandler) setStatsListener(GMSStatsListenerStatsListener) setMemberFactory(GMSMemberFactoryMemberIDFactory) create() : MembershipManager } /** * Interface used to create a GMSMember from a set of properties * This API is provided solely to allow geode-core to add additional * properties to the GMSMember that are not relevant to membership * For example DurableClientAttributes. Membership will provide * A default GMSMember which just has the membership relevant attributes interface GMSMemberFactory { GMSMember create(host, port, version, viewId, ...) } /** * Core class of a running membership system. */ interface MembershipManager { getMembershipView(): GMSMembershipViewMembershipView getMessenger(): Messenger getLocalMember(): GMSMemberMemberID contactedBy(GMSMemberMemberID) isShunned(GMSMemberMemberID) close() isClosed() } /** * API for sending messages to other members, using memberships messaging system * Membership currently allows geode-core to send messages over it's UDP messaging system. * This interface provides that functionality. */ interface Messenger { send(GMSMessageMessage) getMessageState(): Object waitForMessageState(Object) } /** * Provides the current members of the system */ interface GMSMembershipViewMembershipView { Provides the current members of the system List<GMSMember>List<MemberID> getMembers } /** * Interface used to create a MemberID from a set of properties * This API is provided solely to allow geode-core to add additional * properties to the MemberID that are not relevant to membership * For example DurableClientAttributes. Membership will provide * A default MemberID which just has the membership relevant attributes interface MemberIDFactory { MemberID create(host, port, uuid, ...) } /** * A single member of the system. In practice, this will * be implemented by InternalDistributedMember */ interface GMSMemberMemberID { } /** * Receives notifications about changes to membership */ interface GMSMembershipListener { memberJoined(GMSMember) memberDeparted(GMSMember) forceDisconnected() } /** * Receives all messages sent from other members */ interface GMSMessageHandlerMessageHandler { processMessage(GMSMessageMessage) } /** * Interface used by membership to authenticate other members */ interface GMSAuthenticatorAuthenticator { } /** * Interface to notify statistics systems about membership changes */ interface GMSStatsListenerStatsListener { memberJoined() memberDeparted() } /** * Primitive configuration options for membership * - timeouts, etc. */ interface GMSConfigConfig { getJoinTimeout() ... } |
TODO
...