| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 |
- package net
- import (
- "github.com/v2ray/v2ray-core/common"
- "github.com/v2ray/v2ray-core/common/alloc"
- )
- // Packet is a network packet to be sent to destination.
- type Packet interface {
- common.Releasable
- Destination() Destination
- Chunk() *alloc.Buffer // First chunk of this commnunication
- MoreChunks() bool
- }
- // NewPacket creates a new Packet with given destination and payload.
- func NewPacket(dest Destination, firstChunk *alloc.Buffer, moreChunks bool) Packet {
- return &packetImpl{
- dest: dest,
- data: firstChunk,
- moreData: moreChunks,
- }
- }
- type packetImpl struct {
- dest Destination
- data *alloc.Buffer
- moreData bool
- }
- func (packet *packetImpl) Destination() Destination {
- return packet.dest
- }
- func (packet *packetImpl) Chunk() *alloc.Buffer {
- return packet.data
- }
- func (packet *packetImpl) MoreChunks() bool {
- return packet.moreData
- }
- func (packet *packetImpl) Release() {
- packet.data.Release()
- packet.data = nil
- }
|