|
|
Line 3: |
Line 3: |
|
| |
|
| ===Classes=== | | ===Classes=== |
| <uml>
| |
| class psMessageCracker {
| |
| +SendMessage()
| |
| +FireEvent()
| |
| +ToString()
| |
| }
| |
|
| |
| psMessageCracker <|-- NPCAuthent
| |
| psMessageCracker <|-- MsgStrings
| |
|
| |
| psMessageCracker *-- MsgEntry : msg
| |
| MsgEntry *-- psMessageBytes : bytes
| |
| </uml>
| |
|
| |
| Each message from/to server/clients is based on the psMessageCracher that provide interfaces to pack/unpack and print the message.
| |
|
| |
| <uml>
| |
|
| |
| MsgHandler "1" *-- "0..N" Subscription : subscribers
| |
| MsgHandler "1" *-- "1" NetBase : netbase
| |
| MsgHandler "1" *-- "1" MsgQueue : queue
| |
| NetBase "1" *-- "0..N" psNetPacketEntry : packets
| |
| NetBase "1" *-- "1" NetPacketQueue : NetworkQueue
| |
| NetBase "1" *-- "0..N" NetPacketQueue : senders
| |
| NetBase "1" *-- "0..N" MsgQueue : inQueues
| |
| NetBase "1" *-- "0..N" psNetPacketEntry : awaitingack
| |
| psNetPacketEntry "1" *-- "1" psNetPacket : packet
| |
|
| |
| class Connection {
| |
| +uint32_t sequence
| |
| }
| |
|
| |
| MsgQueue "1" *-- "0..N" MsgEntry
| |
| NetPacketQueue "1" *-- "0..N" psNetPacketEntry
| |
|
| |
| MsgHandler <|- ClientMsgHandler
| |
| ClientMsgHandler "1" *-- "1" OrderedMessageChannel : orderedMessages
| |
|
| |
| OrderedMessageChannel "1" *-- "0..N" MsgEntry : pendingMessages
| |
| NetBase <|- psNetConnection
| |
| psNetConnection *-- MsgQueue : inQueue
| |
| psNetConnection *-- Connection : server
| |
|
| |
| Subscription "1" *-- "1" iNetSubscriber : subscriber
| |
|
| |
|
| |
| </uml>
| |
|
| |
| ==== Server Classes ====
| |
|
| |
| <uml>
| |
| class iNetSubscriber {
| |
| +{abstract} bool Verify()
| |
| +{abstract} void HandleMessage()
| |
| }
| |
| note right: Abstract base class for message recipients.
| |
|
| |
| iNetSubscriber <|-- MessageManagerBase
| |
| MessageManagerBase <|-- MessageManager
| |
| MessageManager <|-- NPCManager
| |
| MessageManager <|-- ProgressionManager
| |
| note "Example classes from the server" as Note1
| |
| NPCManager .. Note1
| |
| ProgressionManager .. Note1
| |
|
| |
|
| |
| class MessageManagerBase {
| |
| +bool Verify()
| |
| }
| |
|
| |
| class MessageManager<SubClass> {
| |
| +void Subscribe()
| |
| +void Unsubscribe()
| |
| }
| |
|
| |
| class NPCManager {
| |
| +void HandleMessage()
| |
| }
| |
| class ProgressionManager {
| |
| +void HandleMessage()
| |
| }
| |
|
| |
|
| |
| </uml>
| |
|
| |
|
| ===Sequences=== | | ===Sequences=== |
Design
This page describe some of the sequences in the Network Design between components. For implementation details in the Server/Clients see the Detailed Network Design page.
Classes
Sequences
Start up NPCClient
Start up Client
Client Movement