github.com/pharosnet/flyline@v1.0.2/buffer.go (about) 1 package flyline 2 3 import ( 4 "context" 5 "errors" 6 ) 7 8 var ErrBufSendClosed = errors.New("can not send item into the closed buffer") 9 var ErrBufCloseClosed = errors.New("can not close buffer, buffer is closed") 10 var ErrBufSyncUnclosed = errors.New("can not sync buffer, buffer is not closed") 11 12 // buffer interface 13 type Buffer interface { 14 // Send item into buffer. 15 Send(i interface{}) (err error) 16 // Recv value from buffer, if active eq false, then the buffer is closed and no remains. 17 Recv() (value interface{}, active bool) 18 // Get remains length 19 Len() (length int64) 20 // Close Buffer, when closed, can not send item into buffer, but can recv remains. 21 Close() (err error) 22 // Sync, waiting for remains to be received. Only can be called after Close(). 23 Sync(ctx context.Context) (err error) 24 }