28#include <ArmarXCore/interface/core/util/distributed/RemoteHandle/ClientSideRemoteHandleControlBlock.h>
29#include <ArmarXCore/interface/core/util/distributed/RemoteHandle/RemoteHandleControlBlock.h>
35 std::shared_ptr<ClientSideRemoteHandleControlBlock>;
50 const Ice::ObjectPrx&
object);
65 template <
class IceBaseClass,
class DerivedClass>
71 const RemoteHandleControlBlockInterfacePrx& controlBlock,
72 const Ice::ObjectPrx&
object) :
73 ClientSideRemoteHandleControlBlockBase(controlBlock, object)
75 assert(managedObjectProxy);
76 assert(remoteHandleControlBlockProxy);
77 if (!managedObjectProxy || !remoteHandleControlBlockProxy)
79 throw std::invalid_argument{
"Either the control block or the object proxy is null!"};
81 remoteHandleControlBlockProxy->incrementUseCount();
88 if (remoteHandleControlBlockProxy)
90 remoteHandleControlBlockProxy->decrementUseCount();
102 remoteHandleControlBlockProxy->incrementUseCount();
105 inline Ice::ObjectPrx
108 return managedObjectProxy;
The ClientSideRemoteHandleControlBlock is used at the client side for reference counting.
void ice_postUnmarshal() override
~ClientSideRemoteHandleControlBlock() override
ClientSideRemoteHandleControlBlock(ClientSideRemoteHandleControlBlock &&)=default
Ice::ObjectPrx getManagedObjectProxy(const Ice::Current &=Ice::emptyCurrent) override
ClientSideRemoteHandleControlBlock & operator=(T &&)=delete
friend class GenericFactory
ClientSideRemoteHandleControlBlock & operator=(ClientSideRemoteHandleControlBlock &&other)=default
ClientSideRemoteHandleControlBlock(const ClientSideRemoteHandleControlBlock &)=delete
ClientSideRemoteHandleControlBlock(const RemoteHandleControlBlockInterfacePrx &controlBlock, const Ice::ObjectPrx &object)
This file offers overloads of toIce() and fromIce() functions for STL container types.
std::shared_ptr< ClientSideRemoteHandleControlBlock > ClientSideRemoteHandleControlBlockPtr