8#ifndef SEN_CORE_OBJ_DETAIL_PROXY_OBJECT_H
9#define SEN_CORE_OBJ_DETAIL_PROXY_OBJECT_H
18namespace sen::kernel::impl
21class LocalParticipant;
22class RemoteParticipant;
32class SEN_EXPORT ProxyObject:
public Object
34 SEN_NOCOPY_NOMOVE(ProxyObject)
37 ProxyObject() =
default;
38 ~ProxyObject()
override =
default;
42 virtual void drainInputs() = 0;
45 [[nodiscard]]
virtual bool isRemote() const noexcept = 0;
48 [[nodiscard]] virtual RemoteObject* asRemoteObject() noexcept = 0;
51 [[nodiscard]] virtual const RemoteObject* asRemoteObject() const noexcept = 0;
54 void lock()
const { selfMutex_.lock(); }
56 void unlock()
const { selfMutex_.unlock(); }
59 mutable std::mutex selfMutex_;