Introduce Packet to unify TCP and UDP communication

This commit is contained in:
V2Ray
2015-09-22 14:45:03 +02:00
parent 4320c14efd
commit 4874cd54a4
12 changed files with 124 additions and 41 deletions
+53
View File
@@ -0,0 +1,53 @@
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
}