Hunter0x7c7
2022-08-11 a82f9cb69f63aaeba40c024960deda7d75b9fece
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
package utp
 
import (
    "context"
    "encoding/binary"
 
    "github.com/v2fly/v2ray-core/v5/common"
    "github.com/v2fly/v2ray-core/v5/common/dice"
)
 
type UTP struct {
    header       byte
    extension    byte
    connectionID uint16
}
 
func (*UTP) Size() int32 {
    return 4
}
 
// Serialize implements PacketHeader.
func (u *UTP) Serialize(b []byte) {
    binary.BigEndian.PutUint16(b, u.connectionID)
    b[2] = u.header
    b[3] = u.extension
}
 
// New creates a new UTP header for the given config.
func New(ctx context.Context, config interface{}) (interface{}, error) {
    return &UTP{
        header:       1,
        extension:    0,
        connectionID: dice.RollUint16(),
    }, nil
}
 
func init() {
    common.Must(common.RegisterConfig((*Config)(nil), New))
}