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))
| }
|
|