8#ifndef SEN_CORE_OBJ_DETAIL_NATIVE_OBJECT_PROXY_H
9#define SEN_CORE_OBJ_DETAIL_NATIVE_OBJECT_PROXY_H
35class SEN_EXPORT NativeObjectProxy:
public ProxyObject
37 SEN_NOCOPY_NOMOVE(NativeObjectProxy)
40 NativeObjectProxy(NativeObject* owner, std::string_view localPrefix);
41 ~NativeObjectProxy()
override =
default;
44 [[nodiscard]] ObjectId getId() const noexcept final;
45 [[nodiscard]] const std::
string& getName() const noexcept final;
46 [[nodiscard]] ConstTypeHandle<ClassType> getClass() const noexcept override;
47 [[nodiscard]] const ProxyObject* asProxyObject() const noexcept final;
48 [[nodiscard]] ProxyObject* asProxyObject() noexcept final;
49 [[nodiscard]] RemoteObject* asRemoteObject() noexcept final;
50 [[nodiscard]] const RemoteObject* asRemoteObject() const noexcept final;
51 [[nodiscard]] const std::
string& getLocalName() const noexcept final;
52 [[nodiscard]] TimeStamp getLastCommitTime() const noexcept final;
53 [[nodiscard]] ConnectionGuard onEventUntyped(const Event* ev, EventCallback<VarList>&& callback) final;
54 [[nodiscard]] ConnectionGuard onPropertyChangedUntyped(const Property* prop, EventCallback<VarList>&& callback) final;
55 void invokeAllPropertyCallbacks() final;
58 void invokeUntyped(const Method* method, const VarList& args, MethodCallback<Var>&& onDone = {})
final;
59 [[nodiscard]] Var getPropertyUntyped(
const Property* prop)
const final;
60 void drainInputs()
override;
61 bool isRemote() const noexcept final;
64 void sendWork(std::function<
void()>&& work,
bool forcePush) const;
65 virtual
void drainInputsImpl(TimeStamp lastCommitTime) = 0;
66 [[nodiscard]] virtual Var senImplGetPropertyImpl(MemberHash propertyId) const = 0;
67 [[nodiscard]] ConnId senImplMakeConnectionId() const noexcept;
68 void senImplEventEmitted(MemberHash
id, std::function<VarList()>&& argsGetter, const EventInfo& info) final;
69 void removeTypedConnectionOnOwner(ConnId connId);
70 void senImplRemoveUntypedConnection(ConnId
id, MemberHash memberHash) override;
73 struct EventCallbackData
76 std::shared_ptr<EventCallback<VarList>> callback;
79 using EventCallbackList = std::vector<EventCallbackData>;
83 EventCallbackList list;
87 using EventCallbackMap = std::unordered_map<MemberHash, EventData>;
91 std::shared_ptr<Object> guard_;
92 std::string localName_;
93 TimeStamp lastCommitTime_;
94 std::unique_ptr<EventCallbackMap> eventCallbacks_;
95 std::recursive_mutex eventCallbacksMutex_;
An object instantiated in this process. This is the base class for all user-implemented objects.
Definition native_object.h:63
TransportMode
How to transport information.
Definition type.h:56