-
Notifications
You must be signed in to change notification settings - Fork 256
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Fix #920 serviceTracker segfault on concurrent tracker.Close()
and framework.Stop()
#922
Conversation
Codecov Report
Additional details and impacted files@@ Coverage Diff @@
## development #922 +/- ##
===============================================
+ Coverage 88.42% 88.51% +0.08%
===============================================
Files 212 211 -1
Lines 12125 12074 -51
===============================================
- Hits 10722 10687 -35
+ Misses 1403 1387 -16
|
@jeffdiclemente Why is
But, as we found out, Bundles do not have access to their trackers. i.e. the tracker's So even though the base object, the We are deleting the |
…er.Close()` and `framework.Stop()` (CppMicroServices#922) Signed-off-by: tcormack <tcormack@mathworks.com>
* Fix race with DS service object construction (#801) - C++14 variant (#828) * Fix race with DS service object construction A race occurs when DS is constructing a service object with injectable mandatory service dependencies whereby any bound service dependencies could no longer be available because another thread unregistered any of the bound service dependencies. Given that a ComponentContext is constructed only after all the service dependencies has been satisfied, if during ComponetContext construction any of the bound service dependencies are no nullptrs then throw and fail to construct the service object. This fixes a failure mode where a service constructor can be called with a nullptr service object when the service dependency is defined as mandatory and injection is true. Also noticed that one of the test bundle project was exceeding the path limit on Windows, so shortened the project name to mitigate that problem. * Add more tests Added more tests and fixed up some error messaging --------- Signed-off-by: Ingmar Sittl <ingmar.sittl@elektrobit.com> Co-authored-by: Jeff DiClemente <jeffdiclemente@users.noreply.github.com> * Make a small performance improvement (#808) (#830) stop copying the std::pair in the range-based for. This helps improve the speed of RegisterService Signed-off-by: The MathWorks, Inc. <jdicleme@mathworks.com> Co-authored-by: Jeff DiClemente <jeffdiclemente@users.noreply.github.com> * 701 - prepare v3.6.2 release (#831) * Remove jsoncpp from framework build to get up-to-date with #773 jsoncpp itself was already upgraded in v3.6.1. Signed-off-by: Ingmar Sittl <ingmar.sittl@elektrobit.com> * Only run these tests if threading support is enabled. (#669) Signed-off-by: The MathWorks, Inc. <alchrist@mathworks.com> * Rerun clang-format to match v3.7.5 Signed-off-by: Ingmar Sittl <ingmar.sittl@elektrobit.com> * Update Changelog and versions to match v3.7.5 content Signed-off-by: Ingmar Sittl <ingmar.sittl@elektrobit.com> --------- Signed-off-by: Ingmar Sittl <ingmar.sittl@elektrobit.com> Signed-off-by: The MathWorks, Inc. <alchrist@mathworks.com> Co-authored-by: Alexander Christoforides <38366659+achristoforides@users.noreply.github.com> * Fix undefined behavior in LDAPExpr::Trim (#835) (#836) if there is no space in the string on the second str.erase, calling str.find_last_not_of() returns std::string::npos. Trying to add 1 to npos leads to undefined behavior reported by UBSAN. Signed-off-by: Ingmar Sittl <ingmar.sittl@elektrobit.com> * Nested ldap queries (#794) (#886) Added the capability to do ldap queries with nested keys. Queries are first checked against the compound key and if a value is found it is returned. If a value is not found, the key is split into segments on the "." character and then the AnyMap is "walked down" to look for a path to the value in sub-maps addressed by the segments of the key. So, if the value of the key "a.b.c" is queried, 1. Split the key into ["a","b","c"] 2. Check the top level map for a sub-map at key "a". If one is found, look in that map for a key "b" with a sub-map, and in that sub-map for a value with key "c". If found, return it. 3. If the top level map does NOT contain a key "a", look for a sub-map at key "a.b". If one is found, look in that sub-map for a value with a key of "c". If one is found, return it. 4. continue this algorithm down as many levels as there are segments until either the value for the last segment is found (in which case it is returned), or one is not found, in which case the lookup fails. Additional changes to cherry-picked commit: * convert from C++-17 to C++-14 with Abseil (include more parts of Abseil) Signed-off-by: Ingmar Sittl <ingmar.sittl@elektrobit.com> * Add benchmark test infrastructure to DS (#813) (#887) * Added benchmark suite for DS - Added benchmark test for GetService for service provided by DS * Removed unnecessary lines from CMakeLists.txt for DS benchmark tests * Trying again * Refactored DS test directory to mimic 'framework' test structure * Fixed shadowed function * Actually fix the function shadowing this time? * Removed unnecessary bundles/link-time deps * Updated CHANGELOG.rst --------- Signed-off-by: The MathWorks, Inc. <alchrist@mathworks.com> Co-authored-by: Alexander Christoforides <38366659+achristoforides@users.noreply.github.com> Co-authored-by: alchrist <alchrist@mathworks.com> * Updated MSVC Analysis to 0.1.1 and checkout to v3 (#824) (#888) Co-authored-by: Alexander Christoforides <38366659+achristoforides@users.noreply.github.com> * Upgrade Build: Add Ubuntu 22.04, remove Ubuntu 18.04 (#810) (#889) Fixes #758 Co-authored-by: Shivam Negi <shivamnegi2019@gmail.com> * Automate Performance Testing and Deploy Results (#829) (#890) * Create performance_windows.yml Adding new workflow for running performance tests * Using personal token * Revert "Using personal token" This reverts commit d672a80. * Uploading results to fork * removing https * Changing ph branch * Trying to deploy on another branch * Commit results to gh-pages branch * Added Performance Badge * Added target for performance badge * Update performance_windows.yml * Removing hardcoded paths - Using ENV instead of hard coded build paths - Increased threshold to 20% * Removed Cache operation * Removing performance branch from workflow * Name changed to CppMicroServices Benchmarks --------- Signed-off-by: The MathWorks, Inc. <aadityap@mathworks.com> Co-authored-by: Aaditya Sakharam Patil <36245341+aadityap-mathworks@users.noreply.github.com> Co-authored-by: Aaditya <aadityap@mathworks.com> * Brian decl services (#833) (#891) * Performance micro-optimizations * Fix formatting * More performance improvements * fixed up compilation errors. * deal with unused variable. * restore API ServiceRegistrationBase::SetProperties(ServiceProperties const&) --------- Resolved conflict with previous C++14 changes (absl::string_view). Signed-off-by: Ingmar Sittl <ingmar.sittl@elektrobit.com> Co-authored-by: Brian Weed <brian_weed@yahoo.com> * ComponentManagermemory reallocation bug fix (#834) (#892) * ComponentManagermemory reallocation bug fix The ComponentManagerImpl object contained a shared_ptr to the vector of all ComponentManagerImpl objects. When adding an item to this vector, the resizing of the vector caused a memory allocation error. Fixed by removing the vector from the ComponentManagerImpl object. * Fix for ConfigurationNotifier::CreateFactoryComponent memory allocation error When a ComponentManager is created, it must be added to the managers map in SCRBundleExtension. This is necessary so that when the bundle is stopped, the ComponentManager can be destroyed. The old code was holding a shared_ptr to the managers map in the ComponentManagerImpl object. This caused a memory reallocation error when a ComponentManager was added to the map and the map needed to be resized. This fix adds an AddComponentManager method to the SCRBundleExtension object so that CreateFactoryComponent can add a manager to the managers map when it is created. In order to find the SCRBundleExtension, the map of SCRBundleExtensions was moved out of SCRActivator and into a new class called SCRExtensionRegistry. * Rest of the ConfigurationNotifier fix * Fix errors in minimum gcc build Signed-off by: The MathWorks Inc. < pelliott@mathworks.com> * Responded to code review comments Responded to code review comments. Added tests for SCRBundleExtension and SCRExtensionRegistry. Signed off by - The MathWorks, Inc. <pelliott@mathworks.com> * Update ConfigurationNotifier.cpp Update error message. Signed off by The MathWorks, Inc. <pelliott@mathworks.com> * Update SCRExtensionRegistry.hpp Formatting issue. signed-off by The MathWorks, Inc. <pelliott@mathworks.com> * CreateFactoryComponent changes ConfigurationNotifier::CreateFactoryComponent will log an exception if it can't find the SCRBundleExtension in the ExtensionRegistry instead of throwing a std::runtime_error exception. Signed-off-by: The MathWorks, Inc. <pelliott@mathworks.com> * Update ConfigurationNotifier.cpp Fixed call to std::exception. Signed-off-by The MathWorks, Inc. <pelliott@mathworks.com> * Update ConfigurationNotifier.cpp Removed throw in CreateFactoryComponent. Error message is already logged, no throw needed. Signed-off-by - The MathWorks, Inc. <pelliott@mathworks.com> --------- Adapt implementation and test code to C++14: * move initialization statements out of if clause * adapt assignment construction in test code calling deleted move constructor Signed-off-by: Ingmar Sittl <ingmar.sittl@elektrobit.com> Co-authored-by: pelliott-mathworks <67922241+pelliott-mathworks@users.noreply.github.com> * Default any map type (#844) (#893) * Fixed undefined behavior in Any::operator==(value) * Revert "Fixed undefined behavior in Any::operator==(value)" This reverts commit 3066fe1. * Default AnyMap(map_type) constructor to UNORDERED_MAP_CASINSENSITIVE_KEYS Co-authored-by: carneyweb <mike@carneyweb.com> * Remove CoreBundleContext.dataStorage clear (#845) (#894) Fixes #733 Co-authored-by: Shivam Negi <shivamnegi2019@gmail.com> * Removing std::move use with const object [ci skip] (#848) (#895) * Removing std::move use with const [ci skip] * Addressing PR feedback, removing const from complex types and adding std move back [ci skip] --------- Signed-off-by: Tahar Touati <touati.thr@gmail.com> Co-authored-by: thrtouati <124062546+thrtouati@users.noreply.github.com> * Fix warning "Use of BITWISE AND to check if a flag is set" (#849) (#896) Signed-off-by: Tahar Touati <touati.thr@gmail.com> Co-authored-by: Tahar Touati <124062546+thrtouati@users.noreply.github.com> * include cstdint in FileSystem.cpp (#850) (#897) vcpkg installation is failing, with this error: PATH/v3.6.0-e25b133cd3.clean/util/src/FileSystem.cpp:122:3: error: ‘uint32_t’ was not declared in this scope PATH/v3.6.0-e25b133cd3.clean/util/src/FileSystem.cpp:71:1: note: ‘uint32_t’ is defined in header ‘<cstdint>’; did you forget to ‘#include <cstdint>’? Sure enough, when patched with this it will build and install correctly with vcpkg. Other errors are reported but this is the culprit. Co-authored-by: Tristan Ayala <ayalat1@unlv.nevada.edu> * Fixes #840: removes manual reference counting (#841) (#898) * converted registration * compiled, not passeD * fixed weak_ptr error, now leaking mock objects * fixed bug, need to decrement ref count * updats from last week, test cases failing because of out of date expectations * all tests are passing with shared and weak pointers to serviceRegistrationBasePrivate * still passing tests, updated comments and cleaned up * updating to share dependents * new issue with dying service * added coreInfo, maybe passing * passing tests, removed manual ref counting from referenceBasePrivate, repeated all fast tests to ensure no sporadic failures * updated comments * updates before PR * Removed manual reference counting The manual reference counting in ServiceRegistrationBasePrivate and ServiceReferenceBasePrivate were removed. Additionally, some properties of ServiceRegistrationBasePrivate were offloaded to a new class ServiceRegistrationCoreInfo which both ServiceRegistrationBasePrivate and ServiceReferenceBasePrivate can access allowing ServiceReferenceBasePrivate to give up ownership of ServiceRegistrationBasePrivate. * Removed manual reference counting and merged with upstream (#840) The manual reference counting in ServiceRegistrationBasePrivate and ServiceReferenceBasePrivate were removed. Additionally, some properties of ServiceRegistrationBasePrivate were offloaded to a new class ServiceRegistrationCoreInfo which both ServiceRegistrationBasePrivate and ServiceReferenceBasePrivate can access allowing ServiceReferenceBasePrivate to give up ownership of ServiceRegistrationBasePrivate. * ServiceRegistrationCoreInfo now default destructor * Updated based on Patty's comments #840 * updated ServiceReferenceBase Constructors for clarity with shared_ptrs * removed 'move' from serviceRegistry * attempt at solving mac issue * updates for lock type and removing unneccessary functions from reference * lost lock * changed to custom atomic load * LockSet addition * threading support in LockSet * LockSet not threaded * no names in func dec * Incoorporated Jeff's Comments * Assignment operator didn't fail on my computer, did in github * updated for Jeff's 5/16 comments * clang update * mikes comments and fixes for multithreaded support * remove ifdefs from BundleRegistry, abide by rule of (0,3,5), and add comments --------- adaptations for C++14: * move initialization statements out of if clauses Signed-off-by: Ingmar Sittl <ingmar.sittl@elektrobit.com> Co-authored-by: tcormackMW <113473781+tcormackMW@users.noreply.github.com> * [ci skip] Updated README to reflect correct compiler/OS versions (#862) (#899) [ci skip] Co-authored-by: Jeff DiClemente <jeffdiclemente@users.noreply.github.com> * 701 - Fixes #852: adds a [[nodiscard]] to BundleContext::RegisterService (#863) (#900) * Fixes #852: adds a [[nodiscard]] to BundleContext::RegisterService (#863) * noDiscard update first push * Jeff's comments, c++14 in cmakelists for makefile test, comments to reference nodiscard --- Adaptation for C++14: * use [[nodiscard]] only when __has_cpp_attribute is available and __has_cpp_attribute(nodiscard) is valid. Alternatively use [[gnu::warn_unused_result]] if nodiscard is not available, but gnu::warn_unused_result is. * revert default C++ standard in doc/src/CMakeLists.txt back to C++14 Signed-off-by: Ingmar Sittl <ingmar.sittl@elektrobit.com> * use nodiscard only if compiled in C++17 mode --------- Signed-off-by: Ingmar Sittl <ingmar.sittl@elektrobit.com> Co-authored-by: tcormackMW <113473781+tcormackMW@users.noreply.github.com> * Fix code scanning alerts (#861) (#903) Fixes #860, #859, #858, #857, #856, #855, #853 ----- C++14 adaptations: use ABSL_FALLTHROUGH_INTENDED instead of [[fallthrough]] Signed-off-by: Ingmar Sittl <Ingmar.Sittl@elektrobit.com> Co-authored-by: Jeff DiClemente <jeffdiclemente@users.noreply.github.com> * Ensure multiple listeners for the same factory PID are honoured by `ConfigurationNotifier::AnyListenersForPid` (#865) (#904) * Ensure multiple listeners for the same PID are honoured * Fix formatting --------- Signed-off-by: Conor Burgess <Burgess.Conor@gmail.com> Co-authored-by: Conor Burgess <Burgess.Conor@gmail.com> Co-authored-by: cburgess <cburgess@mathworks.com> * Code scanning alert fix: Use of a moved from object #864 (#866) (#905) Fixes #864 * tests passing on linux, all files updated * Mike and Toby backat it again * changed second instance of warning? * reverted naming, final submit Co-authored-by: tcormackMW <113473781+tcormackMW@users.noreply.github.com> * Fix race condition when concurrently adding to SCRExtensionRegistry (#870) (#906) * Fix race condition when concurrently adding to SCRExtensionRegistry Fixed a race that can happen when multiple threads are trying to add to the extension registry container. Fixed a bug with the tests for SCRExtensionRegsitry class never being compiled and run. Adaptations for C++14: * fixed call of deleted move-constructor in TestSCRExtensionRegistry.cpp Signed-off-by: Ingmar Sittl <Ingmar.Sittl@elektrobit.com> Co-authored-by: Jeff DiClemente <jeffdiclemente@users.noreply.github.com> * Fix #868: Recoups some of performance losses from PR #841 (#869) (#907) * fixed lockReg shared_ptr * down to 5% increase from original * get logs from github to verify behavior * reverting performance yml and adding move constructor (default) for RegistrationLocks : Co-authored-by: tcormackMW <113473781+tcormackMW@users.noreply.github.com> * #Issue873: Redundant calls to .Load() (#874) (#908) * first commit * test Case * revert test * test fix * naming Co-authored-by: tcormackMW <113473781+tcormackMW@users.noreply.github.com> * Fixes #718 (#876) (#909) Signed-off-by: Toby Cormack <tcormack@mathworks.com> Co-authored-by: tcormackMW <113473781+tcormackMW@users.noreply.github.com> * Fix #489 - Char Const* property (#877) (#910) * Added case for char const* * formatting --------- Signed-off-by: tcormack <tcormack@mathworks.com> Co-authored-by: tcormackMW <113473781+tcormackMW@users.noreply.github.com> * Fix #879 Change TPP extensions (#880) (#911) Signed-off-by: tcormack <tcormack@mathworks.com> Co-authored-by: tcormackMW <113473781+tcormackMW@users.noreply.github.com> * Update performance_windows.yml Removing c++14-compliant branch from performance workflow. This keeps the graph clean * Fix #881 (#912) Reformat `.hpp` files with Clang Co-authored-by: tcormackMW <113473781+tcormackMW@users.noreply.github.com> * Fix #846 (#878) (#919) * firstCommit * events is all wait for false flags * removed txt files * serviceTracker tsan fixes * deleted txt * tsanSupppressions updated for various tests * removed text files * removed test * added comment * updated suppresssions file with commentss * add sleep to stop spin * add unused flag to lock * revert reformat * formatting * formatting * reformat * updating comments * update comment --------- Signed-off-by: tcormack <tcormack@mathworks.com> Co-authored-by: tcormackMW <113473781+tcormackMW@users.noreply.github.com> * Fix #710 ServiceTracker TSAN warnings (#883) (#923) * fixed tracker race * fixing tsanSupp * fixing tsan mistakes * fixed tracker race * tsan_suppresssions mistype * fixed comments * typos Co-authored-by: tcormackMW <113473781+tcormackMW@users.noreply.github.com> * Fix #872 (#875) Remove Statics in MultipleListenersTest.cpp and ServiceHooksTest.cpp (#924) Signed-off-by: tcormack <tcormack@mathworks.com> Co-authored-by: tcormackMW <113473781+tcormackMW@users.noreply.github.com> * Nested ldap queries (#811) (#925) * disable support for nested filtering set -DSUPPORT_NESTED_LOOKUP to re-enable the algorithm. * Added comment describing enabling nested ldap queries. --------- --------- Addpations for C++14: * replaced std::nullopt with absl::nullopt Signed-off-by: Ingmar Sittl <Ingmar.Sittl@elektrobit.com> Co-authored-by: carneyweb <mike@carneyweb.com> * 701 - update 3rd party components (Abseil, googletest, spdlog, nowide) (#927) * update absl to Abseil LTS 20230125.3 * update googletest to release 1.14.0 * update spdlog to version 1.12.0 * update boost nowide to latest commit from standalone branch * Remove unused variable to fix compiler warning (#928) Signed-off-by: Ingmar Sittl <Ingmar.Sittl@elektrobit.com> * Fix #920 serviceTracker segfault on concurrent `tracker.Close()` and `framework.Stop()` (#922) (#931) Signed-off-by: tcormack <tcormack@mathworks.com> Co-authored-by: tcormackMW <113473781+tcormackMW@users.noreply.github.com> * Add condition on development branch (#916) (#933) * Add condition on development branch Signed-off-by: The MathWorks, Inc. aadityap@mathworks.com Signed-off-by: The MathWorks, Inc. aadityap@mathworks.com Co-authored-by: Aaditya Sakharam Patil <36245341+aadityap-mathworks@users.noreply.github.com> Co-authored-by: aadityap <aadityap@mathworks.com> * Fix #926 Custom CppMicroServices Boost Namespace (#929) (#934) Signed-off-by: tcormack <tcormack@mathworks.com> Co-authored-by: tcormackMW <113473781+tcormackMW@users.noreply.github.com> * Fix Redundant Bundle Validation checks (#921) (#935) Signed-off-by: Shivam Negi <snegi@mathworks.com> Co-authored-by: Shivam Negi <shivamnegi2019@gmail.com> * Fix #913 ServiceTracker deadlock (#915) (#936) Signed-off-by: tcormack <tcormack@mathworks.com> Co-authored-by: tcormackMW <113473781+tcormackMW@users.noreply.github.com> * Adding support for multiple cardinality for service references. (#871) (#940) * Adding support for multiple cardinality for service references. Signed-off-by: The MathWorks, Inc. mphadnis@mathworks.com * Fixing build failures on Linux/Maci platform * Addressing feedbacks: minor code changes + modifications in unitttests. Signed-off-by: The MathWorks, Inc. <mphadnis@mathworks.com> * Modified test point to check for compile time errors. Fixed formatting in test file. Signed-off-by: The MathWorks, Inc. mphadnis@mathworks.com * Changes to automate existing ServiceComponent tests using CMake as compile-only tests. Signed-off-by: The MathWorks, Inc. mphadnis@mathworks.com * Fixing clang formatting for test files. Signed-off-by: The MathWorks, Inc. mphadnis@mathworks.com * Improvising compile time tests based on feedbacks. Signed-off-by: The MathWorks, Inc. mphadnis@mathworks.com * Added doxygen comments to new methods in ReferenceManager Signed-off-by: The MathWorks, Inc. mphadnis@mathworks.com --------- Co-authored-by: Monika032 <monikaphadnis24@gmail.com> Co-authored-by: mphadnis <mphadnis@mathworks.com> * 701 - prepare 3.6.3 release (#941) * Update versions * Untabify CMakeLists.txt * Update Changelog for upcoming 3.6.3 release * Fix _ABSL_SRCS/_ABSL_HDRS (erroneously added headers to _SRCS) * Fix #938 Boost namespace Versioning and remove absl dependency (#939) (#944) * Revert "Fix #926 Custom CppMicroServices Boost Namespace (#929)" This reverts commit aab89e3. Remove commit to reset to original boost namespace * Change Cmake Infrastructure to allow custom Boost library use and remove old commit that changed boost namespace * abseil dependency removal * fix double forward -- maybe, this may be slow * references instead of copies * cmake update ----- C++14 adapations: * don't remove abseil as it is used for more than just strcat Signed-off-by: Ingmar Sittl <Ingmar.Sittl@elektrobit.com> Co-authored-by: tcormackMW <113473781+tcormackMW@users.noreply.github.com> * Fix #937 `GetServiceReferences` ordering guarantee (#943) (#946) Signed-off-by: tcormack <tcormack@mathworks.com> Co-authored-by: tcormackMW <113473781+tcormackMW@users.noreply.github.com> * CMake Updates for Boost Versioning Fix (#945) (#950) * cmake updates * behavior put in cmake function * usFunctionBoostPath update Co-authored-by: tcormackMW <113473781+tcormackMW@users.noreply.github.com> * Initializer list support (#942) (#952) Added support for std::initializer_list constructurs Updated tests to use new initializer simplifying the code. Co-authored-by: carneyweb <mike@carneyweb.com> * ServiceComponent build tests cmake configuration (#949) (#953) * use cmake build type * set to debug by default Co-authored-by: tcormackMW <113473781+tcormackMW@users.noreply.github.com> * Update Changelog for upcoming 3.6.3 release (#954) [ci skip] [ci skip] --------- Signed-off-by: Ingmar Sittl <ingmar.sittl@elektrobit.com> Signed-off-by: The MathWorks, Inc. <jdicleme@mathworks.com> Signed-off-by: The MathWorks, Inc. <alchrist@mathworks.com> Signed-off-by: The MathWorks, Inc. <aadityap@mathworks.com> Signed-off-by: Tahar Touati <touati.thr@gmail.com> Signed-off-by: Ingmar Sittl <Ingmar.Sittl@elektrobit.com> Signed-off-by: Conor Burgess <Burgess.Conor@gmail.com> Signed-off-by: Toby Cormack <tcormack@mathworks.com> Signed-off-by: tcormack <tcormack@mathworks.com> Signed-off-by: The MathWorks, Inc. aadityap@mathworks.com Signed-off-by: Shivam Negi <snegi@mathworks.com> Co-authored-by: Ingmar Sittl <79453136+insi-eb@users.noreply.github.com> Co-authored-by: Jeff DiClemente <jeffdiclemente@users.noreply.github.com> Co-authored-by: Alexander Christoforides <38366659+achristoforides@users.noreply.github.com> Co-authored-by: alchrist <alchrist@mathworks.com> Co-authored-by: Shivam Negi <shivamnegi2019@gmail.com> Co-authored-by: Aaditya Sakharam Patil <36245341+aadityap-mathworks@users.noreply.github.com> Co-authored-by: Aaditya <aadityap@mathworks.com> Co-authored-by: Brian Weed <brian_weed@yahoo.com> Co-authored-by: pelliott-mathworks <67922241+pelliott-mathworks@users.noreply.github.com> Co-authored-by: carneyweb <mike@carneyweb.com> Co-authored-by: thrtouati <124062546+thrtouati@users.noreply.github.com> Co-authored-by: Tristan Ayala <ayalat1@unlv.nevada.edu> Co-authored-by: Conor Burgess <Burgess.Conor@gmail.com> Co-authored-by: cburgess <cburgess@mathworks.com> Co-authored-by: Monika032 <monikaphadnis24@gmail.com> Co-authored-by: mphadnis <mphadnis@mathworks.com>
* Default any map type (#844) * Fixed undefined behavior in Any::operator==(value) * Revert "Fixed undefined behavior in Any::operator==(value)" This reverts commit 3066fe1. * Default AnyMap(map_type) constructor to UNORDERED_MAP_CASINSENSITIVE_KEYS * Remove CoreBundleContext.dataStorage clear (#845) Fixes #733 * Removing std::move use with const object [ci skip] (#848) * Removing std::move use with const [ci skip] Signed-off-by: Tahar Touati <touati.thr@gmail.com> * Addressing PR feedback, removing const from complex types and adding std move back [ci skip] Signed-off-by: Tahar Touati <touati.thr@gmail.com> --------- Signed-off-by: Tahar Touati <touati.thr@gmail.com> * [ci skip] Update Changelog for #845 (#847) * Update Chagelog for #845 [ci skip] * Update Changelog Unreleased section [ci skip] Signed-off-by: ShivamNegi <shivamnegi2019@gmail.com> --------- Signed-off-by: ShivamNegi <shivamnegi2019@gmail.com> * Fix warning "Use of BITWISE AND to check if a flag is set" (#849) Signed-off-by: Tahar Touati <touati.thr@gmail.com> * include cstdint in FileSystem.cpp (#850) vcpkg installation is failing, with this error: PATH/v3.6.0-e25b133cd3.clean/util/src/FileSystem.cpp:122:3: error: ‘uint32_t’ was not declared in this scope PATH/v3.6.0-e25b133cd3.clean/util/src/FileSystem.cpp:71:1: note: ‘uint32_t’ is defined in header ‘<cstdint>’; did you forget to ‘#include <cstdint>’? Sure enough, when patched with this it will build and install correctly with vcpkg. Other errors are reported but this is the culprit. * Fixes #840: removes manual reference counting (#841) * converted registration * compiled, not passeD * fixed weak_ptr error, now leaking mock objects * fixed bug, need to decrement ref count * updats from last week, test cases failing because of out of date expectations * all tests are passing with shared and weak pointers to serviceRegistrationBasePrivate * still passing tests, updated comments and cleaned up * updating to share dependents * new issue with dying service * added coreInfo, maybe passing * passing tests, removed manual ref counting from referenceBasePrivate, repeated all fast tests to ensure no sporadic failures * updated comments * updates before PR * Removed manual reference counting The manual reference counting in ServiceRegistrationBasePrivate and ServiceReferenceBasePrivate were removed. Additionally, some properties of ServiceRegistrationBasePrivate were offloaded to a new class ServiceRegistrationCoreInfo which both ServiceRegistrationBasePrivate and ServiceReferenceBasePrivate can access allowing ServiceReferenceBasePrivate to give up ownership of ServiceRegistrationBasePrivate. Signed-off-by: Toby Cormack <tcormack@mathworks.com> * Removed manual reference counting and merged with upstream (#840) The manual reference counting in ServiceRegistrationBasePrivate and ServiceReferenceBasePrivate were removed. Additionally, some properties of ServiceRegistrationBasePrivate were offloaded to a new class ServiceRegistrationCoreInfo which both ServiceRegistrationBasePrivate and ServiceReferenceBasePrivate can access allowing ServiceReferenceBasePrivate to give up ownership of ServiceRegistrationBasePrivate. Signed-off-by: Toby Cormack <tcormack@mathworks.com> * ServiceRegistrationCoreInfo now default destructor * Updated based on Patty's comments #840 * updated ServiceReferenceBase Constructors for clarity with shared_ptrs * removed 'move' from serviceRegistry * attempt at solving mac issue * updates for lock type and removing unneccessary functions from reference * lost lock * changed to custom atomic load * LockSet addition * threading support in LockSet * LockSet not threaded * no names in func dec * Incoorporated Jeff's Comments * Assignment operator didn't fail on my computer, did in github * updated for Jeff's 5/16 comments * clang update * mikes comments and fixes for multithreaded support * remove ifdefs from BundleRegistry, abide by rule of (0,3,5), and add comments --------- Signed-off-by: Toby Cormack <tcormack@mathworks.com> * Fixes #852: adds a [[nodiscard]] to BundleContext::RegisterService (#863) * noDiscard update first push * Jeff's comments, c++14 in cmakelists for makefile test, comments to reference nodiscard * [ci skip] Updated README to reflect correct compiler/OS versions (#862) [ci skip] * Fix code scanning alerts (#861) Fixes #860, #859, #858, #857, #856, #855, #853 * Ensure multiple listeners for the same factory PID are honoured by `ConfigurationNotifier::AnyListenersForPid` (#865) * Ensure multiple listeners for the same PID are honoured Signed-off-by: Conor Burgess <Burgess.Conor@gmail.com> * Fix formatting Signed-off-by: Conor Burgess <Burgess.Conor@gmail.com> --------- Signed-off-by: Conor Burgess <Burgess.Conor@gmail.com> Co-authored-by: cburgess <cburgess@mathworks.com> * Code scanning alert fix: Use of a moved from object #864 (#866) Fixes #864 * tests passing on linux, all files updated * Mike and Toby backat it again * changed second instance of warning? * reverted naming, final submit * Fix race condition when concurrently adding to SCRExtensionRegistry (#870) * Fix race condition when concurrently adding to SCRExtensionRegistry Fixed a race that can happen when multiple threads are trying to add to the extension registry container. Fixed a bug with the tests for SCRExtensionRegsitry class never being compiled and run. Signed-off-by: The MathWorks, Inc. <jdicleme@mathworks.com> * Fix #868: Recoups some of performance losses from PR #841 (#869) * fixed lockReg shared_ptr * down to 5% increase from original * get logs from github to verify behavior * reverting performance yml and adding move constructor (default) for RegistrationLocks : * #Issue873: Redundant calls to .Load() (#874) * first commit * test Case * revert test * test fix * naming * Fixes #718 (#876) Signed-off-by: Toby Cormack <tcormack@mathworks.com> * Fix #489 - Char Const* property (#877) * Added case for char const* Signed-off-by: tcormack <tcormack@mathworks.com> * formatting --------- Signed-off-by: tcormack <tcormack@mathworks.com> * Fix #879 Change TPP extensions (#880) Signed-off-by: tcormack <tcormack@mathworks.com> * Fix #881 Reformat `.hpp` files with Clang * Fix #846 (#878) * firstCommit * events is all wait for false flags * removed txt files Signed-off-by: tcormack <tcormack@mathworks.com> * serviceTracker tsan fixes Signed-off-by: tcormack <tcormack@mathworks.com> * deleted txt Signed-off-by: tcormack <tcormack@mathworks.com> * tsanSupppressions updated for various tests Signed-off-by: tcormack <tcormack@mathworks.com> * removed text files Signed-off-by: tcormack <tcormack@mathworks.com> * removed test * added comment Signed-off-by: tcormack <tcormack@mathworks.com> * updated suppresssions file with commentss * add sleep to stop spin * add unused flag to lock Signed-off-by: tcormack <tcormack@mathworks.com> * revert reformat * formatting * formatting * reformat * updating comments * update comment --------- Signed-off-by: tcormack <tcormack@mathworks.com> * Fix #710 ServiceTracker TSAN warnings (#883) * fixed tracker race * fixing tsanSupp * fixing tsan mistakes * fixed tracker race * tsan_suppresssions mistype * fixed comments * typos * Fix #872 (#875) Remove Statics in MultipleListenersTest.cpp and ServiceHooksTest.cpp Signed-off-by: tcormack <tcormack@mathworks.com> * Remove unwanted branches from workflow (#902) Co-authored-by: aadityap <aadityap@mathworks.com> * Fix #920 serviceTracker segfault on concurrent `tracker.Close()` and `framework.Stop()` (#922) Signed-off-by: tcormack <tcormack@mathworks.com> * Add condition on development branch (#916) * Add condition on development branch Signed-off-by: The MathWorks, Inc. aadityap@mathworks.com Co-authored-by: aadityap <aadityap@mathworks.com> * Fix #926 Custom CppMicroServices Boost Namespace (#929) Signed-off-by: tcormack <tcormack@mathworks.com> * Update 3rd party dependencies to versions from c++14-compliant branch (#930) * update googletest to release 1.14.0 * update spdlog to version 1.12.0 * update boost nowide to latest commit from standalone branch * update absl to Abseil LTS 20230125.3 * Updated amalgamated jsoncpp to 1.9.5 This also fixes compiler warnings Signed-off-by: Ingmar Sittl <ingmar.sittl@elektrobit.com> * Upgrade miniz to 3.0.2 release Signed-off-by: Ingmar Sittl <ingmar.sittl@elektrobit.com> --------- Signed-off-by: Ingmar Sittl <ingmar.sittl@elektrobit.com> * Fix issues with gcc-12 and clang-16 (#932) * Remove unused variable to fix clang-16 warning * Addd missing include when using libstdc++ headers from gcc-12 Signed-off-by: Ingmar Sittl <Ingmar.Sittl@elektrobit.com> * Fix Redundant Bundle Validation checks (#921) Signed-off-by: Shivam Negi <snegi@mathworks.com> * Fix #913 ServiceTracker deadlock (#915) Signed-off-by: tcormack <tcormack@mathworks.com> * Adding support for multiple cardinality for service references. (#871) * Adding support for multiple cardinality for service references. Signed-off-by: The MathWorks, Inc. mphadnis@mathworks.com * Fixing build failures on Linux/Maci platform * Addressing feedbacks: minor code changes + modifications in unitttests. Signed-off-by: The MathWorks, Inc. <mphadnis@mathworks.com> * Modified test point to check for compile time errors. Fixed formatting in test file. Signed-off-by: The MathWorks, Inc. mphadnis@mathworks.com * Changes to automate existing ServiceComponent tests using CMake as compile-only tests. Signed-off-by: The MathWorks, Inc. mphadnis@mathworks.com * Fixing clang formatting for test files. Signed-off-by: The MathWorks, Inc. mphadnis@mathworks.com * Improvising compile time tests based on feedbacks. Signed-off-by: The MathWorks, Inc. mphadnis@mathworks.com * Added doxygen comments to new methods in ReferenceManager Signed-off-by: The MathWorks, Inc. mphadnis@mathworks.com --------- Co-authored-by: mphadnis <mphadnis@mathworks.com> * Fix #938 Boost namespace Versioning and remove absl dependency (#939) * Revert "Fix #926 Custom CppMicroServices Boost Namespace (#929)" This reverts commit aab89e3. Remove commit to reset to original boost namespace * Change Cmake Infrastructure to allow custom Boost library use and remove old commit that changed boost namespace * abseil dependency removal * fix double forward -- maybe, this may be slow * references instead of copies * cmake update * Fix #937 `GetServiceReferences` ordering guarantee (#943) Signed-off-by: tcormack <tcormack@mathworks.com> * BundleTracker Implementation (#726) * Bundle tracker (#709) * BundleTracker stubs * Generalize BundleAbstractTracked * Implement BundleTracker * Implement BundleTracker in DeclarativeServices using raw pointers * Use std::optional in BundleTracker API * BundleTracker template instantiations * Create initial tests * Move BundleTrackerTest.cpp * Update BundleTrackerTest.cpp * Implement TestGetTrackingCountClosed * Implement GetTrackingCount tests * Modify tests relating to unknown expected behavior * Implement TestGetTracked and TestOpenOpened * Update build_and_test_windows.yml * Implement and update tests * Update tests * Use shared ptr for BundleTrackerCustomizer * Implement and update tests * Implement and update tests * Rename method test file and fixture * Update method tests * Add TODOs * Add branch to ci * Update CXX_STANDARD to 17 for doc * various fixes * Update CMakeLIsts * Create BundleTrackerCustomCallbackTest.cpp * Implement and update custom callback tests * Update build_and_test_nix.yml * Update custom callback tests * Implement test subset * Resolve cross-platform build issues * Implement and update tests * Implement and update tests * Further CI fixes * Update method tests * Update method tests to handle build shared libraries off * Update custom callback tests to handle build shared libraries off * Implement CreateStateMask variadic * Implement and update method tests * Implement test * Update tests to use state mask creator * Implement custom callback tests * Create concurrency tests * Use std::optional for GetObject * Update custom callback tests * Ignore bundleEvents without state changes * Use std::optional for GetCustomizedObject * Update GetObject test * Do not imply implicit cast from std::optional * Update custom callback tests * Add lock checkout for Remove() * Update method tests * Update tests * Hide _CreateStateMask * Remove DS integration * Snap changes * Implement concurrency tests * Amend CreateStateMask * Update CreateStateMask calls * Change .yml files * Update formatting * Update tests * Move listener removal inside syncronised region * Add BundleTracker to workflow * Additional standardization * Drop workflows changes * Implement performance tests * Update tests with unclear expectations - Adds comments explaining the EXPECT_CALL statements expecting any number of RemovedBundle callbacks - Updates where the expected behavior of "Close() calling RemovedBundle on tracked bundles" is tested, also adding a comment to make this fact clear * Add newline at end of file * Review updates * Change API types * Avoid frivolous using statements in BundleTracker * Remove BundleTracker tpp file * Add forward declarations * Clear cross-platform build warnings * Bundle-Tracker OSGi TrackingCount behavior * Remove implementation tpp files * Adjust TrackingCount() based on 702 Co-authored-by: shane-riley (The Mathworks Inc.) <sriley@mathworks.com> Co-authored-by: xru192 <ryanxu123@gmail.com> Co-authored-by: xru192 <56376151+xru192@users.noreply.github.com> Co-authored-by: Alexander Christoforides <38366659+achristoforides@users.noreply.github.com> * Upgrade jsoncpp (#773) Fixes #772 Upgrade version of jsoncpp to 1.9.5 to include fix for deprecated sprintf usage. Upgrading introduced a new unneeded-internal-declaration warning which is set as a warning instead of error. Signed-off-by: The MathWorks, Inc. <jdicleme@mathworks.com> Signed-off-by: The MathWorks, Inc. <jdicleme@mathworks.com> Co-authored-by: Jeff DiClemente <jdicleme@mathworks.com> * Fixed sporadic race conditions during framework shutdown (#725) Fixed a number of races that can occur while one thread is performing various framework operations and another thread is shutting down the framework. Signed-off-by: The MathWorks, Inc. <jdicleme@mathworks.com> Signed-off-by: The MathWorks, Inc. <jdicleme@mathworks.com> Co-authored-by: Jeff <DiClemente> * Fix race that results in a missed config updated event (#727) * Fix race that results in a missed config updated event Fixed races that can cause a ManagedService or ManagedServiceFactory to miss being called when a configuraiton object is updated. Signed-off-by: The MathWorks, Inc. <jdicleme@mathworks.com> * Update ComponentInstanceImpl.hpp (#724) * Update ComponentInstanceImpl.hpp Improve error message that is generated when an appropriate constructor isn't found for the Service Instance. Signed-off-by, The MathWorks, Inc. <pelliott@mathworks.com> * Factory Configuration Bug Fix (#731) * Factory Configuration Bug Fix When factory configurations are created before the bundle containing the factory component is installed and started, DS should find those configurations in the Configuration Admin repository and register them as part of the factory component startup. Signed-off-by The MathWorks, Inc. <pelliott@mathworks.com> * Factory Configuration Bug fix Addressed code review feedback. Signed-off-by The MathWorks, Inc. <pelliott@mathworks.com> * Update ComponentConfigurationImpl.cpp Fixed compilation failure in Ubuntu Minimum Gcc build. Signed-off-by The MathWorks, Inc. <pelliott@mathworks.com> * Update TestFactoryPid.cpp Change auto const to constexpr. Signed-off-by The MathWorks, Inc. <pelliott@mathworks.com> * Revert PR #713 (#744) This change is causing an untenable amount of noise in log output. Backing out for now. A better solution to the problem of logging service dependency errors is needed. Signed-off-by: The MathWorks, Inc. <jdicleme@mathworks.com> * Update version numbers for cppms upgrade (#748) Update version numbers for cppms upgrade to version 3.7.4. Signed-off-by The MathWorks, Inc. <pelliott@mathworks.com> * Fix deadlock in ConfigurationAdminImpl::RemoveConfigurations (#745) * Fix deadlock in ConfigurationAdminImpl::RemoveConfigurations This is a fix for a deadlock bug caused by the WaitForAllAsync in ConfigurationAdmin::RemoveConfigurations. The Use Case is as follows: A configuration object is defined in the manifest.json file. The User's main thread stopped the bundle which causes the ConfigurationAdminImp::RemoveConfigurations method to remove the configuration object from the ConfigurationAdmin repository and to send an Updated notification to the service instance. RemoveConfigurations would then execute a WaitForAllAsync to wait for all asynchronous threads to complete including the asynchronous thread that was launched as part of the Updated notification. The user's Updated method also tried to stop the bundle. This means that it had to wait for the RemoveConfigurations method to complete. Each thread was waiting for the other to complete. This fix removes the WaitForAllAsync and adds a test case to confirm the deadlock is gone. Signed-off-by The MathWorks, Inc. <pelliott@mathworks.com> * Fix compiler error Fix compiler error in Minimum Gcc build. Signed-off-by The MathWorks, Inc. <pelliott@mathworks.com> * Change ConfigAdminTests.testManagedServiceRemoveConfigurationsDeadlock Change ConfigAdminTests.testManagedServiceRemoveConfigurationsDeadlock so that it more closely matches the use case that caused the deadlock. Signed-off-by The MathWorks, Inc. <pelliott@mathworks.com> * Update TestConfigAdmin.cpp testManagedServiceRemoveConfigurationsDeadlock test. Changed Updated method to make sure that it only stops the bundle containing the cm.testdeadlock configuration object. Signed-off-by The MathWorks, Inc. <pelliott@mathworks.com> * Update TestConfigAdmin.cpp Added error checking for the Updated method used in testManagedServiceRemoveConfigurationsDeadlock. Signed-off-by The MathWorks, Inc. <pelliott@mathworks.com> * configurations using the same pid are not updated properly (#754) * configurations using the same pid are not updated properly Fixed an issue whereby re-using a configuration pid did not cause the configuration to be sent to the ManagedService/ManagedServiceFactory correctly. * Remove last change count instead of setting it to zero Co-authored-by: jdicleme <jdicleme@mathworks.com> * Ensure ~SCRBundleExtension does not throw (#761) * Ensure ~SCRBundleExtension does not throw It's possible for the bundle to be stopped before ~SCRBundleExtension accesses the bundle, causing an exception to be thrown and an abort. This change ensures the destructor does not throw. * Fix valgrind errors Moved cleanup of SCRBundleExtension members to make sure these objects are destroyed when an exception is thrown from DisableAndRemoveAllComponentManagers. Signed-off-by: The MathWorks, Inc. <jdicleme@mathworks.com> * Fix valgrind error Missed another error path where cleanup is necessary Signed-off-by: The MathWorks, Inc. <jdicleme@mathworks.com> Signed-off-by: The MathWorks, Inc. <jdicleme@mathworks.com> Co-authored-by: jdicleme <jdicleme@mathworks.com> * clang-format ran for all files (#759) Signed-off-by: The MathWorks, Inc. <alchrist@mathworks.com> Signed-off-by: The MathWorks, Inc. <alchrist@mathworks.com> * Rev DS and ConfigAdmin versions for release (#762) prepare ds and configadmin for a bug fix release Signed-off-by: The MathWorks, Inc. <jdicleme@mathworks.com> Signed-off-by: The MathWorks, Inc. <jdicleme@mathworks.com> Co-authored-by: jdicleme <jdicleme@mathworks.com> * Clang-format git hook pre-commit enforcement (#760) * Added clang-format git pre-commit hook Signed-off-by: The MathWorks, Inc. <alchrist@mathworks.com> * Updated README * Updated help instructions to include '--style=file' * Added '--style=file' flag in actual pre-commit hook check * Updated README * Removed unnecessary code in pre-commit hook * Updated README Signed-off-by: The MathWorks, Inc. <alchrist@mathworks.com> * Update changelog [ci skip] (#765) * Update Changelog to include missing changes [ci skip] Signed-off-by: The MathWorks, Inc. <jdicleme@mathworks.com> * rebase onto development. * Fix broken static build configurations on macOS (#774) * Fix broken static build configurations on macOS Fixes #738 Removed the ability to append ZIP files to the end of archives files for all supported OS platforms. Specifically the clang linker no longer tolerates linking archive files with arbitrary data appended to the end. Signed-off-by: The MathWorks, Inc. <jdicleme@mathworks.com> * Fix examples tests the tutorial example has tests which use an installed CppMicroServices SDK to test whether the example code can be compiled using the SDK. In this case, the CppMicroServices target property doesn't have the path to the metadata zip set. To resolve this issue: 1. install the metadata zip files alongside the static libraries for all CppMicroServices components only if building static libraries. 2. Set this property for cases where the CppMicroServices SDK is used by downstream clients. Signed-off-by: The MathWorks, Inc. <jdicleme@mathworks.com> Signed-off-by: The MathWorks, Inc. <jdicleme@mathworks.com> Co-authored-by: Jeff <DiClemente> * Support arm64 on macOS (#778) Fixes #674 Add support for arm64 on macOS Signed-off-by: The MathWorks, Inc. <jdicleme@mathworks.com> Signed-off-by: The MathWorks, Inc. <jdicleme@mathworks.com> * Performance improvement from `brian-performance` branch (#728) * Prototype performance improvements * Reverted AnyMap hash change Signed-off-by: The MathWorks, Inc. <alchrist@mathworks.com> * Fixed unused variable warnings * Made changes requested by reviewers * Made changes requested by reviewer * Back out a performance improvement Backing out a performance improvement as it creates a deadlock caused by mutex order locking. Signed-off-by: The MathWorks, Inc. <jdicleme@mathworks.com> Signed-off-by: The MathWorks, Inc. <alchrist@mathworks.com> Signed-off-by: The MathWorks, Inc. <jdicleme@mathworks.com> Co-authored-by: BrianWeed <brian_weed@yahoo.com> Co-authored-by: jdicleme <jeffdiclemente@users.noreply.github.com> Co-authored-by: Jeff <DiClemente> * Fix ub in any (#777) * Fixed undefined behavior in Any::operator==(value) * Revert "Fixed undefined behavior in Any::operator==(value)" This reverts commit 3066fe1. * Fixed undefined behavior in Any::operator==(value) * removed unnecessary forward declaration. * Fixed undefined behavior in Any::operator==(value) * removed unnecessary forward declaration. * Fix race with DS service object construction (#801) * Fix race with DS service object construction A race occurs when DS is constructing a service object with injectable mandatory service dependencies whereby any bound service dependencies could no longer be available because another thread unregistered any of the bound service dependencies. Given that a ComponentContext is constructed only after all the service dependencies has been satisfied, if during ComponetContext construction any of the bound service dependencies are no nullptrs then throw and fail to construct the service object. This fixes a failure mode where a service constructor can be called with a nullptr service object when the service dependency is defined as mandatory and injection is true. Also noticed that one of the test bundle project was exceeding the path limit on Windows, so shortened the project name to mitigate that problem. Signed-off-by: The MathWorks, Inc. <jdicleme@mathworks.com> * Add more tests Added more tests and fixed up some error messaging Signed-off-by: The MathWorks, Inc. <jdicleme@mathworks.com> --------- Signed-off-by: The MathWorks, Inc. <jdicleme@mathworks.com> * Make a small performance improvement (#808) stop copying the std::pair in the range-based for. This helps improve the speed of RegisterService Signed-off-by: The MathWorks, Inc. <jdicleme@mathworks.com> * Nested ldap queries (#794) Added the capability to do ldap queries with nested keys. Queries are first checked against the compound key and if a value is found it is returned. If a value is not found, the key is split into segments on the "." character and then the AnyMap is "walked down" to look for a path to the value in sub-maps addressed by the segments of the key. So, if the value of the key "a.b.c" is queried, 1. Split the key into ["a","b","c"] 2. Check the top level map for a sub-map at key "a". If one is found, look in that map for a key "b" with a sub-map, and in that sub-map for a value with key "c". If found, return it. 3. If the top level map does NOT contain a key "a", look for a sub-map at key "a.b". If one is found, look in that sub-map for a value with a key of "c". If one is found, return it. 4. continue this algorithm down as many levels as there are segments until either the value for the last segment is found (in which case it is returned), or one is not found, in which case the lookup fails. * clang-tidy improvement for CMakeResourceDependencies (#812) CMakeResourceDependencies is often built by CMake in the context of users of CppMicroServices - if you've configured clang-tidy to run in the user project, it complains about the "old-style" constructor and requests a modernized "= default". Use --std=c++17 as minimum compile flag for explicit compilation of this file for MacOS. Signed-off-by: Ingmar Sittl <Ingmar.Sittl@elektrobit.com> * [ci skip] Update CHANGELOG.rst (#817) * [ci skip] Update CHANGELOG.rst [ci skip] Fixed 3.7.4 release notes * Update CHANGELOG.rst * [ci skip] Update release information for version 3.7.5 (#818) [ci skip] update versions and changelog * Updated MSVC Analysis to 0.1.1 and checkout to v3 (#824) * Nested ldap queries (#811) * disable support for nested filtering set -DSUPPORT_NESTED_LOOKUP to re-enable the algorithm. * Added comment describing enabling nested ldap queries. --------- Co-authored-by: Alexander Christoforides <38366659+achristoforides@users.noreply.github.com> * Add benchmark test infrastructure to DS (#813) * Added benchmark suite for DS - Added benchmark test for GetService for service provided by DS Signed-off-by: The MathWorks, Inc. <alchrist@mathworks.com> * Removed unnecessary lines from CMakeLists.txt for DS benchmark tests * Trying again * Refactored DS test directory to mimic 'framework' test structure * Fixed shadowed function * Actually fix the function shadowing this time? * Removed unnecessary bundles/link-time deps * Updated CHANGELOG.rst --------- Signed-off-by: The MathWorks, Inc. <alchrist@mathworks.com> Co-authored-by: alchrist <alchrist@mathworks.com> * Upgrade Build: Add Ubuntu 22.04, remove Ubuntu 18.04 (#810) Fixes #758 * Automate Performance Testing and Deploy Results (#829) * Create performance_windows.yml Adding new workflow for running performance tests Signed-off-by: The MathWorks, Inc. <aadityap@mathworks.com> * Using personal token Signed-off-by: The MathWorks, Inc. <aadityap@mathworks.com> * Revert "Using personal token" This reverts commit d672a80. * Uploading results to fork Signed-off-by: The MathWorks, Inc. <aadityap@mathworks.com> * removing https Signed-off-by: The MathWorks, Inc. <aadityap@mathworks.com> * Changing ph branch Signed-off-by: The MathWorks, Inc. <aadityap@mathworks.com> * Trying to deploy on another branch Signed-off-by: The MathWorks, Inc. <aadityap@mathworks.com> * Commit results to gh-pages branch Signed-off-by: The MathWorks, Inc. <aadityap@mathworks.com> * Added Performance Badge Signed-off-by: The MathWorks, Inc. <aadityap@mathworks.com> * Added target for performance badge Signed-off-by: The MathWorks, Inc. <aadityap@mathworks.com> * Update performance_windows.yml Signed-off-by: The MathWorks, Inc. <aadityap@mathworks.com> * Removing hardcoded paths - Using ENV instead of hard coded build paths - Increased threshold to 20% Signed-off-by: The MathWorks, Inc. <aadityap@mathworks.com> * Removed Cache operation Signed-off-by: The MathWorks, Inc. <aadityap@mathworks.com> * Removing performance branch from workflow Signed-off-by: The MathWorks, Inc. <aadityap@mathworks.com> * Name changed to CppMicroServices Benchmarks Signed-off-by: The MathWorks, Inc. <aadityap@mathworks.com> --------- Signed-off-by: The MathWorks, Inc. <aadityap@mathworks.com> Co-authored-by: Aaditya <aadityap@mathworks.com> * [ci skip] Update CHANGELOG.rst (#832) [ci skip] bring change log up to date with latest commits on the development branch * Fix undefined behavior in LDAPExpr::Trim (#835) if there is no space in the string on the second str.erase, calling str.find_last_not_of() returns std::string::npos. Trying to add 1 to npos leads to undefined behavior reported by UBSAN. Signed-off-by: Ingmar Sittl <ingmar.sittl@elektrobit.com> * Brian decl services (#833) * Performance micro-optimizations Signed-off-by: The MathWorks, Inc. <bweed@mathworks.com> * Fix formatting * More performance improvements * fixed up compilation errors. * deal with unused variable. * restore API ServiceRegistrationBase::SetProperties(ServiceProperties const&) --------- Signed-off-by: The MathWorks, Inc. <bweed@mathworks.com> Co-authored-by: Michael Carney <mike@carneyweb.com> * Update CHANGELOG.rst [ci skip] (#837) [ci skip] added #833 * ComponentManagermemory reallocation bug fix (#834) * ComponentManagermemory reallocation bug fix The ComponentManagerImpl object contained a shared_ptr to the vector of all ComponentManagerImpl objects. When adding an item to this vector, the resizing of the vector caused a memory allocation error. Fixed by removing the vector from the ComponentManagerImpl object. * Fix for ConfigurationNotifier::CreateFactoryComponent memory allocation error When a ComponentManager is created, it must be added to the managers map in SCRBundleExtension. This is necessary so that when the bundle is stopped, the ComponentManager can be destroyed. The old code was holding a shared_ptr to the managers map in the ComponentManagerImpl object. This caused a memory reallocation error when a ComponentManager was added to the map and the map needed to be resized. This fix adds an AddComponentManager method to the SCRBundleExtension object so that CreateFactoryComponent can add a manager to the managers map when it is created. In order to find the SCRBundleExtension, the map of SCRBundleExtensions was moved out of SCRActivator and into a new class called SCRExtensionRegistry. * Rest of the ConfigurationNotifier fix Signed-off-by: The MathWorks, Inc. <pelliott@mathworks.com> * Fix errors in minimum gcc build Signed-off by: The MathWorks Inc. < pelliott@mathworks.com> * Responded to code review comments Responded to code review comments. Added tests for SCRBundleExtension and SCRExtensionRegistry. Signed off by - The MathWorks, Inc. <pelliott@mathworks.com> * Update ConfigurationNotifier.cpp Update error message. Signed off by The MathWorks, Inc. <pelliott@mathworks.com> * Update SCRExtensionRegistry.hpp Formatting issue. signed-off by The MathWorks, Inc. <pelliott@mathworks.com> * CreateFactoryComponent changes ConfigurationNotifier::CreateFactoryComponent will log an exception if it can't find the SCRBundleExtension in the ExtensionRegistry instead of throwing a std::runtime_error exception. Signed-off-by: The MathWorks, Inc. <pelliott@mathworks.com> * Update ConfigurationNotifier.cpp Fixed call to std::exception. Signed-off-by The MathWorks, Inc. <pelliott@mathworks.com> * Update ConfigurationNotifier.cpp Removed throw in CreateFactoryComponent. Error message is already logged, no throw needed. Signed-off-by - The MathWorks, Inc. <pelliott@mathworks.com> --------- Signed-off-by: The MathWorks, Inc. <pelliott@mathworks.com> * [ci skip] Update CHANGELOG.rst (#839) [ci skip] Added bug fix to fix sporadic crash in DS caused by concurrent access to ComponentMgrImpl vector. Pull Request 834. * [ci skip] rev version (#842) Co-authored-by: Jeff DiClemente <jdicleme@mathworks.com> * Default any map type (#844) * Fixed undefined behavior in Any::operator==(value) * Revert "Fixed undefined behavior in Any::operator==(value)" This reverts commit 3066fe1. * Default AnyMap(map_type) constructor to UNORDERED_MAP_CASINSENSITIVE_KEYS * Remove CoreBundleContext.dataStorage clear (#845) Fixes #733 * Removing std::move use with const object [ci skip] (#848) * Removing std::move use with const [ci skip] Signed-off-by: Tahar Touati <touati.thr@gmail.com> * Addressing PR feedback, removing const from complex types and adding std move back [ci skip] Signed-off-by: Tahar Touati <touati.thr@gmail.com> --------- Signed-off-by: Tahar Touati <touati.thr@gmail.com> * [ci skip] Update Changelog for #845 (#847) * Update Chagelog for #845 [ci skip] * Update Changelog Unreleased section [ci skip] Signed-off-by: ShivamNegi <shivamnegi2019@gmail.com> --------- Signed-off-by: ShivamNegi <shivamnegi2019@gmail.com> * Fix warning "Use of BITWISE AND to check if a flag is set" (#849) Signed-off-by: Tahar Touati <touati.thr@gmail.com> * include cstdint in FileSystem.cpp (#850) vcpkg installation is failing, with this error: PATH/v3.6.0-e25b133cd3.clean/util/src/FileSystem.cpp:122:3: error: ‘uint32_t’ was not declared in this scope PATH/v3.6.0-e25b133cd3.clean/util/src/FileSystem.cpp:71:1: note: ‘uint32_t’ is defined in header ‘<cstdint>’; did you forget to ‘#include <cstdint>’? Sure enough, when patched with this it will build and install correctly with vcpkg. Other errors are reported but this is the culprit. * Fixes #840: removes manual reference counting (#841) * converted registration * compiled, not passeD * fixed weak_ptr error, now leaking mock objects * fixed bug, need to decrement ref count * updats from last week, test cases failing because of out of date expectations * all tests are passing with shared and weak pointers to serviceRegistrationBasePrivate * still passing tests, updated comments and cleaned up * updating to share dependents * new issue with dying service * added coreInfo, maybe passing * passing tests, removed manual ref counting from referenceBasePrivate, repeated all fast tests to ensure no sporadic failures * updated comments * updates before PR * Removed manual reference counting The manual reference counting in ServiceRegistrationBasePrivate and ServiceReferenceBasePrivate were removed. Additionally, some properties of ServiceRegistrationBasePrivate were offloaded to a new class ServiceRegistrationCoreInfo which both ServiceRegistrationBasePrivate and ServiceReferenceBasePrivate can access allowing ServiceReferenceBasePrivate to give up ownership of ServiceRegistrationBasePrivate. Signed-off-by: Toby Cormack <tcormack@mathworks.com> * Removed manual reference counting and merged with upstream (#840) The manual reference counting in ServiceRegistrationBasePrivate and ServiceReferenceBasePrivate were removed. Additionally, some properties of ServiceRegistrationBasePrivate were offloaded to a new class ServiceRegistrationCoreInfo which both ServiceRegistrationBasePrivate and ServiceReferenceBasePrivate can access allowing ServiceReferenceBasePrivate to give up ownership of ServiceRegistrationBasePrivate. Signed-off-by: Toby Cormack <tcormack@mathworks.com> * ServiceRegistrationCoreInfo now default destructor * Updated based on Patty's comments #840 * updated ServiceReferenceBase Constructors for clarity with shared_ptrs * removed 'move' from serviceRegistry * attempt at solving mac issue * updates for lock type and removing unneccessary functions from reference * lost lock * changed to custom atomic load * LockSet addition * threading support in LockSet * LockSet not threaded * no names in func dec * Incoorporated Jeff's Comments * Assignment operator didn't fail on my computer, did in github * updated for Jeff's 5/16 comments * clang update * mikes comments and fixes for multithreaded support * remove ifdefs from BundleRegistry, abide by rule of (0,3,5), and add comments --------- Signed-off-by: Toby Cormack <tcormack@mathworks.com> * Fixes #852: adds a [[nodiscard]] to BundleContext::RegisterService (#863) * noDiscard update first push * Jeff's comments, c++14 in cmakelists for makefile test, comments to reference nodiscard * [ci skip] Updated README to reflect correct compiler/OS versions (#862) [ci skip] * Fix code scanning alerts (#861) Fixes #860, #859, #858, #857, #856, #855, #853 * Ensure multiple listeners for the same factory PID are honoured by `ConfigurationNotifier::AnyListenersForPid` (#865) * Ensure multiple listeners for the same PID are honoured Signed-off-by: Conor Burgess <Burgess.Conor@gmail.com> * Fix formatting Signed-off-by: Conor Burgess <Burgess.Conor@gmail.com> --------- Signed-off-by: Conor Burgess <Burgess.Conor@gmail.com> Co-authored-by: cburgess <cburgess@mathworks.com> * Code scanning alert fix: Use of a moved from object #864 (#866) Fixes #864 * tests passing on linux, all files updated * Mike and Toby backat it again * changed second instance of warning? * reverted naming, final submit * Fix race condition when concurrently adding to SCRExtensionRegistry (#870) * Fix race condition when concurrently adding to SCRExtensionRegistry Fixed a race that can happen when multiple threads are trying to add to the extension registry container. Fixed a bug with the tests for SCRExtensionRegsitry class never being compiled and run. Signed-off-by: The MathWorks, Inc. <jdicleme@mathworks.com> * Fix #868: Recoups some of performance losses from PR #841 (#869) * fixed lockReg shared_ptr * down to 5% increase from original * get logs from github to verify behavior * reverting performance yml and adding move constructor (default) for RegistrationLocks : * #Issue873: Redundant calls to .Load() (#874) * first commit * test Case * revert test * test fix * naming * Fixes #718 (#876) Signed-off-by: Toby Cormack <tcormack@mathworks.com> * removed an empty line addition. * fixup some merge issues. * respond to code review feedback * code review feedback. * code review feedback. * Update TrackedService.h Remove underscore from names. * fixing merge * update _var naming convention * GetCustomizer_unlocked() addition * remove getTrackerAsCustomizer --------- Signed-off-by: The MathWorks, Inc. <jdicleme@mathworks.com> Signed-off-by: The MathWorks, Inc. <alchrist@mathworks.com> Signed-off-by: Ingmar Sittl <Ingmar.Sittl@elektrobit.com> Signed-off-by: The MathWorks, Inc. <aadityap@mathworks.com> Signed-off-by: Ingmar Sittl <ingmar.sittl@elektrobit.com> Signed-off-by: The MathWorks, Inc. <bweed@mathworks.com> Signed-off-by: The MathWorks, Inc. <pelliott@mathworks.com> Signed-off-by: Tahar Touati <touati.thr@gmail.com> Signed-off-by: ShivamNegi <shivamnegi2019@gmail.com> Signed-off-by: Toby Cormack <tcormack@mathworks.com> Signed-off-by: Conor Burgess <Burgess.Conor@gmail.com> Signed-off-by: Toby Cormack <tcormack@mathworks.com> Co-authored-by: Shane Riley <52603694+shane-riley@users.noreply.github.com> Co-authored-by: shane-riley (The Mathworks Inc.) <sriley@mathworks.com> Co-authored-by: xru192 <ryanxu123@gmail.com> Co-authored-by: xru192 <56376151+xru192@users.noreply.github.com> Co-authored-by: Jeff DiClemente <jeffdiclemente@users.noreply.github.com> Co-authored-by: Jeff DiClemente <jdicleme@mathworks.com> Co-authored-by: pelliott-mathworks <67922241+pelliott-mathworks@users.noreply.github.com> Co-authored-by: BrianWeed <brian_weed@yahoo.com> Co-authored-by: carneyweb <mike@carneyweb.com> Co-authored-by: Ingmar Sittl <79453136+insi-eb@users.noreply.github.com> Co-authored-by: alchrist <alchrist@mathworks.com> Co-authored-by: Shivam Negi <shivamnegi2019@gmail.com> Co-authored-by: Aaditya Sakharam Patil <36245341+aadityap-mathworks@users.noreply.github.com> Co-authored-by: Aaditya <aadityap@mathworks.com> Co-authored-by: thrtouati <124062546+thrtouati@users.noreply.github.com> Co-authored-by: Tristan Ayala <ayalat1@unlv.nevada.edu> Co-authored-by: tcormackMW <113473781+tcormackMW@users.noreply.github.com> Co-authored-by: Conor Burgess <Burgess.Conor@gmail.com> Co-authored-by: cburgess <cburgess@mathworks.com> Co-authored-by: tcormack <tcormack@mathworks.com> * CMake Updates for Boost Versioning Fix (#945) * cmake updates * behavior put in cmake function * usFunctionBoostPath update * Initializer list support (#942) * get latest on development * Added support for std::initializer_list constructurs Updated tests to use new initializer simplifying the code. * new clone. * fixed up some test code to make it compile on older compilers. * fixup. * updated some tests to check operator= * check. * fixed typo in comment. * added specific tests for initializer list support. * Revert "get latest on development" This reverts commit 639f61d. * test. * Revert "test." This reverts commit dd56818. * Revert "Revert "get latest on development"" This reverts commit 7ef9657. * Revert "Revert "Revert "get latest on development""" This reverts commit 6f4d982. * restore. * update google test to submodule version on development * update nowide version to match development * fixed up some comments. * ServiceComponent build tests cmake configuration (#949) * use cmake build type * set to debug by default * Fix #961 -- hashable references after destruction of RegistrationBase object (#962) * update hash function * test case working * update version --------- Signed-off-by: Tahar Touati <touati.thr@gmail.com> Signed-off-by: ShivamNegi <shivamnegi2019@gmail.com> Signed-off-by: Toby Cormack <tcormack@mathworks.com> Signed-off-by: Conor Burgess <Burgess.Conor@gmail.com> Signed-off-by: The MathWorks, Inc. <jdicleme@mathworks.com> Signed-off-by: Toby Cormack <tcormack@mathworks.com> Signed-off-by: tcormack <tcormack@mathworks.com> Signed-off-by: The MathWorks, Inc. aadityap@mathworks.com Signed-off-by: Ingmar Sittl <ingmar.sittl@elektrobit.com> Signed-off-by: Ingmar Sittl <Ingmar.Sittl@elektrobit.com> Signed-off-by: Shivam Negi <snegi@mathworks.com> Signed-off-by: The MathWorks, Inc. <alchrist@mathworks.com> Signed-off-by: The MathWorks, Inc. <aadityap@mathworks.com> Signed-off-by: The MathWorks, Inc. <bweed@mathworks.com> Signed-off-by: The MathWorks, Inc. <pelliott@mathworks.com> Co-authored-by: carneyweb <mike@carneyweb.com> Co-authored-by: Shivam Negi <shivamnegi2019@gmail.com> Co-authored-by: thrtouati <124062546+thrtouati@users.noreply.github.com> Co-authored-by: Tristan Ayala <ayalat1@unlv.nevada.edu> Co-authored-by: Jeff DiClemente <jeffdiclemente@users.noreply.github.com> Co-authored-by: Conor Burgess <Burgess.Conor@gmail.com> Co-authored-by: cburgess <cburgess@mathworks.com> Co-authored-by: Aaditya Sakharam Patil <36245341+aadityap-mathworks@users.noreply.github.com> Co-authored-by: aadityap <aadityap@mathworks.com> Co-authored-by: Ingmar Sittl <79453136+insi-eb@users.noreply.github.com> Co-authored-by: Monika032 <monikaphadnis24@gmail.com> Co-authored-by: mphadnis <mphadnis@mathworks.com> Co-authored-by: Alexander Christoforides <38366659+achristoforides@users.noreply.github.com> Co-authored-by: Shane Riley <52603694+shane-riley@users.noreply.github.com> Co-authored-by: shane-riley (The Mathworks Inc.) <sriley@mathworks.com> Co-authored-by: xru192 <ryanxu123@gmail.com> Co-authored-by: xru192 <56376151+xru192@users.noreply.github.com> Co-authored-by: Jeff DiClemente <jdicleme@mathworks.com> Co-authored-by: pelliott-mathworks <67922241+pelliott-mathworks@users.noreply.github.com> Co-authored-by: BrianWeed <brian_weed@yahoo.com> Co-authored-by: alchrist <alchrist@mathworks.com>
* Update CHANGELOG.rst For version 3.7.4 release * Update CHANGELOG.rst * Update CHANGELOG.rst * Update CHANGELOG.rst Fixed 3.7.4 release notes * Update CHANGELOG.rst * Performance improvement from `brian-performance` branch (#728) * Prototype performance improvements * Reverted AnyMap hash change Signed-off-by: The MathWorks, Inc. <alchrist@mathworks.com> * Fixed unused variable warnings * Made changes requested by reviewers * Made changes requested by reviewer * Back out a performance improvement Backing out a performance improvement as it creates a deadlock caused by mutex order locking. Signed-off-by: The MathWorks, Inc. <jdicleme@mathworks.com> Signed-off-by: The MathWorks, Inc. <alchrist@mathworks.com> Signed-off-by: The MathWorks, Inc. <jdicleme@mathworks.com> Co-authored-by: BrianWeed <brian_weed@yahoo.com> Co-authored-by: jdicleme <jeffdiclemente@users.noreply.github.com> Co-authored-by: Jeff <DiClemente> * Fix ub in any (#777) * Fixed undefined behavior in Any::operator==(value) * Revert "Fixed undefined behavior in Any::operator==(value)" This reverts commit 3066fe1128da0aad1215e811be7ddf211b56be77. * Fixed undefined behavior in Any::operator==(value) * removed unnecessary forward declaration. * Fixed undefined behavior in Any::operator==(value) * removed unnecessary forward declaration. * Fix race with DS service object construction (#801) * Fix race with DS service object construction A race occurs when DS is constructing a service object with injectable mandatory service dependencies whereby any bound service dependencies could no longer be available because another thread unregistered any of the bound service dependencies. Given that a ComponentContext is constructed only after all the service dependencies has been satisfied, if during ComponetContext construction any of the bound service dependencies are no nullptrs then throw and fail to construct the service object. This fixes a failure mode where a service constructor can be called with a nullptr service object when the service dependency is defined as mandatory and injection is true. Also noticed that one of the test bundle project was exceeding the path limit on Windows, so shortened the project name to mitigate that problem. Signed-off-by: The MathWorks, Inc. <jdicleme@mathworks.com> * Add more tests Added more tests and fixed up some error messaging Signed-off-by: The MathWorks, Inc. <jdicleme@mathworks.com> --------- Signed-off-by: The MathWorks, Inc. <jdicleme@mathworks.com> * Make a small performance improvement (#808) stop copying the std::pair in the range-based for. This helps improve the speed of RegisterService Signed-off-by: The MathWorks, Inc. <jdicleme@mathworks.com> * [ci skip] Update release information for version 3.7.5 (#818) [ci skip] update versions and changelog * update version * [ci-skip] Merge branch 'Release-3.8' (#974) * Default any map type (#844) * Fixed undefined behavior in Any::operator==(value) * Revert "Fixed undefined behavior in Any::operator==(value)" This reverts commit 3066fe1128da0aad1215e811be7ddf211b56be77. * Default AnyMap(map_type) constructor to UNORDERED_MAP_CASINSENSITIVE_KEYS * Remove CoreBundleContext.dataStorage clear (#845) Fixes #733 * Removing std::move use with const object [ci skip] (#848) * Removing std::move use with const [ci skip] Signed-off-by: Tahar Touati <touati.thr@gmail.com> * Addressing PR feedback, removing const from complex types and adding std move back [ci skip] Signed-off-by: Tahar Touati <touati.thr@gmail.com> --------- Signed-off-by: Tahar Touati <touati.thr@gmail.com> * [ci skip] Update Changelog for #845 (#847) * Update Chagelog for #845 [ci skip] * Update Changelog Unreleased section [ci skip] Signed-off-by: ShivamNegi <shivamnegi2019@gmail.com> --------- Signed-off-by: ShivamNegi <shivamnegi2019@gmail.com> * Fix warning "Use of BITWISE AND to check if a flag is set" (#849) Signed-off-by: Tahar Touati <touati.thr@gmail.com> * include cstdint in FileSystem.cpp (#850) vcpkg installation is failing, with this error: PATH/v3.6.0-e25b133cd3.clean/util/src/FileSystem.cpp:122:3: error: ‘uint32_t’ was not declared in this scope PATH/v3.6.0-e25b133cd3.clean/util/src/FileSystem.cpp:71:1: note: ‘uint32_t’ is defined in header ‘<cstdint>’; did you forget to ‘#include <cstdint>’? Sure enough, when patched with this it will build and install correctly with vcpkg. Other errors are reported but this is the culprit. * Fixes #840: removes manual reference counting (#841) * converted registration * compiled, not passeD * fixed weak_ptr error, now leaking mock objects * fixed bug, need to decrement ref count * updats from last week, test cases failing because of out of date expectations * all tests are passing with shared and weak pointers to serviceRegistrationBasePrivate * still passing tests, updated comments and cleaned up * updating to share dependents * new issue with dying service * added coreInfo, maybe passing * passing tests, removed manual ref counting from referenceBasePrivate, repeated all fast tests to ensure no sporadic failures * updated comments * updates before PR * Removed manual reference counting The manual reference counting in ServiceRegistrationBasePrivate and ServiceReferenceBasePrivate were removed. Additionally, some properties of ServiceRegistrationBasePrivate were offloaded to a new class ServiceRegistrationCoreInfo which both ServiceRegistrationBasePrivate and ServiceReferenceBasePrivate can access allowing ServiceReferenceBasePrivate to give up ownership of ServiceRegistrationBasePrivate. Signed-off-by: Toby Cormack <tcormack@mathworks.com> * Removed manual reference counting and merged with upstream (#840) The manual reference counting in ServiceRegistrationBasePrivate and ServiceReferenceBasePrivate were removed. Additionally, some properties of ServiceRegistrationBasePrivate were offloaded to a new class ServiceRegistrationCoreInfo which both ServiceRegistrationBasePrivate and ServiceReferenceBasePrivate can access allowing ServiceReferenceBasePrivate to give up ownership of ServiceRegistrationBasePrivate. Signed-off-by: Toby Cormack <tcormack@mathworks.com> * ServiceRegistrationCoreInfo now default destructor * Updated based on Patty's comments #840 * updated ServiceReferenceBase Constructors for clarity with shared_ptrs * removed 'move' from serviceRegistry * attempt at solving mac issue * updates for lock type and removing unneccessary functions from reference * lost lock * changed to custom atomic load * LockSet addition * threading support in LockSet * LockSet not threaded * no names in func dec * Incoorporated Jeff's Comments * Assignment operator didn't fail on my computer, did in github * updated for Jeff's 5/16 comments * clang update * mikes comments and fixes for multithreaded support * remove ifdefs from BundleRegistry, abide by rule of (0,3,5), and add comments --------- Signed-off-by: Toby Cormack <tcormack@mathworks.com> * Fixes #852: adds a [[nodiscard]] to BundleContext::RegisterService (#863) * noDiscard update first push * Jeff's comments, c++14 in cmakelists for makefile test, comments to reference nodiscard * [ci skip] Updated README to reflect correct compiler/OS versions (#862) [ci skip] * Fix code scanning alerts (#861) Fixes #860, #859, #858, #857, #856, #855, #853 * Ensure multiple listeners for the same factory PID are honoured by `ConfigurationNotifier::AnyListenersForPid` (#865) * Ensure multiple listeners for the same PID are honoured Signed-off-by: Conor Burgess <Burgess.Conor@gmail.com> * Fix formatting Signed-off-by: Conor Burgess <Burgess.Conor@gmail.com> --------- Signed-off-by: Conor Burgess <Burgess.Conor@gmail.com> Co-authored-by: cburgess <cburgess@mathworks.com> * Code scanning alert fix: Use of a moved from object #864 (#866) Fixes #864 * tests passing on linux, all files updated * Mike and Toby backat it again * changed second instance of warning? * reverted naming, final submit * Fix race condition when concurrently adding to SCRExtensionRegistry (#870) * Fix race condition when concurrently adding to SCRExtensionRegistry Fixed a race that can happen when multiple threads are trying to add to the extension registry container. Fixed a bug with the tests for SCRExtensionRegsitry class never being compiled and run. Signed-off-by: The MathWorks, Inc. <jdicleme@mathworks.com> * Fix #868: Recoups some of performance losses from PR #841 (#869) * fixed lockReg shared_ptr * down to 5% increase from original * get logs from github to verify behavior * reverting performance yml and adding move constructor (default) for RegistrationLocks : * #Issue873: Redundant calls to .Load() (#874) * first commit * test Case * revert test * test fix * naming * Fixes #718 (#876) Signed-off-by: Toby Cormack <tcormack@mathworks.com> * Fix #489 - Char Const* property (#877) * Added case for char const* Signed-off-by: tcormack <tcormack@mathworks.com> * formatting --------- Signed-off-by: tcormack <tcormack@mathworks.com> * Fix #879 Change TPP extensions (#880) Signed-off-by: tcormack <tcormack@mathworks.com> * Fix #881 Reformat `.hpp` files with Clang * Fix #846 (#878) * firstCommit * events is all wait for false flags * removed txt files Signed-off-by: tcormack <tcormack@mathworks.com> * serviceTracker tsan fixes Signed-off-by: tcormack <tcormack@mathworks.com> * deleted txt Signed-off-by: tcormack <tcormack@mathworks.com> * tsanSupppressions updated for various tests Signed-off-by: tcormack <tcormack@mathworks.com> * removed text files Signed-off-by: tcormack <tcormack@mathworks.com> * removed test * added comment Signed-off-by: tcormack <tcormack@mathworks.com> * updated suppresssions file with commentss * add sleep to stop spin * add unused flag to lock Signed-off-by: tcormack <tcormack@mathworks.com> * revert reformat * formatting * formatting * reformat * updating comments * update comment --------- Signed-off-by: tcormack <tcormack@mathworks.com> * Fix #710 ServiceTracker TSAN warnings (#883) * fixed tracker race * fixing tsanSupp * fixing tsan mistakes * fixed tracker race * tsan_suppresssions mistype * fixed comments * typos * Fix #872 (#875) Remove Statics in MultipleListenersTest.cpp and ServiceHooksTest.cpp Signed-off-by: tcormack <tcormack@mathworks.com> * Remove unwanted branches from workflow (#902) Co-authored-by: aadityap <aadityap@mathworks.com> * Fix #920 serviceTracker segfault on concurrent `tracker.Close()` and `framework.Stop()` (#922) Signed-off-by: tcormack <tcormack@mathworks.com> * Add condition on development branch (#916) * Add condition on development branch Signed-off-by: The MathWorks, Inc. aadityap@mathworks.com Co-authored-by: aadityap <aadityap@mathworks.com> * Fix #926 Custom CppMicroServices Boost Namespace (#929) Signed-off-by: tcormack <tcormack@mathworks.com> * Update 3rd party dependencies to versions from c++14-compliant branch (#930) * update googletest to release 1.14.0 * update spdlog to version 1.12.0 * update boost nowide to latest commit from standalone branch * update absl to Abseil LTS 20230125.3 * Updated amalgamated jsoncpp to 1.9.5 This also fixes compiler warnings Signed-off-by: Ingmar Sittl <ingmar.sittl@elektrobit.com> * Upgrade miniz to 3.0.2 release Signed-off-by: Ingmar Sittl <ingmar.sittl@elektrobit.com> --------- Signed-off-by: Ingmar Sittl <ingmar.sittl@elektrobit.com> * Fix issues with gcc-12 and clang-16 (#932) * Remove unused variable to fix clang-16 warning * Addd missing include when using libstdc++ headers from gcc-12 Signed-off-by: Ingmar Sittl <Ingmar.Sittl@elektrobit.com> * Fix Redundant Bundle Validation checks (#921) Signed-off-by: Shivam Negi <snegi@mathworks.com> * Fix #913 ServiceTracker deadlock (#915) Signed-off-by: tcormack <tcormack@mathworks.com> * Adding support for multiple cardinality for service references. (#871) * Adding support for multiple cardinality for service references. Signed-off-by: The MathWorks, Inc. mphadnis@mathworks.com * Fixing build failures on Linux/Maci platform * Addressing feedbacks: minor code changes + modifications in unitttests. Signed-off-by: The MathWorks, Inc. <mphadnis@mathworks.com> * Modified test point to check for compile time errors. Fixed formatting in test file. Signed-off-by: The MathWorks, Inc. mphadnis@mathworks.com * Changes to automate existing ServiceComponent tests using CMake as compile-only tests. Signed-off-by: The MathWorks, Inc. mphadnis@mathworks.com * Fixing clang formatting for test files. Signed-off-by: The MathWorks, Inc. mphadnis@mathworks.com * Improvising compile time tests based on feedbacks. Signed-off-by: The MathWorks, Inc. mphadnis@mathworks.com * Added doxygen comments to new methods in ReferenceManager Signed-off-by: The MathWorks, Inc. mphadnis@mathworks.com --------- Co-authored-by: mphadnis <mphadnis@mathworks.com> * Fix #938 Boost namespace Versioning and remove absl dependency (#939) * Revert "Fix #926 Custom CppMicroServices Boost Namespace (#929)" This reverts commit aab89e36401b6ec84e121597a517dfb5c2e2263e. Remove commit to reset to original boost namespace * Change Cmake Infrastructure to allow custom Boost library use and remove old commit that changed boost namespace * abseil dependency removal * fix double forward -- maybe, this may be slow * references instead of copies * cmake update * Fix #937 `GetServiceReferences` ordering guarantee (#943) Signed-off-by: tcormack <tcormack@mathworks.com> * BundleTracker Implementation (#726) * Bundle tracker (#709) * BundleTracker stubs * Generalize BundleAbstractTracked * Implement BundleTracker * Implement BundleTracker in DeclarativeServices using raw pointers * Use std::optional in BundleTracker API * BundleTracker template instantiations * Create initial tests * Move BundleTrackerTest.cpp * Update BundleTrackerTest.cpp * Implement TestGetTrackingCountClosed * Implement GetTrackingCount tests * Modify tests relating to unknown expected behavior * Implement TestGetTracked and TestOpenOpened * Update build_and_test_windows.yml * Implement and update tests * Update tests * Use shared ptr for BundleTrackerCustomizer * Implement and update tests * Implement and update tests * Rename method test file and fixture * Update method tests * Add TODOs * Add branch to ci * Update CXX_STANDARD to 17 for doc * various fixes * Update CMakeLIsts * Create BundleTrackerCustomCallbackTest.cpp * Implement and update custom callback tests * Update build_and_test_nix.yml * Update custom callback tests * Implement test subset * Resolve cross-platform build issues * Implement and update tests * Implement and update tests * Further CI fixes * Update method tests * Update method tests to handle build shared libraries off * Update custom callback tests to handle build shared libraries off * Implement CreateStateMask variadic * Implement and update method tests * Implement test * Update tests to use state mask creator * Implement custom callback tests * Create concurrency tests * Use std::optional for GetObject * Update custom callback tests * Ignore bundleEvents without state changes * Use std::optional for GetCustomizedObject * Update GetObject test * Do not imply implicit cast from std::optional * Update custom callback tests * Add lock checkout for Remove() * Update method tests * Update tests * Hide _CreateStateMask * Remove DS integration * Snap changes * Implement concurrency tests * Amend CreateStateMask * Update CreateStateMask calls * Change .yml files * Update formatting * Update tests * Move listener removal inside syncronised region * Add BundleTracker to workflow * Additional standardization * Drop workflows changes * Implement performance tests * Update tests with unclear expectations - Adds comments explaining the EXPECT_CALL statements expecting any number of RemovedBundle callbacks - Updates where the expected behavior of "Close() calling RemovedBundle on tracked bundles" is tested, also adding a comment to make this fact clear * Add newline at end of file * Review updates * Change API types * Avoid frivolous using statements in BundleTracker * Remove BundleTracker tpp file * Add forward declarations * Clear cross-platform build warnings * Bundle-Tracker OSGi TrackingCount behavior * Remove implementation tpp files * Adjust TrackingCount() based on 702 Co-authored-by: shane-riley (The Mathworks Inc.) <sriley@mathworks.com> Co-authored-by: xru192 <ryanxu123@gmail.com> Co-authored-by: xru192 <56376151+xru192@users.noreply.github.com> Co-authored-by: Alexander Christoforides <38366659+achristoforides@users.noreply.github.com> * Upgrade jsoncpp (#773) Fixes #772 Upgrade version of jsoncpp to 1.9.5 to include fix for deprecated sprintf usage. Upgrading introduced a new unneeded-internal-declaration warning which is set as a warning instead of error. Signed-off-by: The MathWorks, Inc. <jdicleme@mathworks.com> Signed-off-by: The MathWorks, Inc. <jdicleme@mathworks.com> Co-authored-by: Jeff DiClemente <jdicleme@mathworks.com> * Fixed sporadic race conditions during framework shutdown (#725) Fixed a number of races that can occur while one thread is performing various framework operations and another thread is shutting down the framework. Signed-off-by: The MathWorks, Inc. <jdicleme@mathworks.com> Signed-off-by: The MathWorks, Inc. <jdicleme@mathworks.com> Co-authored-by: Jeff <DiClemente> * Fix race that results in a missed config updated event (#727) * Fix race that results in a missed config updated event Fixed races that can cause a ManagedService or ManagedServiceFactory to miss being called when a configuraiton object is updated. Signed-off-by: The MathWorks, Inc. <jdicleme@mathworks.com> * Update ComponentInstanceImpl.hpp (#724) * Update ComponentInstanceImpl.hpp Improve error message that is generated when an appropriate constructor isn't found for the Service Instance. Signed-off-by, The MathWorks, Inc. <pelliott@mathworks.com> * Factory Configuration Bug Fix (#731) * Factory Configuration Bug Fix When factory configurations are created before the bundle containing the factory component is installed and started, DS should find those configurations in the Configuration Admin repository and register them as part of the factory component startup. Signed-off-by The MathWorks, Inc. <pelliott@mathworks.com> * Factory Configuration Bug fix Addressed code review feedback. Signed-off-by The MathWorks, Inc. <pelliott@mathworks.com> * Update ComponentConfigurationImpl.cpp Fixed compilation failure in Ubuntu Minimum Gcc build. Signed-off-by The MathWorks, Inc. <pelliott@mathworks.com> * Update TestFactoryPid.cpp Change auto const to constexpr. Signed-off-by The MathWorks, Inc. <pelliott@mathworks.com> * Revert PR #713 (#744) This change is causing an untenable amount of noise in log output. Backing out for now. A better solution to the problem of logging service dependency errors is needed. Signed-off-by: The MathWorks, Inc. <jdicleme@mathworks.com> * Update version numbers for cppms upgrade (#748) Update version numbers for cppms upgrade to version 3.7.4. Signed-off-by The MathWorks, Inc. <pelliott@mathworks.com> * Fix deadlock in ConfigurationAdminImpl::RemoveConfigurations (#745) * Fix deadlock in ConfigurationAdminImpl::RemoveConfigurations This is a fix for a deadlock bug caused by the WaitForAllAsync in ConfigurationAdmin::RemoveConfigurations. The Use Case is as follows: A configuration object is defined in the manifest.json file. The User's main thread stopped the bundle which causes the ConfigurationAdminImp::RemoveConfigurations method to remove the configuration object from the ConfigurationAdmin repository and to send an Updated notification to the service instance. RemoveConfigurations would then execute a WaitForAllAsync to wait for all asynchronous threads to complete including the asynchronous thread that was launched as part of the Updated notification. The user's Updated method also tried to stop the bundle. This means that it had to wait for the RemoveConfigurations method to complete. Each thread was waiting for the other to complete. This fix removes the WaitForAllAsync and adds a test case to confirm the deadlock is gone. Signed-off-by The MathWorks, Inc. <pelliott@mathworks.com> * Fix compiler error Fix compiler error in Minimum Gcc build. Signed-off-by The MathWorks, Inc. <pelliott@mathworks.com> * Change ConfigAdminTests.testManagedServiceRemoveConfigurationsDeadlock Change ConfigAdminTests.testManagedServiceRemoveConfigurationsDeadlock so that it more closely matches the use case that caused the deadlock. Signed-off-by The MathWorks, Inc. <pelliott@mathworks.com> * Update TestConfigAdmin.cpp testManagedServiceRemoveConfigurationsDeadlock test. Changed Updated method to make sure that it only stops the bundle containing the cm.testdeadlock configuration object. Signed-off-by The MathWorks, Inc. <pelliott@mathworks.com> * Update TestConfigAdmin.cpp Added error checking for the Updated method used in testManagedServiceRemoveConfigurationsDeadlock. Signed-off-by The MathWorks, Inc. <pelliott@mathworks.com> * configurations using the same pid are not updated properly (#754) * configurations using the same pid are not updated properly Fixed an issue whereby re-using a configuration pid did not cause the configuration to be sent to the ManagedService/ManagedServiceFactory correctly. * Remove last change count instead of setting it to zero Co-authored-by: jdicleme <jdicleme@mathworks.com> * Ensure ~SCRBundleExtension does not throw (#761) * Ensure ~SCRBundleExtension does not throw It's possible for the bundle to be stopped before ~SCRBundleExtension accesses the bundle, causing an exception to be thrown and an abort. This change ensures the destructor does not throw. * Fix valgrind errors Moved cleanup of SCRBundleExtension members to make sure these objects are destroyed when an exception is thrown from DisableAndRemoveAllComponentManagers. Signed-off-by: The MathWorks, Inc. <jdicleme@mathworks.com> * Fix valgrind error Missed another error path where cleanup is necessary Signed-off-by: The MathWorks, Inc. <jdicleme@mathworks.com> Signed-off-by: The MathWorks, Inc. <jdicleme@mathworks.com> Co-authored-by: jdicleme <jdicleme@mathworks.com> * clang-format ran for all files (#759) Signed-off-by: The MathWorks, Inc. <alchrist@mathworks.com> Signed-off-by: The MathWorks, Inc. <alchrist@mathworks.com> * Rev DS and ConfigAdmin versions for release (#762) prepare ds and configadmin for a bug fix release Signed-off-by: The MathWorks, Inc. <jdicleme@mathworks.com> Signed-off-by: The MathWorks, Inc. <jdicleme@mathworks.com> Co-authored-by: jdicleme <jdicleme@mathworks.com> * Clang-format git hook pre-commit enforcement (#760) * Added clang-format git pre-commit hook Signed-off-by: The MathWorks, Inc. <alchrist@mathworks.com> * Updated README * Updated help instructions to include '--style=file' * Added '--style=file' flag in actual pre-commit hook check * Updated README * Removed unnecessary code in pre-commit hook * Updated README Signed-off-by: The MathWorks, Inc. <alchrist@mathworks.com> * Update changelog [ci skip] (#765) * Update Changelog to include missing changes [ci skip] Signed-off-by: The MathWorks, Inc. <jdicleme@mathworks.com> * rebase onto development. * Fix broken static build configurations on macOS (#774) * Fix broken static build configurations on macOS Fixes #738 Removed the ability to append ZIP files to the end of archives files for all supported OS platforms. Specifically the clang linker no longer tolerates linking archive files with arbitrary data appended to the end. Signed-off-by: The MathWorks, Inc. <jdicleme@mathworks.com> * Fix examples tests the tutorial example has tests which use an installed CppMicroServices SDK to test whether the example code can be compiled using the SDK. In this case, the CppMicroServices target property doesn't have the path to the metadata zip set. To resolve this issue: 1. install the metadata zip files alongside the static libraries for all CppMicroServices components only if building static libraries. 2. Set this property for cases where the CppMicroServices SDK is used by downstream clients. Signed-off-by: The MathWorks, Inc. <jdicleme@mathworks.com> Signed-off-by: The MathWorks, Inc. <jdicleme@mathworks.com> Co-authored-by: Jeff <DiClemente> * Support arm64 on macOS (#778) Fixes #674 Add support for arm64 on macOS Signed-off-by: The MathWorks, Inc. <jdicleme@mathworks.com> Signed-off-by: The MathWorks, Inc. <jdicleme@mathworks.com> * Performance improvement from `brian-performance` branch (#728) * Prototype performance improvements * Reverted AnyMap hash change Signed-off-by: The MathWorks, Inc. <alchrist@mathworks.com> * Fixed unused variable warnings * Made changes requested by reviewers * Made changes requested by reviewer * Back out a performance improvement Backing out a performance improvement as it creates a deadlock caused by mutex order locking. Signed-off-by: The MathWorks, Inc. <jdicleme@mathworks.com> Signed-off-by: The MathWorks, Inc. <alchrist@mathworks.com> Signed-off-by: The MathWorks, Inc. <jdicleme@mathworks.com> Co-authored-by: BrianWeed <brian_weed@yahoo.com> Co-authored-by: jdicleme <jeffdiclemente@users.noreply.github.com> Co-authored-by: Jeff <DiClemente> * Fix ub in any (#777) * Fixed undefined behavior in Any::operator==(value) * Revert "Fixed undefined behavior in Any::operator==(value)" This reverts commit 3066fe1128da0aad1215e811be7ddf211b56be77. * Fixed undefined behavior in Any::operator==(value) * removed unnecessary forward declaration. * Fixed undefined behavior in Any::operator==(value) * removed unnecessary forward declaration. * Fix race with DS service object construction (#801) * Fix race with DS service object construction A race occurs when DS is constructing a service object with injectable mandatory service dependencies whereby any bound service dependencies could no longer be available because another thread unregistered any of the bound service dependencies. Given that a ComponentContext is constructed only after all the service dependencies has been satisfied, if during ComponetContext construction any of the bound service dependencies are no nullptrs then throw and fail to construct the service object. This fixes a failure mode where a service constructor can be called with a nullptr service object when the service dependency is defined as mandatory and injection is true. Also noticed that one of the test bundle project was exceeding the path limit on Windows, so shortened the project name to mitigate that problem. Signed-off-by: The MathWorks, Inc. <jdicleme@mathworks.com> * Add more tests Added more tests and fixed up some error messaging Signed-off-by: The MathWorks, Inc. <jdicleme@mathworks.com> --------- Signed-off-by: The MathWorks, Inc. <jdicleme@mathworks.com> * Make a small performance improvement (#808) stop copying the std::pair in the range-based for. This helps improve the speed of RegisterService Signed-off-by: The MathWorks, Inc. <jdicleme@mathworks.com> * Nested ldap queries (#794) Added the capability to do ldap queries with nested keys. Queries are first checked against the compound key and if a value is found it is returned. If a value is not found, the key is split into segments on the "." character and then the AnyMap is "walked down" to look for a path to the value in sub-maps addressed by the segments of the key. So, if the value of the key "a.b.c" is queried, 1. Split the key into ["a","b","c"] 2. Check the top level map for a sub-map at key "a". If one is found, look in that map for a key "b" with a sub-map, and in that sub-map for a value with key "c". If found, return it. 3. If the top level map does NOT contain a key "a", look for a sub-map at key "a.b". If one is found, look in that sub-map for a value with a key of "c". If one is found, return it. 4. continue this algorithm down as many levels as there are segments until either the value for the last segment is found (in which case it is returned), or one is not found, in which case the lookup fails. * clang-tidy improvement for CMakeResourceDependencies (#812) CMakeResourceDependencies is often built by CMake in the context of users of CppMicroServices - if you've configured clang-tidy to run in the user project, it complains about the "old-style" constructor and requests a modernized "= default". Use --std=c++17 as minimum compile flag for explicit compilation of this file for MacOS. Signed-off-by: Ingmar Sittl <Ingmar.Sittl@elektrobit.com> * [ci skip] Update CHANGELOG.rst (#817) * [ci skip] Update CHANGELOG.rst [ci skip] Fixed 3.7.4 release notes * Update CHANGELOG.rst * [ci skip] Update release information for version 3.7.5 (#818) [ci skip] update versions and changelog * Updated MSVC Analysis to 0.1.1 and checkout to v3 (#824) * Nested ldap queries (#811) * disable support for nested filtering set -DSUPPORT_NESTED_LOOKUP to re-enable the algorithm. * Added comment describing enabling nested ldap queries. --------- Co-authored-by: Alexander Christoforides <38366659+achristoforides@users.noreply.github.com> * Add benchmark test infrastructure to DS (#813) * Added benchmark suite for DS - Added benchmark test for GetService for service provided by DS Signed-off-by: The MathWorks, Inc. <alchrist@mathworks.com> * Removed unnecessary lines from CMakeLists.txt for DS benchmark tests * Trying again * Refactored DS test directory to mimic 'framework' test structure * Fixed shadowed function * Actually fix the function shadowing this time? * Removed unnecessary bundles/link-time deps * Updated CHANGELOG.rst --------- Signed-off-by: The MathWorks, Inc. <alchrist@mathworks.com> Co-authored-by: alchrist <alchrist@mathworks.com> * Upgrade Build: Add Ubuntu 22.04, remove Ubuntu 18.04 (#810) Fixes #758 * Automate Performance Testing and Deploy Results (#829) * Create performance_windows.yml Adding new workflow for running performance tests Signed-off-by: The MathWorks, Inc. <aadityap@mathworks.com> * Using personal token Signed-off-by: The MathWorks, Inc. <aadityap@mathworks.com> * Revert "Using personal token" This reverts commit d672a801b6d11f9b8d72a54ae1de849179523a06. * Uploading results to fork Signed-off-by: The MathWorks, Inc. <aadityap@mathworks.com> * removing https Signed-off-by: The MathWorks, Inc. <aadityap@mathworks.com> * Changing ph branch Signed-off-by: The MathWorks, Inc. <aadityap@mathworks.com> * Trying to deploy on another branch Signed-off-by: The MathWorks, Inc. <aadityap@mathworks.com> * Commit results to gh-pages branch Signed-off-by: The MathWorks, Inc. <aadityap@mathworks.com> * Added Performance Badge Signed-off-by: The MathWorks, Inc. <aadityap@mathworks.com> * Added target for performance badge Signed-off-by: The MathWorks, Inc. <aadityap@mathworks.com> * Update performance_windows.yml Signed-off-by: The MathWorks, Inc. <aadityap@mathworks.com> * Removing hardcoded paths - Using ENV instead of hard coded build paths - Increased threshold to 20% Signed-off-by: The MathWorks, Inc. <aadityap@mathworks.com> * Removed Cache operation Signed-off-by: The MathWorks, Inc. <aadityap@mathworks.com> * Removing performance branch from workflow Signed-off-by: The MathWorks, Inc. <aadityap@mathworks.com> * Name changed to CppMicroServices Benchmarks Signed-off-by: The MathWorks, Inc. <aadityap@mathworks.com> --------- Signed-off-by: The MathWorks, Inc. <aadityap@mathworks.com> Co-authored-by: Aaditya <aadityap@mathworks.com> * [ci skip] Update CHANGELOG.rst (#832) [ci skip] bring change log up to date with latest commits on the development branch * Fix undefined behavior in LDAPExpr::Trim (#835) if there is no space in the string on the second str.erase, calling str.find_last_not_of() returns std::string::npos. Trying to add 1 to npos leads to undefined behavior reported by UBSAN. Signed-off-by: Ingmar Sittl <ingmar.sittl@elektrobit.com> * Brian decl services (#833) * Performance micro-optimizations Signed-off-by: The MathWorks, Inc. <bweed@mathworks.com> * Fix formatting * More performance improvements * fixed up compilation errors. * deal with unused variable. * restore API ServiceRegistrationBase::SetProperties(ServiceProperties const&) --------- Signed-off-by: The MathWorks, Inc. <bweed@mathworks.com> Co-authored-by: Michael Carney <mike@carneyweb.com> * Update CHANGELOG.rst [ci skip] (#837) [ci skip] added https://github.com/CppMicroServices/CppMicroServices/pull/833 * ComponentManagermemory reallocation bug fix (#834) * ComponentManagermemory reallocation bug fix The ComponentManagerImpl object contained a shared_ptr to the vector of all ComponentManagerImpl objects. When adding an item to this vector, the resizing of the vector caused a memory allocation error. Fixed by removing the vector from the ComponentManagerImpl object. * Fix for ConfigurationNotifier::CreateFactoryComponent memory allocation error When a ComponentManager is created, it must be added to the managers map in SCRBundleExtension. This is necessary so that when the bundle is stopped, the ComponentManager can be destroyed. The old code was holding a shared_ptr to the managers map in the ComponentManagerImpl object. This caused a memory reallocation error when a ComponentManager was added to the map and the map needed to be resized. This fix adds an AddComponentManager method to the SCRBundleExtension object so that CreateFactoryComponent can add a manager to the managers map when it is created. In order to find the SCRBundleExtension, the map of SCRBundleExtensions was moved out of SCRActivator and into a new class called SCRExtensionRegistry. * Rest of the ConfigurationNotifier fix Signed-off-by: The MathWorks, Inc. <pelliott@mathworks.com> * Fix errors in minimum gcc build Signed-off by: The MathWorks Inc. < pelliott@mathworks.com> * Responded to code review comments Responded to code review comments. Added tests for SCRBundleExtension and SCRExtensionRegistry. Signed off by - The MathWorks, Inc. <pelliott@mathworks.com> * Update ConfigurationNotifier.cpp Update error message. Signed off by The MathWorks, Inc. <pelliott@mathworks.com> * Update SCRExtensionRegistry.hpp Formatting issue. signed-off by The MathWorks, Inc. <pelliott@mathworks.com> * CreateFactoryComponent changes ConfigurationNotifier::CreateFactoryComponent will log an exception if it can't find the SCRBundleExtension in the ExtensionRegistry instead of throwing a std::runtime_error exception. Signed-off-by: The MathWorks, Inc. <pelliott@mathworks.com> * Update ConfigurationNotifier.cpp Fixed call to std::exception. Signed-off-by The MathWorks, Inc. <pelliott@mathworks.com> * Update ConfigurationNotifier.cpp Removed throw in CreateFactoryComponent. Error message is already logged, no throw needed. Signed-off-by - The MathWorks, Inc. <pelliott@mathworks.com> --------- Signed-off-by: The MathWorks, Inc. <pelliott@mathworks.com> * [ci skip] Update CHANGELOG.rst (#839) [ci skip] Added bug fix to fix sporadic crash in DS caused by concurrent access to ComponentMgrImpl vector. Pull Request 834. * [ci skip] rev version (#842) Co-authored-by: Jeff DiClemente <jdicleme@mathworks.com> * Default any map type (#844) * Fixed undefined behavior in Any::operator==(value) * Revert "Fixed undefined behavior in Any::operator==(value)" This reverts commit 3066fe1128da0aad1215e811be7ddf211b56be77. * Default AnyMap(map_type) constructor to UNORDERED_MAP_CASINSENSITIVE_KEYS * Remove CoreBundleContext.dataStorage clear (#845) Fixes #733 * Removing std::move use with const object [ci skip] (#848) * Removing std::move use with const [ci skip] Signed-off-by: Tahar Touati <touati.thr@gmail.com> * Addressing PR feedback, removing const from complex types and adding std move back [ci skip] Signed-off-by: Tahar Touati <touati.thr@gmail.com> --------- Signed-off-by: Tahar Touati <touati.thr@gmail.com> * [ci skip] Update Changelog for #845 (#847) * Update Chagelog for #845 [ci skip] * Update Changelog Unreleased section [ci skip] Signed-off-by: ShivamNegi <shivamnegi2019@gmail.com> --------- Signed-off-by: ShivamNegi <shivamnegi2019@gmail.com> * Fix warning "Use of BITWISE AND to check if a flag is set" (#849) Signed-off-by: Tahar Touati <touati.thr@gmail.com> * include cstdint in FileSystem.cpp (#850) vcpkg installation is failing, with this error: PATH/v3.6.0-e25b133cd3.clean/util/src/FileSystem.cpp:122:3: error: ‘uint32_t’ was not declared in this scope PATH/v3.6.0-e25b133cd3.clean/util/src/FileSystem.cpp:71:1: note: ‘uint32_t’ is defined in header ‘<cstdint>’; did you forget to ‘#include <cstdint>’? Sure enough, when patched with this it will build and install correctly with vcpkg. Other errors are reported but this is the culprit. * Fixes #840: removes manual reference counting (#841) * converted registration * compiled, not passeD * fixed weak_ptr error, now leaking mock objects * fixed bug, need to decrement ref count * updats from last week, test cases failing because of out of date expectations * all tests are passing with shared and weak pointers to serviceRegistrationBasePrivate * still passing tests, updated comments and cleaned up * updating to share dependents * new issue with dying service * added coreInfo, maybe passing * passing tests, removed manual ref counting from referenceBasePrivate, repeated all fast tests to ensure no sporadic failures * updated comments * updates before PR * Removed manual reference counting The manual reference counting in ServiceRegistrationBasePrivate and ServiceReferenceBasePrivate were removed. Additionally, some properties of ServiceRegistrationBasePrivate were offloaded to a new class ServiceRegistrationCoreInfo which both ServiceRegistrationBasePrivate and ServiceReferenceBasePrivate can access allowing ServiceReferenceBasePrivate to give up ownership of ServiceRegistrationBasePrivate. Signed-off-by: Toby Cormack <tcormack@mathworks.com> * Removed manual reference counting and merged with upstream (#840) The manual reference counting in ServiceRegistrationBasePrivate and ServiceReferenceBasePrivate were removed. Additionally, some properties of ServiceRegistrationBasePrivate were offloaded to a new class ServiceRegistrationCoreInfo which both ServiceRegistrationBasePrivate and ServiceReferenceBasePrivate can access allowing ServiceReferenceBasePrivate to give up ownership of ServiceRegistrationBasePrivate. Signed-off-by: Toby Cormack <tcormack@mathworks.com> * ServiceRegistrationCoreInfo now default destructor * Updated based on Patty's comments #840 * updated ServiceReferenceBase Constructors for clarity with shared_ptrs * removed 'move' from serviceRegistry * attempt at solving mac issue * updates for lock type and removing unneccessary functions from reference * lost lock * changed to custom atomic load * LockSet addition * threading support in LockSet * LockSet not threaded * no names in func dec * Incoorporated Jeff's Comments * Assignment operator didn't fail on my computer, did in github * updated for Jeff's 5/16 comments * clang update * mikes comments and fixes for multithreaded support * remove ifdefs from BundleRegistry, abide by rule of (0,3,5), and add comments --------- Signed-off-by: Toby Cormack <tcormack@mathworks.com> * Fixes #852: adds a [[nodiscard]] to BundleContext::RegisterService (#863) * noDiscard update first push * Jeff's comments, c++14 in cmakelists for makefile test, comments to reference nodiscard * [ci skip] Updated README to reflect correct compiler/OS versions (#862) [ci skip] * Fix code scanning alerts (#861) Fixes #860, #859, #858, #857, #856, #855, #853 * Ensure multiple listeners for the same factory PID are honoured by `ConfigurationNotifier::AnyListenersForPid` (#865) * Ensure multiple listeners for the same PID are honoured Signed-off-by: Conor Burgess <Burgess.Conor@gmail.com> * Fix formatting Signed-off-by: Conor Burgess <Burgess.Conor@gmail.com> --------- Signed-off-by: Conor Burgess <Burgess.Conor@gmail.com> Co-authored-by: cburgess <cburgess@mathworks.com> * Code scanning alert fix: Use of a moved from object #864 (#866) Fixes #864 * tests passing on linux, all files updated * Mike and Toby backat it again * changed second instance of warning? * reverted naming, final submit * Fix race condition when concurrently adding to SCRExtensionRegistry (#870) * Fix race condition when concurrently adding to SCRExtensionRegistry Fixed a race that can happen when multiple threads are trying to add to the extension registry container. Fixed a bug with the tests for SCRExtensionRegsitry class never being compiled and run. Signed-off-by: The MathWorks, Inc. <jdicleme@mathworks.com> * Fix #868: Recoups some of performance losses from PR #841 (#869) * fixed lockReg shared_ptr * down to 5% increase from original * get logs from github to verify behavior * reverting performance yml and adding move constructor (default) for RegistrationLocks : * #Issue873: Redundant calls to .Load() (#874) * first commit * test Case * revert test * test fix * naming * Fixes #718 (#876) Signed-off-by: Toby Cormack <tcormack@mathworks.com> * removed an empty line addition. * fixup some merge issues. * respond to code review feedback * code review feedback. * code review feedback. * Update TrackedService.h Remove underscore from names. * fixing merge * update _var naming convention * GetCustomizer_unlocked() addition * remove getTrackerAsCustomizer --------- Signed-off-by: The MathWorks, Inc. <jdicleme@mathworks.com> Signed-off-by: The MathWorks, Inc. <alchrist@mathworks.com> Signed-off-by: Ingmar Sittl <Ingmar.Sittl@elektrobit.com> Signed-off-by: The MathWorks, Inc. <aadityap@mathworks.com> Signed-off-by: Ingmar Sittl <ingmar.sittl@elektrobit.com> Signed-off-by: The MathWorks, Inc. <bweed@mathworks.com> Signed-off-by: The MathWorks, Inc. <pelliott@mathworks.com> Signed-off-by: Tahar Touati <touati.thr@gmail.com> Signed-off-by: ShivamNegi <shivamnegi2019@gmail.com> Signed-off-by: Toby Cormack <tcormack@mathworks.com> Signed-off-by: Conor Burgess <Burgess.Conor@gmail.com> Signed-off-by: Toby Cormack <tcormack@mathworks.com> Co-authored-by: Shane Riley <52603694+shane-riley@users.noreply.github.com> Co-authored-by: shane-riley (The Mathworks Inc.) <sriley@mathworks.com> Co-authored-by: xru192 <ryanxu123@gmail.com> Co-authored-by: xru192 <56376151+xru192@users.noreply.github.com> Co-authored-by: Jeff DiClemente <jeffdiclemente@users.noreply.github.com> Co-authored-by: Jeff DiClemente <jdicleme@mathworks.com> Co-authored-by: pelliott-mathworks <67922241+pelliott-mathworks@users.noreply.github.com> Co-authored-by: BrianWeed <brian_weed@yahoo.com> Co-authored-by: carneyweb <mike@carneyweb.com> Co-authored-by: Ingmar Sittl <79453136+insi-eb@users.noreply.github.com> Co-authored-by: alchrist <alchrist@mathworks.com> Co-authored-by: Shivam Negi <shivamnegi2019@gmail.com> Co-authored-by: Aaditya Sakharam Patil <36245341+aadityap-mathworks@users.noreply.github.com> Co-authored-by: Aaditya <aadityap@mathworks.com> Co-authored-by: thrtouati <124062546+thrtouati@users.noreply.github.com> Co-authored-by: Tristan Ayala <ayalat1@unlv.nevada.edu> Co-authored-by: tcormackMW <113473781+tcormackMW@users.noreply.github.com> Co-authored-by: Conor Burgess <Burgess.Conor@gmail.com> Co-authored-by: cburgess <cburgess@mathworks.com> Co-authored-by: tcormack <tcormack@mathworks.com> * CMake Updates for Boost Versioning Fix (#945) * cmake updates * behavior put in cmake function * usFunctionBoostPath update * Initializer list support (#942) * get latest on development * Added support for std::initializer_list constructurs Updated tests to use new initializer simplifying the code. * new clone. * fixed up some test code to make it compile on older compilers. * fixup. * updated some tests to check operator= * check. * fixed typo in comment. * added specific tests for initializer list support. * Revert "get latest on development" This reverts commit 639f61d44fa2ed989a1add2c8f8a2a774caf7a19. * test. * Revert "test." This reverts commit dd56818941337379f83a0aba6a101f6642f6e5ef. * Revert "Revert "get latest on development"" This reverts commit 7ef96570ec26a15668f9500aca26b063b9416412. * Revert "Revert "Revert "get latest on development""" This reverts commit 6f4d982d565df5959795719bd27308654bd721a7. * restore. * update google test to submodule version on development * update nowide version to match development * fixed up some comments. * ServiceComponent build tests cmake configuration (#949) * use cmake build type * set to debug by default * Fix #961 -- hashable references after destruction of RegistrationBase object (#962) * update hash function * test case working * update version --------- Signed-off-by: Tahar Touati <touati.thr@gmail.com> Signed-off-by: ShivamNegi <shivamnegi2019@gmail.com> Signed-off-by: Toby Cormack <tcormack@mathworks.com> Signed-off-by: Conor Burgess <Burgess.Conor@gmail.com> Signed-off-by: The MathWorks, Inc. <jdicleme@mathworks.com> Signed-off-by: Toby Cormack <tcormack@mathworks.com> Signed-off-by: tcormack <tcormack@mathworks.com> Signed-off-by: The MathWorks, Inc. aadityap@mathworks.com Signed-off-by: Ingmar Sittl <ingmar.sittl@elektrobit.com> Signed-off-by: Ingmar Sittl <Ingmar.Sittl@elektrobit.com> Signed-off-by: Shivam Negi <snegi@mathworks.com> Signed-off-by: The MathWorks, Inc. <alchrist@mathworks.com> Signed-off-by: The MathWorks, Inc. <aadityap@mathworks.com> Signed-off-by: The MathWorks, Inc. <bweed@mathworks.com> Signed-off-by: The MathWorks, Inc. <pelliott@mathworks.com> Co-authored-by: carneyweb <mike@carneyweb.com> Co-authored-by: Shivam Negi <shivamnegi2019@gmail.com> Co-authored-by: thrtouati <124062546+thrtouati@users.noreply.github.com> Co-authored-by: Tristan Ayala <ayalat1@unlv.nevada.edu> Co-authored-by: Jeff DiClemente <jeffdiclemente@users.noreply.github.com> Co-authored-by: Conor Burgess <Burgess.Conor@gmail.com> Co-authored-by: cburgess <cburgess@mathworks.com> Co-authored-by: Aaditya Sakharam Patil <36245341+aadityap-mathworks@users.noreply.github.com> Co-authored-by: aadityap <aadityap@mathworks.com> Co-authored-by: Ingmar Sittl <79453136+insi-eb@users.noreply.github.com> Co-authored-by: Monika032 <monikaphadnis24@gmail.com> Co-authored-by: mphadnis <mphadnis@mathworks.com> Co-authored-by: Alexander Christoforides <38366659+achristoforides@users.noreply.github.com> Co-authored-by: Shane Riley <52603694+shane-riley@users.noreply.github.com> Co-authored-by: shane-riley (The Mathworks Inc.) <sriley@mathworks.com> Co-authored-by: xru192 <ryanxu123@gmail.com> Co-authored-by: xru192 <56376151+xru192@users.noreply.github.com> Co-authored-by: Jeff DiClemente <jdicleme@mathworks.com> Co-authored-by: pelliott-mathworks <67922241+pelliott-mathworks@users.noreply.github.com> Co-authored-by: BrianWeed <brian_weed@yahoo.com> Co-authored-by: alchrist <alchrist@mathworks.com> * Bundle Start after Framework Stop race fix (#990) * merge from master * r3-8-2 * resolve merge conflicts * Release 3.8.3 * [ci-skip] fix dynamic targeting pr number --------- Signed-off-by: The MathWorks, Inc. <alchrist@mathworks.com> Signed-off-by: The MathWorks, Inc. <jdicleme@mathworks.com> Signed-off-by: Tahar Touati <touati.thr@gmail.com> Signed-off-by: ShivamNegi <shivamnegi2019@gmail.com> Signed-off-by: Toby Cormack <tcormack@mathworks.com> Signed-off-by: Conor Burgess <Burgess.Conor@gmail.com> Signed-off-by: Toby Cormack <tcormack@mathworks.com> Signed-off-by: tcormack <tcormack@mathworks.com> Signed-off-by: The MathWorks, Inc. aadityap@mathworks.com Signed-off-by: Ingmar Sittl <ingmar.sittl@elektrobit.com> Signed-off-by: Ingmar Sittl <Ingmar.Sittl@elektrobit.com> Signed-off-by: Shivam Negi <snegi@mathworks.com> Signed-off-by: The MathWorks, Inc. <aadityap@mathworks.com> Signed-off-by: The MathWorks, Inc. <bweed@mathworks.com> Signed-off-by: The MathWorks, Inc. <pelliott@mathworks.com> Co-authored-by: pelliott-mathworks <67922241+pelliott-mathworks@users.noreply.github.com> Co-authored-by: Jeff <DiClemente> Co-authored-by: Jeff DiClemente <jeffdiclemente@users.noreply.github.com> Co-authored-by: Alexander Christoforides <38366659+achristoforides@users.noreply.github.com> Co-authored-by: BrianWeed <brian_weed@yahoo.com> Co-authored-by: carneyweb <mike@carneyweb.com> Co-authored-by: Shivam Negi <shivamnegi2019@gmail.com> Co-authored-by: thrtouati <124062546+thrtouati@users.noreply.github.com> Co-authored-by: Tristan Ayala <ayalat1@unlv.nevada.edu> Co-authored-by: Conor Burgess <Burgess.Conor@gmail.com> Co-authored-by: cburgess <cburgess@mathworks.com> Co-authored-by: Aaditya Sakharam Patil <36245341+aadityap-mathworks@users.noreply.github.com> Co-authored-by: aadityap <aadityap@mathworks.com> Co-authored-by: Ingmar Sittl <79453136+insi-eb@users.noreply.github.com> Co-authored-by: Monika032 <monikaphadnis24@gmail.com> Co-authored-by: mphadnis <mphadnis@mathworks.com> Co-authored-by: Shane Riley <52603694+shane-riley@users.noreply.github.com> Co-authored-by: shane-riley (The Mathworks Inc.) <sriley@mathworks.com> Co-authored-by: xru192 <ryanxu123@gmail.com> Co-authored-by: xru192 <56376151+xru192@users.noreply.github.com> Co-authored-by: Jeff DiClemente <jdicleme@mathworks.com> Co-authored-by: alchrist <alchrist@mathworks.com>
No description provided.