mirror of
https://github.com/bjdgyc/anylink.git
synced 2025-08-08 19:50:18 +08:00
添加 github.com/pion/dtls 代码
This commit is contained in:
48
dtls-2.0.9/pkg/protocol/compression_method.go
Normal file
48
dtls-2.0.9/pkg/protocol/compression_method.go
Normal file
@@ -0,0 +1,48 @@
|
||||
package protocol
|
||||
|
||||
// CompressionMethodID is the ID for a CompressionMethod
|
||||
type CompressionMethodID byte
|
||||
|
||||
const (
|
||||
compressionMethodNull CompressionMethodID = 0
|
||||
)
|
||||
|
||||
// CompressionMethod represents a TLS Compression Method
|
||||
type CompressionMethod struct {
|
||||
ID CompressionMethodID
|
||||
}
|
||||
|
||||
// CompressionMethods returns all supported CompressionMethods
|
||||
func CompressionMethods() map[CompressionMethodID]*CompressionMethod {
|
||||
return map[CompressionMethodID]*CompressionMethod{
|
||||
compressionMethodNull: {ID: compressionMethodNull},
|
||||
}
|
||||
}
|
||||
|
||||
// DecodeCompressionMethods the given compression methods
|
||||
func DecodeCompressionMethods(buf []byte) ([]*CompressionMethod, error) {
|
||||
if len(buf) < 1 {
|
||||
return nil, errBufferTooSmall
|
||||
}
|
||||
compressionMethodsCount := int(buf[0])
|
||||
c := []*CompressionMethod{}
|
||||
for i := 0; i < compressionMethodsCount; i++ {
|
||||
if len(buf) <= i+1 {
|
||||
return nil, errBufferTooSmall
|
||||
}
|
||||
id := CompressionMethodID(buf[i+1])
|
||||
if compressionMethod, ok := CompressionMethods()[id]; ok {
|
||||
c = append(c, compressionMethod)
|
||||
}
|
||||
}
|
||||
return c, nil
|
||||
}
|
||||
|
||||
// EncodeCompressionMethods the given compression methods
|
||||
func EncodeCompressionMethods(c []*CompressionMethod) []byte {
|
||||
out := []byte{byte(len(c))}
|
||||
for i := len(c); i > 0; i-- {
|
||||
out = append(out, byte(c[i-1].ID))
|
||||
}
|
||||
return out
|
||||
}
|
Reference in New Issue
Block a user