mirror of
https://github.com/HaishinKit/HaishinKit.swift.git
synced 2026-05-07 20:12:28 +00:00
76 lines
2.1 KiB
Swift
76 lines
2.1 KiB
Swift
import Foundation
|
|
|
|
public enum MoQTMessageType: Int, Sendable {
|
|
case subscribeUpdate = 0x02
|
|
case subscribe = 0x03
|
|
case subscribeOk = 0x04
|
|
case subscribeError = 0x05
|
|
case announce = 0x06
|
|
case announceOk = 0x07
|
|
case announceError = 0x08
|
|
case unannounce = 0x09
|
|
case unsubscribe = 0x0A
|
|
case subscribeDone = 0x0B
|
|
case announceCancel = 0x0C
|
|
case trackStatusRequest = 0x0D
|
|
case trackStatus = 0x0E
|
|
case goaway = 0x10
|
|
case subscribeAnnounuces = 0x11
|
|
case subscribeAnnounucesOk = 0x12
|
|
case subscribeAnnounucesError = 0x13
|
|
case clientSetup = 0x40
|
|
case serverSetup = 0x41
|
|
|
|
func makeMessage(_ payload: inout MoQTPayload) throws -> (any MoQTControlMessage)? {
|
|
switch self {
|
|
case .subscribeUpdate:
|
|
return nil
|
|
case .subscribe:
|
|
return try MoQTSubscribe(&payload)
|
|
case .subscribeOk:
|
|
return try MoQTSubscribeOk(&payload)
|
|
case .subscribeError:
|
|
return try MoQTSubscribeError(&payload)
|
|
case .announce:
|
|
return nil
|
|
case .announceOk:
|
|
return try MoQTAnnounceOk(&payload)
|
|
case .announceError:
|
|
return try MoQTAnnounceError(&payload)
|
|
case .unannounce:
|
|
return nil
|
|
case .unsubscribe:
|
|
return nil
|
|
case .subscribeDone:
|
|
return nil
|
|
case .announceCancel:
|
|
return nil
|
|
case .trackStatusRequest:
|
|
return nil
|
|
case .trackStatus:
|
|
return nil
|
|
case .goaway:
|
|
return nil
|
|
case .subscribeAnnounuces:
|
|
return nil
|
|
case .subscribeAnnounucesOk:
|
|
return try MoQTSubscribeAnnouncesOk(&payload)
|
|
case .subscribeAnnounucesError:
|
|
return try MoQTSubscribeAnnouncesError(&payload)
|
|
case .clientSetup:
|
|
return nil
|
|
case .serverSetup:
|
|
return try MoQTServerSetup(&payload)
|
|
}
|
|
}
|
|
}
|
|
|
|
enum MoQTControlMessageError: Swift.Error {
|
|
case notImplemented
|
|
}
|
|
|
|
public protocol MoQTControlMessage: Sendable {
|
|
var type: MoQTMessageType { get }
|
|
var payload: Data { get throws }
|
|
}
|