The Abstract message state maintained by the logger. More...
Inheritance diagram for MAKLogger::DtMessageState:
Collaboration diagram for MAKLogger::DtMessageState:Public Types | |
| enum | CheckpointProcessing { IgnoreCheckpoints, ProcessAllCheckpoints, ProcessFirstCheckpoint } |
Public Member Functions | |
| virtual | ~DtMessageState () |
| DTOR Will destroy all state objects. | |
| DtAbsoluteTime | convertTime (DtAbsoluteTime inputCurrentTime, DtAbsoluteTime inputTime, DtAbsoluteTime outputCurrentTime) |
| Convert the specified time. | |
| virtual void | startDiff () |
| Start difference mode, creates snapshot of existing state to be used with. | |
| virtual void | generateDiff (DtMessageBuffer &stateBuffer, const DtAbsoluteTime &time) |
| Next update will generate only diff messages which are necessary to go from the backed up state to the current state. | |
| virtual void | endDiff () |
| Destroys the snapshot. | |
| void | updateState (DtMessageBuffer &stateBuffer) |
| Update existing objects and add new objects. | |
| void | updateState (DtPacket *packet) |
| Update existing objects and add new objects. | |
| virtual void | postUpdate () |
| Call post update after finished. | |
| void | setState (DtMessageBuffer &completeStateBuffer, const DtAbsoluteTime &time) |
| Set the state with the internal messages. | |
| virtual void | clearState (DtMessageBuffer &emptyBuffer, const DtAbsoluteTime &time) |
| Clear the state and returns the messages necessary to send to clear the state. | |
| virtual void | getState (DtMessageBuffer &emptyBuffer, const DtAbsoluteTime &time) |
| Return a message buffer with state messages of all cached objects. | |
| virtual void | activate () |
| Activate the Message state. | |
| virtual void | deactivate () |
| Deactivate the message state. | |
|
virtual const std::list < DtStateObject * > & | stateObjectList () const |
| Gets a list of state objects. | |
| virtual void | clearState () |
| Clear the state without creating the removals. | |
| virtual CheckpointProcessing | processCheckpoints () |
| Check to see if checkpoints affect the state. | |
| virtual void | setProcessCheckpoints (CheckpointProcessing value) |
| Set whether checkpoints affect the state. | |
| virtual void | modifyMessages (DtMessageBuffer &messages) |
| Calls modifyMessage for each packet in the buffer. | |
| virtual void | modifyMessage (DtPacket &packet)=0 |
| Modify a packet. | |
| virtual bool | isCheckpointMessage (const DtPacket &packet) const |
| Check to see if the State considers this packet a checkpoint. | |
| virtual bool | isUpdateMessage (const DtPacket &packet) const =0 |
| Check to see if the state thinks this is an object update. | |
| virtual bool | isRemovalMessage (const DtPacket &packet) const =0 |
| Check to see if the state thinks this is an object removal. | |
| virtual DtStateObject * | findObject (DtU64 uniqueId) |
| Find an object. | |
| virtual const DtStateObject * | findObject (DtU64 uniqueId) const |
| Find an object. | |
Abstract message state interface. | |
| virtual void | setInputInfo (const DtMessageIOInfo *info) |
| Sets the Input Io Info. | |
| virtual void | setOutputInfo (const DtMessageIOInfo *info) |
| Sets the Input Io Info. | |
| virtual void | decodeCheckpoint (const DtPacket &packet, DtMessageBuffer &buffer)=0 |
| Decode a checkpoint packet into a message buffer. | |
| virtual DtPacket * | generateCheckpoint (const DtAbsoluteTime ×tamp)=0 |
| Generate a checkpoint packet from the current state. | |
| DtObserveEvent< DtMessageState > * | inputChangedEvent () |
| Event accessors. | |
| DtObserveEvent< DtMessageState > * | outputChangedEvent () |
| Event accessors. | |
| DtObserveEvent< DtMessageState > * | stateModifiedEvent () |
| Event accessors. | |
| DtObserveEvent< DtMessageState > * | stateActivatedEvent () |
| Event accessors. | |
| DtObserveEvent< DtMessageState > * | stateDeactivatedEvent () |
| Event accessors. | |
| DtObserveEvent< DtMessageState > * | endDiffEvent () |
| Event accessors. | |
| DtObserveEvent< DtStateObject > * | objectAddedEvent () |
| Event accessors. | |
| DtObserveEvent< DtStateObject > * | objectToBeRemovedEvent () |
| Event accessors. | |
| DtObserveEvent< DtStateObject > * | objectUpdatedEvent () |
| Event accessors. | |
Protected Types | |
|
typedef std::list < DtStateObject * > | DtStateObjectList |
| Type for the list of objects. | |
|
typedef std::map< DtU64, DtStateObject * > | DtStateObjectMap |
| Type for lookup objects by unique id. | |
Protected Member Functions | |
| virtual void | activateState ()=0 |
| Activate the protocol specific state. | |
| virtual void | deactivateState ()=0 |
| Deactivate the protocol specific state. | |
| DtMessageState () | |
| Protected CTOR since class is abstract. | |
| DtMessageState (const DtMessageState &) | |
| CopyCTOR not implemented. | |
| DtMessageState & | operator= (const DtMessageState &) |
| Assignment operator not implemented. | |
| virtual bool | updateStateObjects (DtPacket &packet) |
| Used to update state objects using the packet. | |
| virtual void | createUpdate (DtStateObject &object, const DtAbsoluteTime &time, std::list< DtPacket * > &packetlist)=0 |
| Create an update packet for the object at the given time. | |
| virtual DtPacket * | createRemoval (DtStateObject &object, const DtAbsoluteTime &time)=0 |
| Create an removal packet for the object at the given time. | |
| virtual DtStateObject * | createStateObject (DtPacket &packet) |
| Create the state object based upon the packet. | |
| virtual DtStateObject * | updateStateObject (DtPacket &packet) |
| Update the state object based upon the packet. | |
| virtual DtStateObject * | findStateObject (DtPacket &packet) |
| Find a state object for a packet. | |
| virtual bool | removeStateObject (DtPacket &packet) |
| Remove the state object based upon the packet. | |
| void | removeStateObject (DtStateObject *object) |
| Remove the state object. | |
Protected Attributes | |
| DtStateObjectList | myObjects |
| List of state objects. | |
| DtStateObjectMap | myObjectLookupMap |
| Map to lookup state objects. | |
| DtStateObjectList | mySnapshotOfObjects |
| List of objects used when diffing two different states. | |
| CheckpointProcessing | myCheckpointProcessing |
| bool | myStateChanged |
| DtObserveEvent< DtMessageState > | myInputChangedEvent |
| Events called on certain actions of the messageState. | |
| DtObserveEvent< DtMessageState > | myOutputChangedEvent |
| Events called on certain actions of the messageState. | |
| DtObserveEvent< DtMessageState > | myStateModifiedEvent |
| Events called on certain actions of the messageState. | |
| DtObserveEvent< DtMessageState > | myStateActivatedEvent |
| Events called on certain actions of the messageState. | |
| DtObserveEvent< DtMessageState > | myStateDeactivetedEvent |
| Events called on certain actions of the messageState. | |
| DtObserveEvent< DtMessageState > | myEndDiffEvent |
| Events called on certain actions of the messageState. | |
| DtObserveEvent< DtStateObject > | myObjectAddedEvent |
| Events called on certain actions of the messageState. | |
| DtObserveEvent< DtStateObject > | myObjectToBeRemovedEvent |
| Events called on certain actions of the messageState. | |
| DtObserveEvent< DtStateObject > | myObjectUpdatedEvent |
| Events called on certain actions of the messageState. | |
The Abstract message state maintained by the logger.
The message state takes in messages from the input and maintains a state of all 'statefull objects' in the simulation.
| virtual MAKLogger::DtMessageState::~DtMessageState | ( | ) | [virtual] |
DTOR Will destroy all state objects.
| virtual void MAKLogger::DtMessageState::clearState | ( | DtMessageBuffer & | emptyBuffer, |
| const DtAbsoluteTime & | time | ||
| ) | [virtual] |
Clear the state and returns the messages necessary to send to clear the state.
Note message buffer passed in will be emptied before filled.
| Output | |
| emptyBuffer | Contains the modified messages to send to clear the state. |
| virtual DtStateObject* MAKLogger::DtMessageState::createStateObject | ( | DtPacket & | packet | ) | [protected, virtual] |
Create the state object based upon the packet.
| Valid | Pointer If object was created. |
| NULL | If object was not created. |
| virtual DtStateObject* MAKLogger::DtMessageState::findObject | ( | DtU64 | uniqueId | ) | [virtual] |
Find an object.
| 0 | If no object with the uniqueId is found. |
| virtual const DtStateObject* MAKLogger::DtMessageState::findObject | ( | DtU64 | uniqueId | ) | const [virtual] |
Find an object.
| 0 | If no object with the uniqueId is found. |
| virtual DtStateObject* MAKLogger::DtMessageState::findStateObject | ( | DtPacket & | packet | ) | [protected, virtual] |
Find a state object for a packet.
| Valid | Pointer If object was found. |
| NULL | If object was not updated (due to not being found). |
| virtual void MAKLogger::DtMessageState::getState | ( | DtMessageBuffer & | emptyBuffer, |
| const DtAbsoluteTime & | time | ||
| ) | [virtual] |
Return a message buffer with state messages of all cached objects.
| Output | |
| emptyBuffer | Contains the modified messages to send to recreate the state. |
| virtual bool MAKLogger::DtMessageState::isCheckpointMessage | ( | const DtPacket & | packet | ) | const [virtual] |
Check to see if the State considers this packet a checkpoint.
Checkpoint messages are decoded to modify all objects.
| virtual void MAKLogger::DtMessageState::modifyMessage | ( | DtPacket & | packet | ) | [pure virtual] |
Modify a packet.
This typically does not need to be called since it is internally called by update state.
| Output |
Implemented in MAKLogger::DtLgrDisMessageState.
| virtual void MAKLogger::DtMessageState::modifyMessages | ( | DtMessageBuffer & | messages | ) | [virtual] |
Calls modifyMessage for each packet in the buffer.
Modifies the messages. This typically does not need to be called since it is internally called by update state.
| Output |
Reimplemented in MAKLogger::DtLgrDisMessageState.
| virtual bool MAKLogger::DtMessageState::removeStateObject | ( | DtPacket & | packet | ) | [protected, virtual] |
Remove the state object based upon the packet.
| true | If object was removed. |
| false | If object was not removed (due to not being found). |
| void MAKLogger::DtMessageState::setState | ( | DtMessageBuffer & | completeStateBuffer, |
| const DtAbsoluteTime & | time | ||
| ) |
Set the state with the internal messages.
All objects not in the buffer are removed from the state.
| Input | |
| completeStateBuffer | Contains the messages used to create a specific state. |
| Output | |
| completeStateBuffer | Contains the modified messages to send to create the state. |
| void MAKLogger::DtMessageState::updateState | ( | DtMessageBuffer & | stateBuffer | ) |
Update existing objects and add new objects.
Calls updateState for each packet in the message buffer.
| Input | |
| stateBuffer | Contains the messages used to create a specific state. |
| Output | |
| stateBuffer | Contains the modified messages to send to create the state. |
| void MAKLogger::DtMessageState::updateState | ( | DtPacket * | packet | ) |
Update existing objects and add new objects.
Calls udpateStateObjects on message. This function will not send event notifications. Call post update to send this value.
| Input | |
| packet | A packet to be added to the state. |
| Output | |
| message | The packet may be modified depending on the state's output. |
| virtual DtStateObject* MAKLogger::DtMessageState::updateStateObject | ( | DtPacket & | packet | ) | [protected, virtual] |
Update the state object based upon the packet.
| Valid | Pointer If object was updated. |
| NULL | If object was not updated (due to not being found). |
| virtual bool MAKLogger::DtMessageState::updateStateObjects | ( | DtPacket & | packet | ) | [protected, virtual] |
Used to update state objects using the packet.
Packet specific functions will be called here depending on the type of message.
| true | If state was modified. |
| false | If state was not modified. |