THIS IS A TEST INSTANCE. ALL YOUR CHANGES WILL BE LOST!!!!
...
Code Block | ||
---|---|---|
| ||
/**
* Creates the membership system, given the provided configuration
*/
interface MembershipBuilder {
static MembershipBuilder newMembershipBuilder()
MembershipBuilder setConfig(Config)
MembershipBuilder setAuthenticator(Authenticator)
MembershipBuilder setMembershipListener(MembershipListener)
MembershipBuilder setMessageHandler(MessageHandler)
MembershipBuilder setMembershipStatistics(MembershipStatistics)
MembershipBuilder 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 what messages have been sent to to the given
* memberID. This is used in waitForMessageState to wait for these messages
* to arrive on the remote side
*/
getMessageState(MemberID): MessageState
waitForMessageState(MessageState)
}
/**
* A Message that will be sent to the returned recipients.
*/
interface Message {
Set<MemberID> getRecipients()
}
/**
* An object which represents the state of the sending side of a communication
* channel at a point in time. This object can be passed to the waitForMessageState
* method on the receiving side to ensure all messages have been received on
* the receiving side
*/
interface MessageState extends DataSerializableFixedID {
}/**
* 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)
memberCrashed(MemberID)
forceDisconnected(String reason)
}
/**
* Receives all messages sent from other members
*/
interface MessageHandler {
processMessage(Message)
}
/**
* Interface used by membership to authenticate other members
*/
interface Authenticator {
/**
* Authenticate peer member
*
* @return null if authentication succeed (including no authenticator case), otherwise, return
* failure message
*/
String authenticate(MemberID member, Properties credentials);
/**
* Get credential object for the given GemFire distributed member.
*/
Properties getCredentials(MemberID member);
}
/**
* Interface to notify statistics systems about membership changes
*/
interface MembershipStatistics {
memberJoined()
memberDeparted()
...
}
/**
* Primitive configuration options for membership
* - timeouts, etc.
*/
interface Config {
getJoinTimeout()
...
}
|
...