THIS IS A TEST INSTANCE. ALL YOUR CHANGES WILL BE LOST!!!!
...
PlantUML |
---|
@startuml interface MembershipFactory { + static newMembershipFactory() ---- + set...() } interface Membership { Core class of a running membership system. + getMembershipView(): MembershipView } interface Messenger { + send(Message) } interface MembershipView { + getMembers(): List<MemberID> } interface MemberID { A single member of the system } interface MembershipListener { } interface MessageHandler { } interface Authenticator { } interface StatsListenerMembershipStatistics { } interface Config { } interface MembershipView { } MembershipFactory --> Membership : creates MembershipFactory *-- Authenticator MembershipFactory *-- StatsListenerMembershipStatistics MembershipFactory *-- MessageHandler MembershipFactory *-- Config MembershipFactory *-- MembershipListener Membership *-- Messenger Membership *-- MembershipView MembershipView *-- MemberID @enduml |
...
Code Block | ||
---|---|---|
| ||
/** * Creates the membership system, given the provided configuration */ interface MembershipFactory { static MembershipFactory newMembershipFactory() setConfig(Config) setAuthenticator(Authenticator) setMembershipListener(MembershipListener) setMessageHandler(MessageHandler) setStatsListenersetMembershipStatistics(StatsListenerMembershipStatistics) setMemberFactory(MemberIDFactory) create() : Membership } /** * Core class of a running membership system. */ interface Membership { getMembershipView(): MembershipView getMessenger(): Messenger getLocalMember(): MemberID contactedBy(MemberID) isShunned(MemberID) 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(Message) /** Get an object the represents the messages that have been sent * through this messenger. This is used in waitForMessageState * To wait for these messages to arrive on the remote side */ getMessageState(): Object waitForMessageState(Object) } /** * 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 MemberID { } /** * Provides the current members of the system */ interface MembershipView { List<MemberID> getMembers() } /** * Receives notifications about changes to membership */ interface MembershipListener { memberJoined(MemberID) memberDeparted(MemberID) forceDisconnected() } /** * Receives all messages sent from other members */ interface MessageHandler { processMessage(Message) } /** * Interface used by membership to authenticate other members */ interface Authenticator { } /** * Interface to notify statistics systems about membership changes */ interface StatsListenerMembershipStatistics { memberJoined() memberDeparted() } /** * Primitive configuration options for membership * - timeouts, etc. */ interface Config { getJoinTimeout() ... } |
...