summaryrefslogtreecommitdiffstats
path: root/src/remoteobjects/qremoteobjectsource.cpp
Commit message (Collapse)AuthorAgeFilesLines
* Mark QtRemoteObjects as security criticalØystein Heskestad2025-07-041-0/+1
| | | | | | | | | | | | | | | | | | | | | | The QtRemoteObjects serialization is built on top of QDataStream, but QDataStream is not secure. Mark all files parsing data as security critical. The security is dependent on the backend used. The local and QNX backends communicate only locally but are insecure on a compromised host. The TCP backend is by default insecure, but it supports TLS, and can be secure if that is used. The two files in the repparser directory are used for parsing, but only at build time, and are therefore kept at security significant. The remaining files are marked as security signifcant. QUIP: 23 Task-number: QTBUG-135570 Pick-to: 6.10 6.9 6.8 Change-Id: I11176c036d95f8c706bd05e1cab1ba499003f683 Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
* Port from container::count() and length() to size()Marc Mutz2022-10-061-4/+4
| | | | | | | | | | | | | | | | | | | | | This is a semantic patch using ClangTidyTransformator as in qtbase/df9d882d41b741fef7c5beeddb0abe9d904443d8: auto QtContainerClass = anyOf( expr(hasType(cxxRecordDecl(isSameOrDerivedFrom(hasAnyName(classes))))).bind(o), expr(hasType(namedDecl(hasAnyName(<classes>)))).bind(o)); makeRule(cxxMemberCallExpr(on(QtContainerClass), callee(cxxMethodDecl(hasAnyName({"count", "length"), parameterCountIs(0))))), changeTo(cat(access(o, cat("size"), "()"))), cat("use 'size()' instead of 'count()/length()'")) a.k.a qt-port-to-std-compatible-api with config Scope: 'Container', with the extended set of container classes recognized. Change-Id: Id816b39977e17712fd078900037efc45f66a0175 Reviewed-by: Sona Kurazyan <kurazyan.sona@gmail.com> Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
* Replace qExchange with std::exchangeMarc Mutz2022-10-061-1/+1
| | | | | | | | | None of these users require C++20 constexpr or C++23 noexcept, the only remaining difference between std::exchange and qExchange. Task-number: QTBUG-99313 Change-Id: I3a1cc903f8298085dd2bf09a08234557e9eb430a Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* SourceApiMap: De-inline dtor of polymorphic classMarc Mutz2022-06-211-0/+3
| | | | | | | | | | ... fixing Clang -Wweak-vtables warnings, which we'll soon add to headersclean. Pick-to: 6.4 Task-number: QTBUG-45582 Change-Id: I0a2962f216c2fb03e924bb94b21c0903450974c5 Reviewed-by: Sona Kurazyan <sona.kurazyan@qt.io>
* Use SPDX license identifiersLucie Gérard2022-06-141-38/+2
| | | | | | | | | | | Replace the current license disclaimer in files by a SPDX-License-Identifier. License files are organized under LICENSES directory. Pick-to: 6.4 Task-number: QTBUG-67283 Change-Id: I315d7ce1d6c6c3497afdfe8b61a113fdc181c935 Reviewed-by: Jörg Bornemann <joerg.bornemann@qt.io>
* Fix header change replicationJoni Poikelin2021-10-131-3/+5
| | | | | | | | | Fixes: QTBUG-91041 Pick-to: 6.2 5.15 Change-Id: I5b56ed81ee9df658e0c596199dfde067bba6cd43 Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Sona Kurazyan <sona.kurazyan@qt.io> Reviewed-by: Brett Stottlemyer <bstottle@ford.com>
* Handle enums/flags as hash/map keysBrett Stottlemyer2021-08-171-8/+2
| | | | | | | | | This extends the previous commit to allow enums in hash/map containers. Pick-to: 6.2 Change-Id: Iaea9f9ddcbf2e01a611e20800305ebbf236eeada Reviewed-by: Michael Brasser <michael.brasser@live.com> Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
* Clean-up the qremoteobjectsource.h headerSona Kurazyan2021-07-301-0/+108
| | | | | | | | | | | | Move the methods and structs that don't need to be public into the corresponding .cpp file. Pick-to: 6.2 Task-number: QTBUG-94407 Change-Id: I125f17a214e09ff2ea9ae98801b418e07d732868 Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Brett Stottlemyer <bstottle@ford.com> Reviewed-by: Alex Blasche <alexander.blasche@qt.io>
* Fix crash when remoting QML objects with sub-objectsMichael Brasser2021-07-221-9/+24
| | | | | | | | | | | | | There are two edge cases to watch out for. First, the property metaType's metaObject() returns a nullptr, so the property QObject pointer's metaObject needs to be used instead. If the QObject is null, the property is skipped, as there is no way to get the metaobject without introducing a dependency on QtQuick. Pick-to: 6.2 5.15 Change-Id: I60ae36dffb30c840858e4d67b9980299c58354b4 Reviewed-by: Michael Brasser <michael.brasser@live.com> Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* Rename the classes for adding a custom transport supportSona Kurazyan2021-06-171-3/+3
| | | | | | | | | | | | | Added QtRO prefix to IoDeviceBase, ServerIoDevice and ClientIoDevice classes. These classes are exported and can be used externally for supporting a custom transport by deriving from them and implementing the virtual methods. Added the prefix also to ExternalIoDevice, to keep the naming consistent. Pick-to: 6.2 Change-Id: I64845cff55687a127d2c43de03ecc65ac9bd321b Reviewed-by: Brett Stottlemyer <bstottle@ford.com> Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
* Refactor serialization code into an abstracted classBrett Stottlemyer2021-05-271-12/+14
| | | | | | | | | | | This hides implementation details and allows for different implementations in the future. Change-Id: I5502bb040afe502f7b127668cf7ff81ee79f5e89 Reviewed-by: Brett Stottlemyer <bstottle@ford.com> Reviewed-by: Sona Kurazyan <sona.kurazyan@qt.io> Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io> Reviewed-by: Michael Brasser <michael.brasser@live.com>
* Clean-up integer conversion warningsSona Kurazyan2021-02-261-7/+7
| | | | | Change-Id: Ib1229eb973066a7500cb759082a1a3a7ce978bfa Reviewed-by: Brett Stottlemyer <bstottle@ford.com>
* Clean-up warningsSona Kurazyan2021-02-221-3/+3
| | | | | | | | | | | | | Fixed the following warnings: - empty expression statement has no effect; remove unnecessary ';' - use of old-style cast - zero as null pointer constant - other minor things Change-Id: Ia672f48d2aa87c59354fc93fd19862f1875e13db Reviewed-by: Brett Stottlemyer <bstottle@ford.com> Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
* Use QList instead of QVectorJarek Kobus2021-02-161-3/+3
| | | | | | | | | Task-number: QTBUG-84469 Task-number: QTBUG-90907 Change-Id: Ifc6f05fb5e17e32ec04b383770080e812c854510 Reviewed-by: Sona Kurazyan <sona.kurazyan@qt.io> Reviewed-by: Jarek Kobus <jaroslaw.kobus@qt.io> Reviewed-by: Brett Stottlemyer <bstottle@ford.com>
* Fix QMetaType Deprecation warningsBrett Stottlemyer2021-02-151-5/+7
| | | | | Change-Id: If7de5da3e7ad6d345e8b483486bb7177bccbc0df Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* Fix compilation with Qt 6Sona Kurazyan2021-02-151-2/+2
| | | | | | | Task-number: QTBUG-90685 Change-Id: Iba9ee0a28ec0ceeca5ae318204deb14190042533 Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Brett Stottlemyer <bstottle@ford.com>
* Fix crash with same-named subobjects or modelsMichael Brasser2020-07-281-5/+6
| | | | | | | | Differentiate between subobjects or models coming from different primary objects. Change-Id: Ic4360ae208edbe31a1130f60248a501d63e55773 Reviewed-by: Brett Stottlemyer <bstottle@ford.com>
* Update dependencies.yamlMichael Brasser2020-07-271-1/+1
| | | | | Change-Id: Ic4bfe4ba2173c84c743f4c972db216e6bbd30211 Reviewed-by: Brett Stottlemyer <bstottle@ford.com>
* Don't connect overloaded signalsMichael Brasser2020-07-271-4/+28
| | | | | | | | Otherwise we can end up with superfluous emissions from the replica. Pick-to: 5.15 Change-Id: I50d556d532025f39e692d601d68b414b3c4806fb Reviewed-by: Brett Stottlemyer <bstottle@ford.com>
* Annual QStringLiteral sweepMarc Mutz2019-08-051-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | It makes little sense to use QStringLiteral in the following situations: - for comparison to a QString, because operator==, startsWith(), indexOf() etc are overloaded for QLatin1String. - for strings which are immediately appended to, or which are appended or prepended to other strings. because no dynamic memory allocation is saved by doing so. But if the only advantage of QStringLiteral does not apply, all its disadvantages dominate, to wit: injection of calls to the QString dtor, non-sharability of data between C strings and QStringLiterals and among QStringLiterals, and doubled storage requirements. Fix by replacing QStringLiteral with QLatin1String, or char16_t literals, whichever is more fitting. Also use new QLatin1String::arg() more. Change-Id: I55d05783889f521001a1cb8dedd276d0a183882f Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
* Eradicate some more tricky Q_FOREACH loopsMarc Mutz2019-07-141-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | These all have a non-neglible chance of somewhere indirectly modifying the container they iterate over: - In QRemoteObjectNode::timerEvent(), the loop calls a virtual function and it's unclear whether that could reenter into QRemoteObjectNode and modify d->pendingRequests. The name of the virtual function suggests that it shouldn't, so this is ported without taking a copy. - In QRemoteObjectNodePrivate::onClientRead(), the loop calls handleReplicaConnection(), which I didn't prove to not reenter into QRemoteObjectNodePrivate and cause modifications to rxObjects. A quick analysis indicates that the only writer to the object is onClientRead() itself, in which case the question must be asked why rxObjects is a member and not a local. Ported without copy. - In QRemoteObjectSourceBase::handleMetaCall(), the loop again calls a virtual function and it's uncler whether that could reenter and cause a modification to d->m_listeners. The name of the virtual function suggests that it shouldn't, so this is ported without taking a copy. - In QRemoteObjectSourceIo::onServerDisconnect(), the loop removes listeners. While the immediate call does not modify m_sourceRoots, it does call virtual functions which are not proven to not reenter into the object and modify m_sourceRoots. The name of the function suggests that it's not unlikely that an unregister may cause another, indirect, unregistration, but after consultation with the code's maintainer it has been decided to port this without taking a copy and fix up once such use cases manifest themselves. Change-Id: Ib9950ffd90718d8527e9f86818e2fb357a65db75 Reviewed-by: Brett Stottlemyer <bstottle@ford.com>
* QRemoteObjectRootSource: fix quadratic loopMarc Mutz2019-07-141-1/+4
| | | | | | | | | | | | | | | In ~QRemoteObjectRootSource(), the loop over m_listeners is calling removeListener, which, unsurprisingly, removes the listener from m_listeners. Since we iterate m_listeners forward, this loop has quadratic overall complexity. To fix, use a consume loop, making the erasure within removeListener() a no-op. Added a comment to that effect. Change-Id: Ic5a485dbd4e75c729acf9330a9851c3fcdcb9cc1 Reviewed-by: Michael Brasser <michael.brasser@live.com> Reviewed-by: Lars Knoll <lars.knoll@qt.io> Reviewed-by: Brett Stottlemyer <bstottle@ford.com>
* Support Q_GADGETs with enumsBrett Stottlemyer2019-05-201-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | The previous logic for sending/receiving the Q_GADGET definition used a custom GadgetsData type on both sides (a QByteArray for name and a QList of name/type pairs for each member). This isn't really needed on the send side, we just need the QMetaObject for the class. This simplifies the logic on the send side, as we no longer need to copy data around and merge duplicate types, and it allows extension to getting enums. On the receive side, we do need to copy the data. In particular, there can be nested types, where one POD includes another or an enum from another type. It is easier to extend the class if it doesn't need to support the send operation as well. On the send side, we now have serializeGadgets() which takes the pointers for gadget metaobjects as well as the list of needed QMetaEnum types. Using these, it constructs the list of necessary types to serialize and marshalls those. On the receive side, there is registerGadgets which uses the extended GadgetData struct (now including the data needed to create dynamic QMetaEnums) to create metaObjects and register the required types. Change-Id: I80ceff39131c7a2cdcfe592f338ea98f72e76874 Reviewed-by: Michael Brasser <michael.brasser@live.com>
* More fixes for (dynamic) enums in signals and slotsBrett Stottlemyer2019-05-171-1/+3
| | | | | | | | | | | | | | | | | | | | | | | This addresses two larger issues with enums and several smaller fixes. First, unlike the recent fix for properties, we need to register enums for queued connections to work and get signal/slot updates over QtRO to work. This change adds said registration. Second, enums are identified with the class they are defined in, so passing updates through a dynamic object requires converting the typenames. The templated enableRemoting methods become interesting here, as the class name depends on the type passed as a template parameter. This change also updates the repc output so enums are properly resolved via the templates. Smaller fixes include updates to some tests and several places where enums were converted to/from int. Note: we need (and have always needed) to convert enums to ints, since the class name is passed as part of the variant serialization which cannot be changed without major digging into qvariant and QDataStream serialization internals. Change-Id: I0a77f85df6a400a7a44394a05c9c2401bee4e4a8 Reviewed-by: Michael Brasser <michael.brasser@live.com>
* Fix handling of QVariant propertiesBrett Stottlemyer2019-05-061-1/+1
| | | | | | | | | | This required adding additional checks for QVariants that contain custom types like PODs. Change-Id: I5d77a07741000975ce8c5936688eab1af068dd6f Fixes: QTBUG-75056 Fixes: QTBUG-74084 Reviewed-by: Michael Brasser <michael.brasser@live.com>
* Fix registration for dynamic ReplicasBrett Stottlemyer2019-05-011-6/+14
| | | | | | | | | | | | | | | | | | | | | | | | | | | | This adds new tests for checking that the proxy (which uses dynamic replicas to avoid needing to include headers for all proxied types) works correctly over multiple processes. This found several edge cases not seen in the earlier (single process) proxy auto tests. 1) When sending a new sub class to a dynamic replica, the properties need to be stored in a separate QByteArray and extracted after the metatype info (for both classes and gadgets) is processed. 2) When the templated acquire is used, the metatype information needs to be added to the dynamicTypeManager. 3) There is an edge case where the DynamicApiMap for a null object could not be built correctly. In this case, it needed to be regenerated once a valid object was available for the Replica sub-class. 4) There were several edge cases where the typeName needed to be updated. [ChangeLog][Important Behavior Changes] Qt Remote Objects uses an internal protocol to pass data between processes and/or devices. The same protocol version needs to be used on all sides. The version was bumped from 1.2 to 1.3 in this release, fixing potential crashes (see QTBUG-75017). If there is a mismatch, the connecting node will output a warning and the host node will not send any data. Change-Id: I7af50f16ed370351eb0692d5f4b983848846b504 Fixes: QTBUG-75017 Reviewed-by: Michael Brasser <michael.brasser@live.com>
* Merge remote-tracking branch 'origin/5.12.1' into 5.12Qt Forward Merge Bot2019-02-011-15/+38
|\ | | | | | | Change-Id: I3822ef45344b07191c3b32883241db5e43e04187
| * QVariant is also a standalone type and we must treated accordinglyBogDan Vatra2018-12-211-15/+38
| | | | | | | | | | | | | | | | | | | | QVariant::data() gives us access to its internal pointer of the internal data type, but if the type is a QVariant we can't use QVariant::data() anymore. Change-Id: Ifad5f5d5884913c38b289c69b50630c735eea7d6 Fix: QTBUG-72064 Reviewed-by: Brett Stottlemyer <bstottle@ford.com>
* | Fix include directivesFriedemann Kleint2019-01-181-3/+3
|/ | | | | | | | | | Always prepend the module and use headers directly. Qt for Python requires the modules to be present. Task-number: PYSIDE-862 Fixes: QTBUG-72675 Change-Id: I94e38fbab0f041370ca9d67ca13c78f0d33816b7 Reviewed-by: Brett Stottlemyer <bstottle@ford.com>
* Handle null QAIM propertyv5.12.0-rc2v5.12.0BogDan Vatra2018-11-271-5/+16
| | | | | | | | | Even if a QAIM property is nullptr, we still need to treat it as a model. Task-number: QTBUG-71987 Change-Id: Iea8b3bfda88c564c561a7ab6ed293fd0540f5de4 Reviewed-by: Brett Stottlemyer <bstottle@ford.com>
* Support externally generated QIODevicesBrett Stottlemyer2018-08-151-4/+4
| | | | | | | | | | | | | | | This adds the APIs that will be necessary to create SSL sockets flexibly (and outside of QtRO) and pass them in. The integration tests are extended to show everything works if the tcp/ip connection is created outside QtRO. The Registry is supported by allowing an "external schema" to be set as the HostNode's url, which is then used by the registry as the address for any remoted() source objects. The client Node calls registerExternalSchema() with a std::function callback that can create the client-side QIODevice given the registry provided url. Change-Id: I0f2d0ea270771e096a787134ef87d537769045f6 Reviewed-by: Michael Brasser <michael.brasser@live.com>
* Fix issues with refactored CLASS/MODEL supportMichael Brasser2018-05-171-1/+1
| | | | | | | | | * Don't crash source with null subobjects * Don't crash replica with extra properties * Ensure QML sees property changes at node assignment Change-Id: I08c713ae86ba3ea8c75f259a31a572ae8cff6c59 Reviewed-by: Brett Stottlemyer <bstottle@ford.com>
* Support non-CONSTANT pointer typesBrett Stottlemyer2018-04-251-24/+68
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Prior to supporting nested source objects (internally), there was no way to support changing pointed to objects. Thus repc forced MODEL and CLASS types to be CONSTANT. This change adds update support, which required a few internal changes. First of all, the Q_PROPERTY flags were extended to include a new mode, SOURCEONLYSETTER. Having a replica setter for a pointer type makes no sense (it wouldn't then be part of the API contract, and would fail if the Node containing the replica dropped off the bus). So READWRITE didn't make sense for pointer types. That left READONLY, but that mode generated a protected, not public, setter on the Source side (the idea being that something internal to the source class, not public, would change the values). This would limit the functionality of pointer types, as they could only be updated by inheriting from a Source class. Adding SOURCEONLYSETTER addresses this, making the property read-only on the replica-side, but read/write (with a public setter) on the source-side. MODEL/CLASS now use SOURCEONLYSETTER. Another internal impact is that templated acquire calls (where metaobject data does not need to be sent from the source to define the type) can now be updated, which requires storing the compile-time generated metaobject for re-use. Thus a staticTypes member was added to the node metaoject- manager. Several tests (the ones with pointer-to-qobject properties) needed updating since those properties are not constant anymore, and thus don't have (or require) constructor parameters for setting the values. Change-Id: If20cb0fb673d5e91613f9c238b514ed05380f975 Reviewed-by: Michael Brasser <michael.brasser@live.com>
* Allow nodes to proxy (or convert) replicasBrett Stottlemyer2018-04-251-9/+9
| | | | | | | | | | | | This would support, for example, using the "local" (or "qnx") backend on a target, while still supporting debug via proxying the same objects over a single tcp connection. It should also, in theory, support converting to other marshalling formats (maybe CBOR?). Change-Id: Ib3c536d0c99b7a722c1c6ed145c8b5b567453f76 Reviewed-by: Michael Brasser <michael.brasser@live.com>
* Allow recursive packetizing of typesBrett Stottlemyer2018-04-051-1/+8
| | | | | | | | | | | | | We create a new type (QRO_) to allow storing a subclass as a variant. Thus when a QObject* property is marshalled, all of the pointed to properties can be sent as a single variant. This can be decoded into the proper type on the replica side. This required giving Node's private a new QRemoteObjectMetaObjectManager, a class to handle the building of dynamic metatypes. Change-Id: Ib83b1edb2fd37dd12defb066d4c2b69509985eaa Reviewed-by: Michael Brasser <michael.brasser@live.com>
* Make (internal) Source objects hierarchicalBrett Stottlemyer2018-04-041-75/+115
| | | | | | | | | | | | | | | | | | | | | | | | | | | QRemoteObjectSource is the class used to handle forwarding QObject changes over QtRO, internally storing the listener pointers and managing the send and receive of packets when changes occur. Previously, MODEL and CLASS objects in a parent class were handled by calling enableRemoting separately for each nested pointer type, resulting in separate (and independent) QRemoteObjectSource instances. This change defines a "Root" object (tied to the object enableRemoting() is called on), and any nested QObject types are then created as child source objects of the root object. The implementation creates an abstract QRemoteObjectSourceBase class, with QRemoteObjectRootSource and QRemoteObjectSource types derived from it. Only the Root objects become "known" types on the bus (and thus only Root objects can be acquired. A Private class instance is created by the Root object and the pointer passed to all child sources, providing a mechanism for sharing needed information (such as the list of listeners) amonst all members of the hierarchy. Change-Id: I632e847cad288b4540c7de6676f791ca2e675f46 Reviewed-by: Konstantin Tokarev <annulen@yandex.ru> Reviewed-by: Michael Brasser <michael.brasser@live.com>
* Rework REPC QObject* handlingv5.11.0-beta3Brett Stottlemyer2018-04-041-1/+6
| | | | | | | | | | | | | | | | | | | | | | | | | The MODEL and CLASS types were originally tacked on top of repc's property handling mechanism. That is, separate lists for models and subclasses were created instead of including the types in repc's list of property metadata. This was convenient for proving out the functionality, but led to a bunch of one-off code (generating Q_PROPERTY code manually, needing separate replica getter functions, etc). This change incorporates the pointer types back into the property list in repc, simplifying the code. This does require extensions because pointer types are not symmetric (i.e., for MODEL, the type is QAbstractItemModel* on the source side, QAbstractItemModelReplica* on the replica side). The generated SourceApi code is enhanced to compile-time check subclass types as well as take an optional name parameter (which allows a class to have multiple subclass pointers). SimpleSource handling of CONSTANT properties is also extended, providing constructor parameters to set the initial values. Change-Id: I91f542ef936abe4459962ae759ba3b0571464d5f Reviewed-by: Michael Brasser <michael.brasser@live.com>
* Add/extend Class/Model keywords for repcBrett Stottlemyer2017-12-131-1/+64
| | | | | | | | | | | | | | | | | | | | | | | | | | | The Class and Model extensions to QML are very similar in that they come down to additional QObject derived types that need to be made available to the QtRO bus. The original Model behavior only supported c++ templated calls on the source and replica side. This change adds support for nested classes, via an extension to the .rep file format. Similar to how POD types work, if multiple classes are described in a .rep file, a class can include other classes as children. When the `parent` is acquired, all child classes will be acquired as well, automatically. The syntax is `CLASS <name>(<type>), where type needs to be a class defined in the same rep file, and the name is the getter name used to access the sub-QObject. See tests/auto/subclassreplica/class.rep for an example of usage. This change includes supporting the non-templated enableRemoting() call, as well as using/constructing replica types from QML for both Class and Model. Future TODO - update docs Change-Id: Ib1e75c1a6db44497f78026e7f89caab5da94375b Reviewed-by: Michael Brasser <michael.brasser@live.com>
* Merge remote-tracking branch 'origin/5.10' into devLiang Qi2017-11-241-0/+17
|\ | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: src/remoteobjects/qremoteobjectabstractitemmodeladapter_p.h src/remoteobjects/qremoteobjectdynamicreplica.cpp src/remoteobjects/qremoteobjectnode_p.h src/remoteobjects/qremoteobjectregistry.cpp tests/auto/auto.pro tools/repc/repcodegenerator.cpp Done-with: BogDan Vatra <bogdan@kdab.com> Change-Id: I9d0230736b768eac44b06376aeaab1b0b09eb22a
| * Send also the methods and then signals parameter namesBogDan Vatra2017-11-021-0/+14
| | | | | | | | | | | | | | | | [ChangeLog] The methods and then signals parameter names are useful when acquire a dynamic object. Change-Id: I2b2acfc06c66de0bc4684fda0cc43c364a575ccb Reviewed-by: Brett Stottlemyer <bstottle@ford.com>
| * Send enum detailsBogDan Vatra2017-11-021-0/+3
| | | | | | | | | | | | | | [ChangeLog] enum details are useful when acquire a dynamic object. Change-Id: Ic926b31c3f868a3b1b14b827abef232554f944ce Reviewed-by: Brett Stottlemyer <bstottle@ford.com>
* | Dissolve qconnectionfactories.h, make privateKevin Funk2017-10-061-1/+1
| | | | | | | | | | | | | | | | | | Make API previously exposed in qconnectionfactories.h private. It is only useful for backend implementations, and we recommend to develop backend implementations in-tree. Change-Id: I868b788ebefce9bc27f43376f619c6705b44afd5 Reviewed-by: Brett Stottlemyer <bstottle@ford.com>
* | Move free qtro_* functions in QtPrivate namespaceKevin Funk2017-09-271-2/+2
|/ | | | | | | | | They're not supposed to be used from our users. They're used in generated code and in QtRemoteObject itself though. Change-Id: I492fc76dcac60949d3a7b99c203a258e37864b9c Reviewed-by: Michael Brasser <michael.brasser@live.com> Reviewed-by: Brett Stottlemyer <bstottle@ford.com>
* Correct QtRO license headers and added missing license filesv5.9.0-beta4Jani Heikkinen2017-05-021-13/+19
| | | | | | | | | | | | | Unify licensing as it is in other submodules - Src is licensed under Commercial, LGPLv3, GPLv2 and GPLv3 licenses - Examples are licensed under Commercial and BSD licenses - Tools and tests are licensed under commercial and GPLv3 license with some exceptions Task-number: QTBUG-58921 Change-Id: I4494bf8b705568b243340c98316bedd706145db5 Reviewed-by: Lars Knoll <lars.knoll@qt.io> Reviewed-by: Brett Stottlemyer <bstottle@ford.com>
* Replace Q_NULLPTR -> nullptrKevin Funk2017-03-291-1/+1
| | | | | | | | Skip the moc/ directory intentionally, since it contains third-party code Change-Id: I97105e475c109231e001dc4525b3096a06601868 Reviewed-by: Brett Stottlemyer <bstottle@ford.com>
* Fixes for license checkBrett Stottlemyer2017-01-141-21/+13
| | | | | | | | Change-Id: I3cf39180b08b80ea65c46e7b6a9e81f3aa79d1af Reviewed-by: Kevin Funk <kevin.funk@kdab.com> Reviewed-by: Continuous Integration (KDAB) <build@kdab.com> Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* Generate, send and check class signature for .rep generated classesBogDan Vatra2016-09-081-0/+17
| | | | | | | | | If the signature mismatch it will not complete the connection and will signal the error. Change-Id: Idd4a7a5290bb60d7428e16047a1b82db5e52b372 Reviewed-by: Continuous Integration (KDAB) <build@kdab.com> Reviewed-by: Brett Stottlemyer <bstottle@ford.com>
* Send property information of the changed signalsBogDan Vatra2016-06-201-2/+3
| | | | | | | | The new property is sent just before the signal invoke package, there fore we just need to pass the propertyIndex not to serialized it again. Change-Id: Id82030968b0e18f9f95e281e4f3fda950852857b Reviewed-by: Brett Stottlemyer <bstottle@ford.com>
* Reduce code duplication a bitKevin Funk2016-05-031-19/+8
| | | | | | | | In preparation of upcoming commit Change-Id: I7043800c64282511011f1a3f4be6ec8f135d5186 Reviewed-by: Continuous Integration (KDAB) <build@kdab.com> Reviewed-by: Brett Stottlemyer <bstottle@ford.com>
* [fix] Correct sent typeNameBrett Stottlemyer2016-03-281-1/+2
| | | | | | | | | | | | | | Commit 0e294632142a5f34036cdbe60c5daae2f9f72e67 ("Provide type name for source locations") sends the typeName as well as the instance name over QtRO. However, certain codepaths it used metaObject's className for the value. We now use the .rep class name instead, which doesn't include the Source or SimpleSource suffix. Change-Id: I584b63b09641361934ecfe71ff09bd1cd3918b0d Reviewed-by: Continuous Integration (KDAB) <build@kdab.com> Reviewed-by: Michael Brasser <michael.brasser@live.com>