44 const Message&, std::string_view task_id, std::string_view context_id)>;
45 using ArtifactBuilder = std::function<std::optional<Artifact>(
46 const program::ProgramResult&, std::string_view task_id)>;
47 using HostMessageHandler = std::function<std::optional<Task>(
48 const Message&, std::string_view task_id, std::string_view context_id,
49 const std::optional<CollaborationPeerIdentity>& authenticated_peer)>;
52 program::ProgramVersion version,
53 std::string owner_scope,
54 std::shared_ptr<CollaborationMailbox> mailbox = {},
55 InvocationBuilder invocation_builder = {},
56 ArtifactBuilder artifact_builder = {},
57 HostMessageHandler host_message_handler = {});
59 const std::string& owner_scope()
const noexcept;
60 const program::ProgramVersion& version()
const noexcept;
61 const std::shared_ptr<program::ProgramRuntime>& runtime()
const noexcept;
62 const std::shared_ptr<CollaborationMailbox>& mailbox()
const noexcept;
63 std::optional<Task> handle_host_message(
64 const Message& inbound, std::string_view task_id,
65 std::string_view context_id,
66 const std::optional<CollaborationPeerIdentity>& authenticated_peer)
const;
72 std::string_view task_id,
73 std::string_view context_id)
const;
87 program::ProgramHandle
reconnect(std::string_view task_id)
const;
93 std::string_view task_id,
94 std::string_view context_id)
const;
99 std::string_view context_id = {})
const;
108 program::ProgramHandle recover_record(
const CollaborationRecord& record)
const;
109 std::shared_ptr<program::ProgramRuntime> runtime_;
110 program::ProgramVersion version_;
111 std::string owner_scope_;
112 std::shared_ptr<CollaborationMailbox> mailbox_;
113 InvocationBuilder invocation_builder_;
114 ArtifactBuilder artifact_builder_;
115 HostMessageHandler host_message_handler_;