From 36e4330e58958cf553346468664723c6c026ad1e Mon Sep 17 00:00:00 2001 From: Darien Raymond Date: Tue, 6 Dec 2016 17:36:28 +0100 Subject: [PATCH] comments --- common/alloc/buffer_pool.go | 6 ++++++ common/io/reader.go | 1 + common/io/transport.go | 3 +++ common/io/writer.go | 1 + 4 files changed, 11 insertions(+) diff --git a/common/alloc/buffer_pool.go b/common/alloc/buffer_pool.go index d8bc21da..394d429b 100644 --- a/common/alloc/buffer_pool.go +++ b/common/alloc/buffer_pool.go @@ -8,14 +8,18 @@ import ( // Pool provides functionality to generate and recycle buffers on demand. type Pool interface { + // Allocate either returns a unused buffer from the pool, or generates a new one from system. Allocate() *Buffer + // Free recycles the given buffer. Free(*Buffer) } +// SyncPool is a buffer pool based on sync.Pool type SyncPool struct { allocator *sync.Pool } +// NewSyncPool creates a SyncPool with given buffer size. func NewSyncPool(bufferSize uint32) *SyncPool { pool := &SyncPool{ allocator: &sync.Pool{ @@ -25,10 +29,12 @@ func NewSyncPool(bufferSize uint32) *SyncPool { return pool } +// Allocate implements Pool.Allocate(). func (p *SyncPool) Allocate() *Buffer { return CreateBuffer(p.allocator.Get().([]byte), p) } +// Free implements Pool.Free(). func (p *SyncPool) Free(buffer *Buffer) { rawBuffer := buffer.head if rawBuffer == nil { diff --git a/common/io/reader.go b/common/io/reader.go index 6554190f..28e39bbc 100644 --- a/common/io/reader.go +++ b/common/io/reader.go @@ -63,6 +63,7 @@ func (v *AdaptiveReader) Read() (*alloc.Buffer, error) { return buffer, nil } +// Release implements Releasable.Release(). func (v *AdaptiveReader) Release() { v.reader = nil } diff --git a/common/io/transport.go b/common/io/transport.go index 9bee868b..a56561a7 100644 --- a/common/io/transport.go +++ b/common/io/transport.go @@ -2,10 +2,12 @@ package io import ( "io" + "v2ray.com/core/common/errors" "v2ray.com/core/common/log" ) +// Pipe dumps all content from reader to writer, until an error happens. func Pipe(reader Reader, writer Writer) error { for { buffer, err := reader.Read() @@ -28,6 +30,7 @@ func Pipe(reader Reader, writer Writer) error { } } +// PipeUntilEOF behaves the same as Pipe(). The only difference is PipeUntilEOF returns nil on EOF. func PipeUntilEOF(reader Reader, writer Writer) error { err := Pipe(reader, writer) if err != nil && errors.Cause(err) != io.EOF { diff --git a/common/io/writer.go b/common/io/writer.go index 9d8a78e3..cf255f6a 100644 --- a/common/io/writer.go +++ b/common/io/writer.go @@ -39,6 +39,7 @@ func (v *AdaptiveWriter) Write(buffer *alloc.Buffer) error { return nil } +// Release implements Releasable.Release(). func (v *AdaptiveWriter) Release() { v.writer = nil }