TeraSubmissionModels.swift (1602B)
1 import Foundation 2 3 /// Identity of one intentional action; retain the request unchanged for every retry. 4 struct TeraSubmissionRequest: Sendable, Equatable { 5 let commandID: String 6 let scope: TeraComposerScope 7 let composerID: String 8 let expectedRevision: UInt64 9 } 10 11 /// A saved source reservation, without publication or delivery authority. 12 struct TeraSubmissionReservation: Sendable, Equatable { 13 let commandID: String 14 let reservationID: String 15 let captured: TeraComposerDraft 16 let reservedAtUnixMilliseconds: UInt64 17 let replayed: Bool 18 } 19 20 extension TeraRuntimeBackend { 21 func reserveSubmissionID() async throws -> String { 22 throw TeraRuntimeFailure.local(operation: "runtime.submission", code: "ios.add.unsupported", 23 safeMessage: "Submission reservation is unavailable.") 24 } 25 26 func reserveSubmission(request _: TeraSubmissionRequest) async throws -> TeraSubmissionReservation { 27 throw TeraRuntimeFailure.local(operation: "runtime.submission", code: "ios.add.unsupported", 28 safeMessage: "Submission reservation is unavailable.") 29 } 30 } 31 32 extension TeraRuntimeClient { 33 func reserveSubmissionID() async throws -> String { 34 try await addOperation("runtime.submission.reserve_id") { backend in 35 try await backend.reserveSubmissionID() 36 } 37 } 38 39 func reserveSubmission(request: TeraSubmissionRequest) async throws -> TeraSubmissionReservation { 40 try await addOperation("runtime.submission.reserve", submission: true) { backend in 41 try await backend.reserveSubmission(request: request) 42 } 43 } 44 }