libzypp  17.34.1
iobuffer_p.h
Go to the documentation of this file.
1 #ifndef ZYPPNG_IO_IOBUFFER_P_H
2 #define ZYPPNG_IO_IOBUFFER_P_H
3 
4 #include <zypp-core/zyppng/core/ByteArray>
5 #include <vector>
6 #include <cstdint>
7 
8 namespace zyppng {
9 
10  class IOBuffer {
11 
12  struct Chunk {
14 
15  int64_t head = 0;
16  int64_t tail = 0;
17 
18  char * data () {
19  return _buffer.data() + head;
20  }
21 
22  const char * data () const {
23  return _buffer.data() + head;
24  }
25 
26  int64_t available() const {
27  return _buffer.size() - tail;
28  }
29  int64_t len () const {
30  return tail - head;
31  }
32  };
33 
34  public:
35  IOBuffer( int64_t chunkSize = 0 );
36 
37  char *reserve( int64_t bytes );
38  char *front ();
39  int64_t frontSize () const;
40  void clear ( );
41  int64_t discard( int64_t bytes );
42  void chop ( int64_t bytes );
43  void append ( const char *data, int64_t count );
44  void append ( const ByteArray &data );
45  int64_t read ( char *buffer, int64_t max );
46  int64_t size ( ) const;
48  inline int64_t indexOf ( const char c ) const { return indexOf( c, size() ); }
49  int64_t indexOf (const char c, int64_t maxCount, int64_t pos = 0 ) const;
50  ByteArray readLine ( const int64_t max = 0 );
51  int64_t readLine( char *buffer, int64_t max );
52  bool canReadLine () const;
53 
54  private:
56  std::vector<Chunk> _chunks;
57  };
58 
59 }
60 
61 #endif
IOBuffer(int64_t chunkSize=0)
Definition: iobuffer.cc:11
int64_t indexOf(const char c) const
Definition: iobuffer_p.h:48
ByteArray readLine(const int64_t max=0)
Definition: iobuffer.cc:205
int64_t available() const
Definition: iobuffer_p.h:26
char * front()
Definition: iobuffer.cc:35
int64_t size() const
Definition: iobuffer.cc:154
void append(const char *data, int64_t count)
Definition: iobuffer.cc:113
int64_t discard(int64_t bytes)
Definition: iobuffer.cc:55
int64_t frontSize() const
Definition: iobuffer.cc:43
int64_t _defaultChunkSize
Definition: iobuffer_p.h:55
bool canReadLine() const
Definition: iobuffer.cc:228
std::vector< Chunk > _chunks
Definition: iobuffer_p.h:56
void chop(int64_t bytes)
Definition: iobuffer.cc:87
int64_t len() const
Definition: iobuffer_p.h:29
int64_t read(char *buffer, int64_t max)
Definition: iobuffer.cc:133
const char * data() const
Definition: iobuffer_p.h:22
SolvableIdType size_type
Definition: PoolMember.h:126
char * reserve(int64_t bytes)
Definition: iobuffer.cc:14
std::vector< Chunk >::size_type chunks() const
Definition: iobuffer.cc:162