libzypp 17.37.17
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
8namespace 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;
47 std::vector<Chunk>::size_type chunks () 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 readUntil ( const char delim, const int64_t max = 0 );
51 int64_t readUntil( char *buffer, const char delim, int64_t max );
52 ByteArray readLine ( const int64_t max = 0 );
53 int64_t readLine( char *buffer, int64_t max );
54 bool canReadUntil ( const char delim ) const;
55 bool canReadLine () const;
56
57 private:
59 std::vector<Chunk> _chunks;
60 };
61
62}
63
64#endif
std::vector< Chunk > _chunks
Definition iobuffer_p.h:59
ByteArray readUntil(const char delim, const int64_t max=0)
Definition iobuffer.cc:205
bool canReadUntil(const char delim) const
Definition iobuffer.cc:238
bool canReadLine() const
Definition iobuffer.cc:243
int64_t _defaultChunkSize
Definition iobuffer_p.h:58
ByteArray readLine(const int64_t max=0)
Definition iobuffer.cc:228
void chop(int64_t bytes)
Definition iobuffer.cc:87
int64_t size() const
Definition iobuffer.cc:154
char * front()
Definition iobuffer.cc:35
std::vector< Chunk >::size_type chunks() const
Definition iobuffer.cc:162
int64_t read(char *buffer, int64_t max)
Definition iobuffer.cc:133
void append(const char *data, int64_t count)
Definition iobuffer.cc:113
int64_t indexOf(const char c) const
Definition iobuffer_p.h:48
char * reserve(int64_t bytes)
Definition iobuffer.cc:14
IOBuffer(int64_t chunkSize=0)
Definition iobuffer.cc:11
int64_t discard(int64_t bytes)
Definition iobuffer.cc:55
int64_t frontSize() const
Definition iobuffer.cc:43
int64_t available() const
Definition iobuffer_p.h:26
int64_t len() const
Definition iobuffer_p.h:29
const char * data() const
Definition iobuffer_p.h:22