|  | @@ -33,13 +33,23 @@ func init() {
 | 
	
		
			
				|  |  |  	}
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -// Alloc returns a byte slice with at least the given size. Minimum size of returned slice is 2048.
 | 
	
		
			
				|  |  | -func Alloc(size int32) []byte {
 | 
	
		
			
				|  |  | +// GetPool returns a sync.Pool that generates bytes array with at least the given size.
 | 
	
		
			
				|  |  | +// It may return nil if no such pool exists.
 | 
	
		
			
				|  |  | +func GetPool(size int32) *sync.Pool {
 | 
	
		
			
				|  |  |  	for idx, ps := range poolSize {
 | 
	
		
			
				|  |  |  		if size <= ps {
 | 
	
		
			
				|  |  | -			return pool[idx].Get().([]byte)
 | 
	
		
			
				|  |  | +			return &pool[idx]
 | 
	
		
			
				|  |  |  		}
 | 
	
		
			
				|  |  |  	}
 | 
	
		
			
				|  |  | +	return nil
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +// Alloc returns a byte slice with at least the given size. Minimum size of returned slice is 2048.
 | 
	
		
			
				|  |  | +func Alloc(size int32) []byte {
 | 
	
		
			
				|  |  | +	pool := GetPool(size)
 | 
	
		
			
				|  |  | +	if pool != nil {
 | 
	
		
			
				|  |  | +		return pool.Get().([]byte)
 | 
	
		
			
				|  |  | +	}
 | 
	
		
			
				|  |  |  	return make([]byte, size)
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 |