Skip to content

Instantly share code, notes, and snippets.

@Bill
Last active April 3, 2019 16:49
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Bill/e2d247fdc2f195ce1e7288b44df76c63 to your computer and use it in GitHub Desktop.
Save Bill/e2d247fdc2f195ce1e7288b44df76c63 to your computer and use it in GitHub Desktop.
Geode HARegionQueue Class Diagram
@startuml
class SequenceID <<design class>>
Long <|-- SequenceID
class Position <<design class>>
Long <|-- Position
class HARegionQueue {
Position tailKey
}
class DispatchedAndCurrentEvents {
SequenceID lastDispatchedSequenceID
}
' these are together because I want to highlight the similarity (potential subtype relationship)
together {
' putting this first causes it to be layed out to the right of ThreadIdentifier, making the
' association (line) from Conflatable shorter
class EventID {
byte[] membershipId
long threadId
SequenceID sequenceId
int bucketId
}
class ThreadIdentifier {
byte[] membershipId
long threadId
}
}
interface Conflatable
' these subtypes of Conflatable are grouped together
together {
interface ClientMessage
class HAEventWrapper
class ConflatableObject
}
Conflatable <|-- HAEventWrapper
Conflatable <|-- ConflatableObject
Conflatable <|-- ClientMessage
interface ClientUpdateMessage
ClientMessage <|-- ClientUpdateMessage
ClientUpdateMessage <|-- ClientUpdateMessageImpl
ClientUpdateMessageImpl <|-- ClientInstantiatorMessage
ClientMessage <|-- ClientMarkerMessageImpl
Conflatable --> EventID
interface RegionQueue
RegionQueue <|-- HARegionQueue
HARegionQueue <|-- BlockingHARegionQueue
BlockingHARegionQueue <|-- DurableHARegionQueue
DistributedRegion <|-- HARegion
' while method signatures in HARegionQueue take Object, there's downcasting to Conflatable
HARegion "*" *-- "0..1 per Position" Conflatable
HARegion "*" *-- "0..1 per ThreadIdentifier" SequenceID
HARegionQueue *-- HARegion
HARegionQueue "1" *-- "0..1 per ThreadIdentifier" DispatchedAndCurrentEvents
DispatchedAndCurrentEvents "1" *-- "0..1 per Position" Position
' this hidden assoc changes layout such that cardinality text on SequenceID and Position isn't overlapping as much
ConflatableObject -[hidden]- HARegion
@enduml
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment