trpc.group/trpc-go/trpc-go@v1.0.3/internal/linkbuffer/link_buffer.go (about)

     1  //
     2  //
     3  // Tencent is pleased to support the open source community by making tRPC available.
     4  //
     5  // Copyright (C) 2023 THL A29 Limited, a Tencent company.
     6  // All rights reserved.
     7  //
     8  // If you have downloaded a copy of the tRPC source code from Tencent,
     9  // please note that tRPC source code is licensed under the  Apache 2.0 License,
    10  // A copy of the Apache 2.0 License is included in this file.
    11  //
    12  //
    13  
    14  package linkbuffer
    15  
    16  import "io"
    17  
    18  // Buffer is the interface of link buffer.
    19  type Buffer interface {
    20  	Reader
    21  	Writer
    22  	Release()
    23  }
    24  
    25  // Reader is the interface to read from link buffer.
    26  type Reader interface {
    27  	io.Reader
    28  	ReadN(size int) ([]byte, int)
    29  	ReadAll() [][]byte
    30  	ReadNext() []byte
    31  }
    32  
    33  // Writer is the interface to write to link buffer.
    34  type Writer interface {
    35  	io.Writer
    36  	Append(...[]byte)
    37  	Prepend(...[]byte)
    38  	Alloc(size int) []byte
    39  	Prelloc(size int) []byte
    40  	Len() int
    41  	Merge(Reader)
    42  }