TeraRuntimeClientSubmission.swift (5196B)
1 extension TeraRuntimeClient { 2 /// Run the native inactivity reservation inside the retained runtime worker. 3 /// A caller deadline cannot release it while the underlying FFI is returning. 4 func withUploadRenewal(_ body: @escaping @Sendable (any TeraRuntimeBackend) async throws -> TeraSubmissionStatus) async throws -> TeraSubmissionStatus { 5 try await addOperation("runtime.submission.renew_upload", submission: true, body) 6 } 7 8 func uploadSubmissionMedia(input: TeraSubmissionMediaRequest) async throws -> TeraSubmissionStatus { 9 try await addOperation("runtime.submission.upload", submission: true) { try await $0.uploadSubmissionMedia(input: input) } 10 } 11 12 func requestSubmissionStop(request: TeraSubmissionRequest) async throws -> TeraSubmissionStatus { 13 try await addOperation("runtime.submission.stop") { try await $0.requestSubmissionStop(request: request) } 14 } 15 16 func reconcileSubmissionLocal(request: TeraSubmissionRequest, context: TeraLocalNetwork) async throws -> TeraSubmissionStatus { 17 try await addOperation("runtime.submission.reconcile_local", submission: true) { 18 try await $0.reconcileSubmissionLocal(request: request, context: context) 19 } 20 } 21 22 func prepareSubmission(request: TeraSubmissionRequest, media: [TeraPreparedMediaHandle]) async throws -> TeraSubmissionStatus { 23 try await addOperation("runtime.submission.prepare", submission: true) { try await $0.prepareSubmission(request: request, media: media) } 24 } 25 26 func recoverSubmission(request: TeraSubmissionRequest) async throws -> TeraSubmissionStatus? { 27 try await addOperation("runtime.submission.recover", submission: true) { try await $0.recoverSubmission(request: request) } 28 } 29 30 func submissionStatus(request: TeraSubmissionRequest) async throws -> TeraSubmissionStatus { 31 try await addOperation("runtime.submission.status") { try await $0.submissionStatus(request: request) } 32 } 33 34 func advanceSubmission(request: TeraSubmissionRequest, expectedRevision: UInt64) async throws -> TeraSubmissionStatus { 35 try await addOperation("runtime.submission.advance", submission: true) { try await $0.advanceSubmission(request: request, expectedRevision: expectedRevision) } 36 } 37 38 func listSubmissions(scope: TeraComposerScope, limit: UInt16 = 100, cursor: String? = nil) async throws -> TeraSubmissionPage { 39 try await addOperation("runtime.submission.list") { try await $0.listSubmissions(scope: scope, limit: limit, cursor: cursor) } 40 } 41 42 func prepareSubmissionUpload(input: TeraSubmissionMediaRequest) async throws -> TeraSubmissionUploadJob { 43 try await addOperation("runtime.submission.prepare_upload", submission: true) { try await $0.prepareSubmissionUpload(input: input) } 44 } 45 46 func completeSubmissionUpload(input: TeraSubmissionMediaRequest, response: TeraAddBackgroundUploadReceipt) async throws -> TeraSubmissionStatus { 47 try await addOperation("runtime.submission.complete_upload", submission: true) { try await $0.completeSubmissionUpload(input: input, response: response) } 48 } 49 } 50 51 extension TeraRuntimeBackend { 52 func renewSubmissionUpload(input _: TeraSubmissionMediaRequest, renewal _: TeraSubmissionUploadRenewal) async throws -> TeraSubmissionUploadJob { 53 throw submissionUnavailable() 54 } 55 56 func renewSubmissionMedia(input _: TeraSubmissionMediaRequest, renewal _: TeraSubmissionUploadRenewal) async throws -> TeraSubmissionStatus { 57 throw submissionUnavailable() 58 } 59 60 func uploadSubmissionMedia(input _: TeraSubmissionMediaRequest) async throws -> TeraSubmissionStatus { 61 throw submissionUnavailable() 62 } 63 64 func requestSubmissionStop(request _: TeraSubmissionRequest) async throws -> TeraSubmissionStatus { 65 throw submissionUnavailable() 66 } 67 68 func reconcileSubmissionLocal(request _: TeraSubmissionRequest, context _: TeraLocalNetwork) async throws -> TeraSubmissionStatus { 69 throw submissionUnavailable() 70 } 71 72 func prepareSubmission(request _: TeraSubmissionRequest, media _: [TeraPreparedMediaHandle]) async throws -> TeraSubmissionStatus { 73 throw submissionUnavailable() 74 } 75 76 func recoverSubmission(request _: TeraSubmissionRequest) async throws -> TeraSubmissionStatus? { 77 throw submissionUnavailable() 78 } 79 80 func submissionStatus(request _: TeraSubmissionRequest) async throws -> TeraSubmissionStatus { 81 throw submissionUnavailable() 82 } 83 84 func advanceSubmission(request _: TeraSubmissionRequest, expectedRevision _: UInt64) async throws -> TeraSubmissionStatus { 85 throw submissionUnavailable() 86 } 87 88 func listSubmissions(scope _: TeraComposerScope, limit _: UInt16, cursor _: String?) async throws -> TeraSubmissionPage { 89 throw submissionUnavailable() 90 } 91 92 func prepareSubmissionUpload(input _: TeraSubmissionMediaRequest) async throws -> TeraSubmissionUploadJob { 93 throw submissionUnavailable() 94 } 95 96 func completeSubmissionUpload(input _: TeraSubmissionMediaRequest, response _: TeraAddBackgroundUploadReceipt) async throws -> TeraSubmissionStatus { 97 throw submissionUnavailable() 98 } 99 100 private func submissionUnavailable() -> TeraRuntimeFailure { 101 .local(operation: "runtime.submission", code: "ios.add.unsupported", safeMessage: "Scoped submission is unavailable.") 102 } 103 }