DataChannel: decoding / encoding
This commit is contained in:
parent
6174511f5b
commit
a1aeafc3a3
|
@ -0,0 +1,25 @@
|
|||
import ../webrtc/datachannel
|
||||
import chronos/unittest2/asynctests
|
||||
import binary_serialization
|
||||
|
||||
suite "DataChannel encoding":
|
||||
test "DataChannelOpenMessage":
|
||||
let msg = @[
|
||||
0x03'u8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x03, 0x00, 0x03, 0x66, 0x6f, 0x6f, 0x62, 0x61, 0x72]
|
||||
check msg == Binary.encode(Binary.decode(msg, DataChannelMessage))
|
||||
check Binary.decode(msg, DataChannelMessage).openMessage ==
|
||||
DataChannelOpenMessage(
|
||||
channelType: Reliable,
|
||||
priority: 0,
|
||||
reliabilityParameter: 0,
|
||||
labelLength: 3,
|
||||
protocolLength: 3,
|
||||
label: @[102, 111, 111],
|
||||
protocol: @[98, 97, 114]
|
||||
)
|
||||
|
||||
test "DataChannelAck":
|
||||
let msg = @[0x02'u8]
|
||||
check msg == Binary.encode(Binary.decode(msg, DataChannelMessage))
|
||||
check Binary.decode(msg, DataChannelMessage).messageType == Ack
|
|
@ -0,0 +1,46 @@
|
|||
# Nim-WebRTC
|
||||
# Copyright (c) 2023 Status Research & Development GmbH
|
||||
# Licensed under either of
|
||||
# * Apache License, version 2.0, ([LICENSE-APACHE](LICENSE-APACHE))
|
||||
# * MIT license ([LICENSE-MIT](LICENSE-MIT))
|
||||
# at your option.
|
||||
# This file may not be copied, modified, or distributed except according to
|
||||
# those terms.
|
||||
|
||||
import chronos,
|
||||
chronicles,
|
||||
binary_serialization
|
||||
|
||||
export binary_serialization
|
||||
|
||||
logScope:
|
||||
topics = "webrtc datachannel"
|
||||
|
||||
type
|
||||
DataChannelMessageType* {.size: 1.} = enum
|
||||
Reserved = 0x00
|
||||
Ack = 0x02
|
||||
Open = 0x03
|
||||
|
||||
DataChannelMessage* = object
|
||||
case messageType*: DataChannelMessageType
|
||||
of Open: openMessage*: DataChannelOpenMessage
|
||||
else: discard
|
||||
|
||||
DataChannelType {.size: 1.} = enum
|
||||
Reliable = 0x00
|
||||
PartialReliableRexmit = 0x01
|
||||
PartialReliableTimed = 0x02
|
||||
ReliableUnordered = 0x80
|
||||
PartialReliableRexmitUnordered = 0x81
|
||||
PartialReliableTimedUnorderd = 0x82
|
||||
|
||||
|
||||
DataChannelOpenMessage* = object
|
||||
channelType*: DataChannelType
|
||||
priority*: uint16
|
||||
reliabilityParameter*: uint32
|
||||
labelLength* {.bin_value: it.label.len.}: uint16
|
||||
protocolLength* {.bin_value: it.protocol.len.}: uint16
|
||||
label* {.bin_len: it.labelLength.}: seq[byte]
|
||||
protocol* {.bin_len: it.protocolLength.}: seq[byte]
|
Loading…
Reference in New Issue