field_ios

In-the-field app for Radroots on iOS
git clone https://radroots.dev/git/field_ios.git
Log | Files | Refs | README | LICENSE

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 }