mirror of https://github.com/v2ray/v2ray-core
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
54 lines
880 B
54 lines
880 B
package net
|
|
|
|
type Packet interface {
|
|
Destination() Destination
|
|
Chunk() []byte // First chunk of this commnunication
|
|
MoreChunks() bool
|
|
}
|
|
|
|
func NewTCPPacket(dest Destination) *TCPPacket {
|
|
return &TCPPacket{
|
|
basePacket: basePacket{destination: dest},
|
|
}
|
|
}
|
|
|
|
func NewUDPPacket(dest Destination, data []byte) *UDPPacket {
|
|
return &UDPPacket{
|
|
basePacket: basePacket{destination: dest},
|
|
data: data,
|
|
}
|
|
}
|
|
|
|
type basePacket struct {
|
|
destination Destination
|
|
}
|
|
|
|
func (base basePacket) Destination() Destination {
|
|
return base.destination
|
|
}
|
|
|
|
type TCPPacket struct {
|
|
basePacket
|
|
}
|
|
|
|
func (packet *TCPPacket) Chunk() []byte {
|
|
return nil
|
|
}
|
|
|
|
func (packet *TCPPacket) MoreChunks() bool {
|
|
return true
|
|
}
|
|
|
|
type UDPPacket struct {
|
|
basePacket
|
|
data []byte
|
|
}
|
|
|
|
func (packet *UDPPacket) Chunk() []byte {
|
|
return packet.data
|
|
}
|
|
|
|
func (packet *UDPPacket) MoreChunks() bool {
|
|
return false
|
|
}
|