Last active
April 3, 2019 16:49
-
-
Save Bill/e2d247fdc2f195ce1e7288b44df76c63 to your computer and use it in GitHub Desktop.
Geode HARegionQueue Class Diagram
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
@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