28 #include <ArmarXCore/interface/core/util/distributed/RemoteHandle/ClientSideRemoteHandleControlBlock.h>
29 #include <ArmarXCore/interface/core/util/distributed/RemoteHandle/RemoteHandleControlBlock.h>
33 class ClientSideRemoteHandleControlBlock;
35 std::shared_ptr<ClientSideRemoteHandleControlBlock>;
50 const Ice::ObjectPrx&
object);
65 template <
class IceBaseClass,
class DerivedClass>
70 inline ClientSideRemoteHandleControlBlock::ClientSideRemoteHandleControlBlock(
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;