import Foundation import HaishinKit final class RTMPHandshake { static let sigSize: Int = 1536 static let protocolVersion: UInt8 = 3 var timestamp: TimeInterval = 0 var hasS0S1Packet: Bool { RTMPHandshake.sigSize + 1 < inputBuffer.count } var hasS2Packet: Bool { RTMPHandshake.sigSize == inputBuffer.count } private var inputBuffer: Data = .init() var c0c1packet: Data { let packet = ByteArray() .writeUInt8(RTMPHandshake.protocolVersion) .writeInt32(Int32(timestamp)) .writeBytes(Data([0x00, 0x00, 0x00, 0x00])) for _ in 0.. Data { defer { inputBuffer.removeSubrange(0...Self.sigSize) } return ByteArray() .writeBytes(inputBuffer.subdata(in: 1..<5)) .writeInt32(Int32(Date().timeIntervalSince1970 - timestamp)) .writeBytes(inputBuffer.subdata(in: 9..