[go: up one dir, main page]

Menu

Code Commit Log


Commit Date  
[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
[r406] by lonfield

Fixed yet another bug in the LockableOperation. Some naming clean up and added the Catch 2 package to the repo so that the development environment can be recreated independent on what version is available at the official Catch repo.

2023-10-04 18:44:52 Tree
[r405] by lonfield

Fixed the locking mechanism in the LockableOperationT template.

2023-09-30 07:53:42 Tree
[r404] by lonfield

Started to drawn a BridgePoint-model of the distributed ZeroMQ bridge.

2023-09-25 20:04:06 Tree
Older >