Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

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
languagejava
/** 
* 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

...