Skip to content

Commit f8700f4

Browse files
committed
Add TAMQPByteArray type for rabbitmq compat for character code 'x'
1 parent d0dd012 commit f8700f4

File tree

3 files changed

+16
-5
lines changed

3 files changed

+16
-5
lines changed

src/convert.jl

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
1-
convert(::Type{Any}, s::T) where {T<:Union{TAMQPShortStr,TAMQPLongStr}} = convert(String, s)
2-
convert(::Type{String}, s::T) where {T<:Union{TAMQPShortStr,TAMQPLongStr}} = String(convert(Vector{UInt8}, s.data))
3-
convert(::Type{T}, s::AbstractString) where {T<:Union{TAMQPShortStr,TAMQPLongStr}} = T(length(s), Vector{UInt8}(s))
1+
convert(::Type{Any}, s::T) where {T<:Union{TAMQPShortStr,TAMQPLongStr,TAMQPByteArray}} = convert(String, s)
2+
convert(::Type{String}, s::T) where {T<:Union{TAMQPShortStr,TAMQPLongStr,TAMQPByteArray}} = String(convert(Vector{UInt8}, s.data))
3+
convert(::Type{T}, s::AbstractString) where {T<:Union{TAMQPShortStr,TAMQPLongStr,TAMQPByteArray}} = T(length(s), Vector{UInt8}(s))
44
convert(::Type{TAMQPLongStr}, d::Vector{UInt8}) = TAMQPLongStr(length(d), d)
5+
convert(::Type{TAMQPByteArray}, d::Vector{UInt8}) = TAMQPByteArray(length(d), d)
56

67
convert(::Type{TAMQPFieldValue{T}}, v::T) where {T} = TAMQPFieldValue{T}(FieldIndicatorMap[T], v)
78

src/protocol.jl

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,12 @@ function read(io::IO, ::Type{TAMQPLongStr})
4040
TAMQPLongStr(len, read!(io, Vector{UInt8}(uninitialized, len)))
4141
end
4242

43-
write(io::IO, s::T) where {T<:Union{TAMQPShortStr,TAMQPLongStr}} = write(io, hton(s.len), s.data)
43+
function read(io::IO, ::Type{TAMQPByteArray})
44+
len = ntoh(read(io, TAMQPLongUInt))
45+
TAMQPByteArray(len, read!(io, Vector{UInt8}(uninitialized, len)))
46+
end
47+
48+
write(io::IO, s::T) where {T<:Union{TAMQPShortStr,TAMQPLongStr,TAMQPByteArray}} = write(io, hton(s.len), s.data)
4449

4550
function read(io::IO, ::Type{TAMQPFieldValue})
4651
c = read(io, Char)

src/types.jl

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,11 @@ struct TAMQPLongStr <: TAMQPLengthPrefixed
5353
data::Vector{UInt8}
5454
end
5555

56+
struct TAMQPByteArray <: TAMQPLengthPrefixed
57+
len::TAMQPLongUInt
58+
data::Vector{UInt8}
59+
end
60+
5661
const TAMQPFieldName = TAMQPShortStr
5762
const TAMQPFV = Union{Real, TAMQPDecimalValue, TAMQPLengthPrefixed, Nothing}
5863

@@ -93,7 +98,7 @@ const FieldValueIndicatorMap = Dict{Char,DataType}(
9398
'D' => TAMQPDecimalValue,
9499
's' => TAMQPShortUInt,
95100
'S' => TAMQPLongStr,
96-
# 'x' => TAMQPLongStr,
101+
'x' => TAMQPByteArray,
97102
'A' => TAMQPFieldArray,
98103
'T' => TAMQPTimeStamp,
99104
'F' => TAMQPFieldTable,

0 commit comments

Comments
 (0)