feat(RemotingNG): add RemotingNG and CodeGeneration from macchina.io #5447 - #5483
Merged
Merged
Conversation
Contributor
There was a problem hiding this comment.
CodeQL found more than 20 potential problems in the proposed changes. Check the Files changed tab for more details.
Contributor
There was a problem hiding this comment.
🟡 Changes recommended
SOAP packaging omits a required dependency, RemoteGen metadata is incomplete, and the CodeGeneration tests contain empty placeholders.
Get a fresh assessment by requesting another Copilot review.
Pull request overview
Imports CodeGeneration and the RemotingNG framework, transports, generator, tests, samples, documentation, and build integration for POCO 2.0.
Changes:
- Adds RemotingNG core, TCP/HTTP/JSON-RPC/REST/SOAP transports, and RemoteGenNG.
- Adds CodeGeneration plus extensive tests and samples.
- Integrates CMake, GNU make, CI, packaging, visibility, and trace handling.
File summaries
| File | Description |
|---|---|
CodeGeneration/** |
CodeGeneration library and tests |
RemotingNG/** |
Framework, transports, generator, tests, and samples |
Util/include/Poco/Util/AbstractConfiguration.h |
Exports event specialization |
Util/src/AbstractConfiguration.cpp |
Instantiates exported event |
CppUnit/src/TestCase.cpp |
Adds trace-aware message assertions |
modules/Poco/CppParser.cppm |
Exposes attributes parser |
components |
Registers new components |
CHANGELOG |
Documents the import |
Review details
- Files reviewed: 143/4128 changed files
- Comments generated: 4
- Review effort level: Balanced
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
aleks-f
approved these changes
Sep 16, 2026
matejk
force-pushed
the
5447-remotingng
branch
from
September 16, 2026 12:25
0d2e41f to
5bb287d
Compare
Flat import of platform/CodeGeneration from macchina.io (state of 2026-09-09); the Applied Informatics changes since the common base follow as separate commits. Co-Authored-By: Aleksandar Fabijanic <aleks-f@users.noreply.github.com> Co-Authored-By: Matej Kenda <matejken@gmail.com>
…a.io #5447 Flat import of platform/RemotingNG from macchina.io (state of 2026-09-09); the Applied Informatics changes since the common base follow as separate commits. Co-Authored-By: Aleksandar Fabijanic <aleks-f@users.noreply.github.com> Co-Authored-By: Matej Kenda <matejken@gmail.com> Co-Authored-By: Florian Behrens <florianbehrens@users.noreply.github.com>
…ake and make builds #5447
matejk
force-pushed
the
5447-remotingng
branch
from
September 24, 2026 10:43
5bb287d to
e17095b
Compare
matejk
force-pushed
the
5447-remotingng
branch
from
September 24, 2026 11:04
e17095b to
a0c9485
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Imports RemotingNG (core; the TCP, HTTP, JSONRPC, REST and SOAP transports; the RemoteGenNG code generator) and CodeGeneration from macchina.io into POCO 2.0, with both build systems, CI, six testsuites, seventeen samples and the documentation pages.
Closes #5447
Source and consolidation
mainare included: the top-levelPoco::Net::ProxyConfigin the four HTTP-based transports, the TCPChannelStreamupdate, alternation in REST path templates.POCO_REQUIRE_LICENSEblocks and thePOCO_LICENSINGmake variable are removed.Integration
ENABLE_CODEGENERATION,ENABLE_REMOTINGNGandENABLE_REMOTINGNG_{TCP,HTTP,JSONRPC,REST,SOAP,REMOTEGEN},ONunlessPOCO_MINIMAL_BUILD, with dependency forcing as for the other components;Poco<Component>Config.cmakepackage files withfind_dependency; thecomponentsfile, the top-levelMakefileand the full CI builds inci.ymlupdated.RemoteGenNGis built without the debug postfix and installed tobin/together with itsRemoteGenNG.xml; the configuration lists the POCO include paths only (-DPOCO_BASE=...at run time).poco_add_executableand theCPPIGNORE_FILEselection; the transport suites listen on distinct ports (HTTP 2280, JSONRPC 2281, REST 2282, SOAP 2283, TCP 2345), soctest -jworks.Poco::Event(bool)replaced byPoco::Event(EventType)(removed in 2.0).Fixes found during verification
EventDispatcherlifetime: the ORB handed out counted references to a remote object and to its event dispatcher separately, while the generated dispatchers hold the object by raw pointer and unsubscribe in their destructor; ASan reported a heap-use-after-free in the TCP event test. The ORB now keeps the remote object alive while a dispatcher references it.operator==madeconst(-Wambiguous-reversed-operator); guard in the XSD generator for accessor names shorter than four characters.Licensing
All files carry the POCO license: the Applied Informatics license line (173 files) and the "unpublished proprietary source code" paragraph (238 files) were replaced by
SPDX-License-Identifier: BSL-1.0; the copyright lines stay. Generated sample sources carry only the copyright line the generator writes; the ONVIF WSDL/XSD files keep their ONVIF notice.Verification
-j8(675 CppUnit cases).BUILD_SHARED_LIBS=OFF), ASan/UBSan (clean after the dispatcher fix), GNU make through the top-levelMakefile(8 components, 7 testrunners), cppcheck.RemoteGenNGregenerates the checked-in testsuite and sample sources byte-identically (36 + 12 files); installed layout and afind_package(PocoRemotingNGTCP)consumer verified.Poco::RemotingNGandPoco::RemotingNGTCPfrom this branch.JS/Bridge (#5451) and the OSP repository depend on this import.
Fixes after the first CI run
ENABLE_TRACE=ON(all sanitizer jobs and the Windows full build):Poco::Exceptionappends a backtrace tomessage(), so the literal message comparisons in the RemotingNG testsuites failed. CppUnit gainedassertMessageEqual(expected, actual): exact without trace; with trace only the backtrace may follow the expected text (or": "plus the backtrace of an empty nested message). The testsuites use it; the JSON fault tests build their expected documents withPoco::toJSON, and the SOAP fault tests strip the backtraces before the exact comparison.hidden-asanjobs): the seven*_APImacros gained the GCCvisibility("default")branch, and Util's explicit instantiation ofPoco::BasicEvent<const std::string, Poco::FastMutex>(enh: reduce binary size across all libraries #5292 #5297) is now exported by declaring it before its first use, because GCC ignores a visibility attribute attached after the type has been instantiated.modules/Poco/CppParser.cppmlacked theAttributesParser.hinclude; RemotingNG enables CppParser by default, which exposed it._mutex; all unregister paths now release the lock first.poco_check_ptrchecks afternewin RemoteGenNG are removed and the SOAP serializer clears its MTOM parts on reset. The remaining alerts are style notes or pre-existing code that the build now compiles.