| 123456789101112131415161718192021222324252627282930313233343536373839 | 
							- package utp
 
- import (
 
- 	"context"
 
- 	"v2ray.com/core/common"
 
- 	"v2ray.com/core/common/dice"
 
- 	"v2ray.com/core/common/serial"
 
- )
 
- type UTP struct {
 
- 	header       byte
 
- 	extension    byte
 
- 	connectionId uint16
 
- }
 
- func (*UTP) Size() int {
 
- 	return 4
 
- }
 
- func (u *UTP) Write(b []byte) (int, error) {
 
- 	serial.Uint16ToBytes(u.connectionId, b[:0])
 
- 	b[2] = u.header
 
- 	b[3] = u.extension
 
- 	return 4, nil
 
- }
 
- // NewUTP creates a new UTP header for the given config.
 
- func NewUTP(ctx context.Context, config interface{}) (interface{}, error) {
 
- 	return &UTP{
 
- 		header:       1,
 
- 		extension:    0,
 
- 		connectionId: dice.RandomUint16(),
 
- 	}, nil
 
- }
 
- func init() {
 
- 	common.Must(common.RegisterConfig((*Config)(nil), NewUTP))
 
- }
 
 
  |