Versions Compared

Key

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

...

The geode-membership subproject will provide the following API to the rest of the system. We will enforce that other parts of the system can only interact with this API.

PlantUML
@startuml
class MembershipManagerFactory {
  Creates the membership system, given the provided configuration
  + setConfig(GMSConfig)
  + setAuthenticator(GMSAuthenticator)
  + setMembershipListener(GMSMembershipListener)
  + setMessageHandler(GMSMessageHandler)
  + setStatsListener(GMSStatsListener)
  + create() : MembershipManager

}
interface MembershipManager {
Core class of a running membership system.
  + getMembershipView(): GMSMembershipView
  + getMessenger(): Messenger
  + getLocalMember(): GMSMember
}
interface Messenger {
  + send(GMSMessage)
  + getMessageState(): Object
  + waitForMessageState(Object)
  + close()
  + isClosed()
}
interface GMSMembershipView {
  Provides the current members of the system
}
interface GMSMember {
  A single member of the system
}
interface GMSMembershipListener {
  Receives notifications about changes to membership
  + memberJoined(GMSMember)
  + memberDeparted(GMSMember)
}
interface GMSMessageHandler {
  Receives all messages sent from other members
  + processMessage(GMSMessage)
}
interface GMSAuthenticator {
  Interface used by membership to authenticate other members

}
interface GMSStatsListener {
  Interface to notify statistics systems about membership changes
  +memberJoined()
  +memberDeparted()
}
interface GMSConfig {
  Configuration options for membership
  + setJoinTimeout()
  + {method} ...
}

MembershipManagerFactory --> MembershipManager : creates
MembershipManagerFactory *-- GMSMessageHandler
MembershipManagerFactory *-- GMSMembershipListener
MembershipManagerFactory *-- GMSAuthenticator
MembershipManagerFactory *-- GMSStatsListener
MembershipManagerFactory *-- GMSConfig
MembershipManager *-- Messenger
MembershipManager *-- GMSMembershipView
MembershipManager *-- GMSMember
@enduml


TODO


geode-serialization API

...