mirror of https://github.com/v2ray/v2ray-core
				
				
				
			
		
			
				
	
	
		
			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
 | |
| }
 |