Versions Compared

Key

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

...

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
languagejava
/** 
* 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()
  ...
}



...