[go: up one dir, main page]

Menu

Code Commit Log


Commit Date  
[r416] by lonfield

Code clean-up. Also added a PSM-specific exception, PsmCriticalXXXX generates a hard Abort meaning that e.g. illegal state table transitions can't be tested. SIGABRT is messy to catch and validate. Catch2 supports exception much better for testing purposes.

2023-11-10 21:19:02 Tree
[r415] by lonfield

Now there is a working Serializable-wrapper for SigOps so that they can be first be enqueued in the outgoing requirer queue of a distributed bridge, end then be serialzied in batches just before transfer over a network to the providing side. Also added new test cases for this as well as updated all other testcases (where applicable).

Fixed some issues in the SigOp instantiator.

Major changes to SigOp, signalT and OperationT interfaces.

2023-11-10 16:51:21 Tree
[r414] by lonfield

Added two new tests for serialization on a grander scale, verifying correct serialzied size, as well as a benchmark for serialization. Some minor clean-up as well based on CppChecker.

2023-11-01 20:29:16 Tree
[r413] by lonfield

Have a testable working version of the SigOp serializable wrapper (SerializableSigOpT<>). This is needed so that SigOps send over a distribuetd bridge can be queued up in a generic queueu (using virtual base pointers) and yet be serialized by the scheduler without it knowing the exact types of the SigOp. Added test_46_05 to test this SigOp serializable wrapper.

2023-10-31 20:06:23 Tree
[r412] by lonfield

Added a serialization wrapper template SerializableSigOpT<>. This, and its base class, provides a generic interface to the scheduler for distributed bridges so that it can serialize SigOps without knowing their explicit type. SerializableSigOpT<> and its base class (SerializableSigOpBaseT<>) uses a regular virtual base construct, with virtual methods, to handle the separation between scheduling a generic SigOp and its associated type-specific serialization/deserialization. This virtula base-class solution has been chosen after some major efforts trying to solve the same problem (generic base interface calling a type-specific serialization) using templates only. A template-based solution woul remove the need for virtual methods, vtables, etc. But, after several unseccfull attempts, virtual base class interface is chosen in the name of progress.

Also cleared up the class names a bit and separated the serialization-pieces from the ZMQ-pieces. The serialization stands on its own legs and can be used with distributed bridges using other com-libs than ZMQ.

2023-10-29 15:45:08 Tree
[r411] by lonfield

CInserted a new template class between Processable and SignalSignatureT/OperationSignatureT. This helps separate signals and operations better and enables some additional code clean up.

2023-10-24 16:05:34 Tree
[r410] by lonfield

Corrected an error in the serialization protocol of the ZmqSigOpSerDes class. It turned out that a 1-byte unsigned integer wasn't possible to separate from a boolean type by the SigOp variable header. The specific problem was that the least significant bit of the variable header coded for 3 different things :-/

Fixed the error by reducing the maximum size of an integer to be 31 bytes (248 bits). I.e. the LSB only encode text length (when the text bit is set) and boolean variable. Updated tests.

Cleaned up the decoding of the variable header and broken it out in a nested class ZmqSigOpSerDes::VariableHeaderDecoder so that the decoding is not repeated in several places and thus increase the risk for messing up.

Also added a method to ZmqSigOpSerDes for generating crtitical PSM messages when trying to decode a variable to the wrong typ, e.g. boolean -> integer or negative int -> unsigned int.

2023-10-22 19:05:17 Tree
[r409] by lonfield

Separated serializion buffers and deserialization buffers into 2 separate class types. Fixed a race condition in the LockableOperationT<> template. Rewritten FixedQueueT<> template in order to clean up and understand the problem/solution better. Made it into a cached Lamport SPSC FIFO. Fixed tests to work with updated code.

2023-10-22 07:21:58 Tree
[r408] by lonfield

Created a specific class for serialization/Deserialization buffers. Moved the serialization buffer outside the serializer. This prevents a copy when creating a batch of serialzie SigOps.

2023-10-14 16:47:16 Tree
[r407] by lonfield

Cleanup & made iSsignal/isOperation methods static.

2023-10-14 14:30:50 Tree
Older >