func readFieldMetadata()

in Sources/TwitterApacheThrift/ThriftCompactBinary.swift [75:90]


    func readFieldMetadata(previousId: Int) throws -> (type: ThriftType, id: Int?) {
        let binary = try readByte()
        if binary == 0 {
            return (.stop, nil)
        }
        let fieldIdDelta = UInt8((binary & 0xF0) >> 4)
        let fieldType = UInt8(binary & 0x0F)
        let type = try ThriftType(compactValue: fieldType)

        if fieldIdDelta == 0 {
            let fieldId = try Int16(zigZag: super.readInt16())
            return (type, Int(fieldId))
        }

        return (type, Int(fieldIdDelta) + previousId)
    }