KDAB/GammaRay — pull request #52 by milianw (2013-08-29 12:34:04+00:00)
Title: Refactor the code to remove the need to inherit from NetworkObject.

This is an important step towards the ability to use type-safe model
interfaces, thus obsoleting e.g. FontBrowser{Client,Server}.

Instead move most of the logic into the Endpoint and the implementors,
i.e. Client/Server. Especially more of the ObjectBroker is moved
to the Client/Server, most notably the Probe now essentially is
the previously introduced ObjectRegistrarCallback via the new
registerObject(name, object) method.

NetworkObject's emitSignal is moved to Endpoint::invokeObject.
It is left to be seen whether this can eventualyl be obsoleted
alltogether. A first step towards this direction is the new addition
of generic forwarding of signals of registered objects which are then
forwarded to the client. The new PropertyControllerInterface makes
use of this for bidirectional message passing, i.e. the client uses
invokeObject whereas the server object simply emit's signal which
transparently get propagated to the client.

Note that the code to achieve this uses a QSignalSpy per object
and signal. In the future a custom QSignalSpy-like class could
handle this more efficiently.

A further advantage of the new code is that the client no longer
invokes methods on the local objects (cmp. NetworkObject::emitLocal).
Previously one could not figure out on what side (client/server) one
is. Moving the code into Client/Server makes this trivial.

More cleanups are now possible.