mirror of
https://github.com/v2fly/v2ray-core.git
synced 2024-11-17 18:06:15 -05:00
54 lines
880 B
Go
54 lines
880 B
Go
|
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
|
||
|
}
|