cabad merge requestshttps://git.gsi.de/acc/cabad/-/merge_requests2024-01-30T12:51:09Zhttps://git.gsi.de/acc/cabad/-/merge_requests/27Resolve "Unit Tests for CircularBufferManagerBase"2024-01-30T12:51:09Zm.marnResolve "Unit Tests for CircularBufferManagerBase"Closes #11Closes #118.0.0https://git.gsi.de/acc/cabad/-/merge_requests/26Resolve "Allow usage of a custom 'SampleMetaData' type"2024-01-15T13:54:51Zm.marnResolve "Allow usage of a custom 'SampleMetaData' type"Closes #65
As discussed, a payload can now be added to the metadata sample.Closes #65
As discussed, a payload can now be added to the metadata sample.8.0.0https://git.gsi.de/acc/cabad/-/merge_requests/25Log when multiple matching events are found2024-01-15T10:08:49Zm.marnLog when multiple matching events are foundCloses #68Closes #688.0.0https://git.gsi.de/acc/cabad/-/merge_requests/24Resolve "Don't use shared_ptr for buffer iterators in CircularWindowIterator"2023-12-14T09:37:45Zm.marnResolve "Don't use shared_ptr for buffer iterators in CircularWindowIterator"Closes #64Closes #648.0.0https://git.gsi.de/acc/cabad/-/merge_requests/23Make the buffer owned and managed by the manager2023-12-05T10:05:56Zm.marnMake the buffer owned and managed by the managerCloses #61
With these changes the buffer is not owned by the manager so the user can not directly access it. However this doesn't make it 100% safe from the user. They still have to make sure that it's used safely inside the inherited m...Closes #61
With these changes the buffer is not owned by the manager so the user can not directly access it. However this doesn't make it 100% safe from the user. They still have to make sure that it's used safely inside the inherited manager class. So to make it 100% safe we would still need a mutex on the buffer class. But if you prefer to avoid it, this current solution with some comments could be a compromise.
I checked your comment about removing the mutex from the metadata buffer. The same transfer of ownership could be done for the metadata buffer. I went through the code and if I didn't miss anything in the current implementation it would be ok to remove the mutex in metadata buffer, as long as `addWrStampMetaData`, `addTriggerMetaData` together with the `updateWindow*` functions are all only called from the pushing thread. In addition to the manager the metadata buffer is used within `CircularWindowIterator::updateMetaWindowAccordingToSampleWindow` also which currently is only called from managers `updateWindow` functions which should make it safe (but it's a public method so it's not a guarantee). However cases like this all make it really easy to call some function from some other thread in the future. So I am not sure if just removing the mutex and calling it a day is the way to do it.8.0.0https://git.gsi.de/acc/cabad/-/merge_requests/22Remove the base class for circular buffer. Template all the classes2023-11-14T12:02:11Zm.marnRemove the base class for circular buffer. Template all the classeswhich use the templated CircularBuffer
Closes #30
This implements the removal of the dual buffer and the merge of the circular buffers. In addition I refactored the classes which now hold the templated circular buffer.which use the templated CircularBuffer
Closes #30
This implements the removal of the dual buffer and the merge of the circular buffers. In addition I refactored the classes which now hold the templated circular buffer.8.0.0https://git.gsi.de/acc/cabad/-/merge_requests/21Remove DataReadyhandler and Manager. Implement window movement and callback...2023-11-07T10:23:54Zm.marnRemove DataReadyhandler and Manager. Implement window movement and callback...Remove DataReadyhandler and Manager. Implement window movement and callback triggering in CircularBufferManager
Closes #71
All existing tests are passing.Remove DataReadyhandler and Manager. Implement window movement and callback triggering in CircularBufferManager
Closes #71
All existing tests are passing.8.0.0https://git.gsi.de/acc/cabad/-/merge_requests/20Resolve "CircularBuffer.h: get rid of "ptr_" member inside the child iterator...2023-11-07T10:30:24Zm.marnResolve "CircularBuffer.h: get rid of "ptr_" member inside the child iterator classes"Closes #55
Closes #56
Each commit addresses one of the issues.Closes #55
Closes #56
Each commit addresses one of the issues.8.0.0https://git.gsi.de/acc/cabad/-/merge_requests/19Moved management of "most_recent_ref_trigger_meta_" to SampleMetaData2023-07-14T12:58:12Zal.schwinnMoved management of "most_recent_ref_trigger_meta_" to SampleMetaDataand removed option to change `RefMetaTriggerEvents` during runtime.
This will prevent a crash where several buffer managers read/write `std::shared_ptr<SampleMetadata> lastRefMetaTrigger_;`
To be cherry-picket to 7.0.0 acc7 branch and ...and removed option to change `RefMetaTriggerEvents` during runtime.
This will prevent a crash where several buffer managers read/write `std::shared_ptr<SampleMetadata> lastRefMetaTrigger_;`
To be cherry-picket to 7.0.0 acc7 branch and to be modified to apply on 6.1.x branch.
This change as well will require minimal changes on the FESA class to compile. No separate method "setRefTriggerEvents" anymore, removed possibility to change them during runtime --> Fesa Property `ConfigureRefTriggerEvents` now is obsolete and can be dropped.https://git.gsi.de/acc/cabad/-/merge_requests/18Trigger window in seconds2023-05-31T10:25:49Zm.marnTrigger window in seconds7.0.0https://git.gsi.de/acc/cabad/-/merge_requests/17Full sequence test with gap end event2023-05-23T10:14:40Zm.marnFull sequence test with gap end event#62
Includes the relevant changes from https://git.gsi.de/acc/cabad/-/tree/Insert_gap_events_into_fake_sequences/#62
Includes the relevant changes from https://git.gsi.de/acc/cabad/-/tree/Insert_gap_events_into_fake_sequences/7.0.0https://git.gsi.de/acc/cabad/-/merge_requests/16Don't expose private members of SampleMetadata #162023-05-22T06:52:45Zm.marnDon't expose private members of SampleMetadata #16I also removed the custom destructor and the copy asignment operator since they do what the default would do.I also removed the custom destructor and the copy asignment operator since they do what the default would do.7.0.0https://git.gsi.de/acc/cabad/-/merge_requests/15Remove multi writer support. Fix thread-safety issues. Copy windows and provi...2023-05-19T20:04:02Zm.marnRemove multi writer support. Fix thread-safety issues. Copy windows and provide to clients directly with the notification data.Since the work on #58, #59 and #60 is tightly related and it all has to be implemented for it to work, I will collect it all in this MR.
Includes the following MRs:
- !12
- !13
- !14Since the work on #58, #59 and #60 is tightly related and it all has to be implemented for it to work, I will collect it all in this MR.
Includes the following MRs:
- !12
- !13
- !147.0.0m.marnm.marnhttps://git.gsi.de/acc/cabad/-/merge_requests/14Data validation #582023-05-19T19:54:22Zm.marnData validation #587.0.0https://git.gsi.de/acc/cabad/-/merge_requests/13Copy iterators #602023-05-16T07:35:07Zm.marnCopy iterators #607.0.0https://git.gsi.de/acc/cabad/-/merge_requests/12Update readme to reflect single-writer. #592023-05-15T11:47:32Zm.marnUpdate readme to reflect single-writer. #59Partially fixes #59Partially fixes #597.0.0https://git.gsi.de/acc/cabad/-/merge_requests/11Remove prev/next pointers from the sample metadata. Now metadata buffer is...2023-05-11T08:23:25Zm.marnRemove prev/next pointers from the sample metadata. Now metadata buffer is...Remove prev/next pointers from the sample metadata. Now metadata buffer is iterated to find the desired sample.
#46
Removed the prev_ and next_ members from `SampleMetadata`. They were no longer used from any other part of the code ex...Remove prev/next pointers from the sample metadata. Now metadata buffer is iterated to find the desired sample.
#46
Removed the prev_ and next_ members from `SampleMetadata`. They were no longer used from any other part of the code except internally in `MetaDataBuffer`. Since `std::list` provides the same interface as `std::deque` I left it as is. Can be changed to `std::list` later if needed.
There was one duplicate test which I removed. The push test I updated to not use the removed `prev` and `next` methods. Tests are passing.7.0.0https://git.gsi.de/acc/cabad/-/merge_requests/10Update copy asignment operator. Forgoten in !92023-05-09T07:43:54Zm.marnUpdate copy asignment operator. Forgoten in !97.0.0https://git.gsi.de/acc/cabad/-/merge_requests/9Remove meta pointers2023-05-09T07:43:54Zm.marnRemove meta pointersThis should cover what you described in https://git.gsi.de/acc/cabad/-/merge_requests/7#note_52164.
Addresses #50
Existing tests are passing. I only had to update the one that used meta pointers directly.
For FULL_SEQ the State is us...This should cover what you described in https://git.gsi.de/acc/cabad/-/merge_requests/7#note_52164.
Addresses #50
Existing tests are passing. I only had to update the one that used meta pointers directly.
For FULL_SEQ the State is used in full and I believe properly handled. However for Streaming and Triggered the state is not used in any meaningful way. Should it be?
One more thing I noticed is that as far as I can see streaming is calling updateMetaWindowAccordingToSampleWindow twice, once in the actual updateStreamingWindowIter and then again in the DataReadyHandlerStreaming::moveWindows. If I remove either one of the calls the tests still pass, while removing both makes the tests fail, so maybe one of them is redundant.7.0.0https://git.gsi.de/acc/cabad/-/merge_requests/8Remove hardcoded events2023-05-08T08:48:17Zm.marnRemove hardcoded eventsImplement #5Implement #57.0.0