| 
					
				 | 
			
			
				@@ -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 { 
			 |