#include #include #include #include namespace torch::distributed::rpc { ScriptResp::ScriptResp(at::IValue&& value) : value_(std::move(value)) {} const at::IValue& ScriptResp::value() { return value_; } c10::intrusive_ptr ScriptResp::toMessageImpl() && { std::vector tensor_table; auto payload = jit::pickle(value_, &tensor_table); return c10::make_intrusive( std::move(payload), std::move(tensor_table), MessageType::SCRIPT_RET); } std::unique_ptr ScriptResp::fromMessage(const Message& message) { auto payload = static_cast(message.payload().data()); auto payload_size = message.payload().size(); auto value = jit::unpickle( payload, payload_size, *RpcAgent::getCurrentRpcAgent()->getTypeResolver(), message.tensors()); return std::make_unique(std::move(value)); } } // namespace torch::distributed::rpc