#pragma once #include "isolate/remote_handle.h" #include "transferable.h" #include #include namespace ivm { class ContextHandle : public TransferableHandle { public: ContextHandle(RemoteHandle context, RemoteHandle global); static auto Definition() -> v8::Local; auto TransferOut() -> std::unique_ptr final; auto GetContext() const -> RemoteHandle; auto GlobalGetter() -> v8::Local; auto Release() -> v8::Local; template auto Eval(v8::Local code, v8::MaybeLocal maybe_options) -> v8::Local; template auto EvalClosure( v8::Local code, v8::Maybe maybe_arguments, v8::MaybeLocal maybe_options ) -> v8::Local; private: RemoteHandle context; RemoteHandle global; RemoteHandle global_reference; }; } // namespace ivm