8 #ifndef BOOSTER_AIO_BUFFER_H
9 #define BOOSTER_AIO_BUFFER_H
23 template<
typename Po
inter>
48 std::pair<entry const *,size_t>
get()
const
64 void add(Pointer p,
size_t s)
75 vec_.push_back(entry_);
91 std::vector<entry> vec_;
114 for(
unsigned i=0;i<data.second;i++)
115 add(data.first[i].ptr,data.first[i].size);
125 tmp.
add(reinterpret_cast<char const *>(p),n);
134 tmp.
add(reinterpret_cast<char *>(p),n);
142 return buffer(&d.front(),d.size());
149 return buffer(&d.front(),d.size());
156 return buffer(d.c_str(),d.size());
162 template<
typename Buffer>
163 Buffer advance(Buffer
const &buf,
size_t n)
166 typename Buffer::buffer_data_type data=buf.
get();
167 while(data.second > 0 && n > 0) {
168 if(data.first->size <= n) {
169 n-= data.first->size;
174 res.add(data.first->ptr + n,data.first->size - n);
180 while(data.second > 0) {
181 res.add(data.first->ptr,data.first->size);
187 template<
typename Buffer>
188 void add(Buffer &left,Buffer
const &right)
190 typename Buffer::buffer_data_type data=right.get();
191 for(
unsigned i=0;i<data.second;i++)
192 left.add(data.first[i].ptr,data.first[i].size);
205 return details::advance(buf,n);
214 return details::advance(buf,n);
221 buf = details::advance(buf,n);
229 buf = details::advance(buf,n);
238 details::add(tmp,b2);
255 details::add(tmp,b2);
A mutable buffer - a buffer for read operations.
Definition: buffer.h:97
bool empty() const
Definition: buffer.h:84
const_buffer & operator+=(const_buffer &buf, size_t n)
Definition: buffer.h:219
An immutable buffer - buffer for write operations.
Definition: buffer.h:105
This is a base class that represents a buffer - a set of contiguous chunks of memory that can be tran...
Definition: buffer.h:24
const_buffer operator+(const_buffer const &buf, size_t n)
Definition: buffer.h:203
const_buffer(mutable_buffer const &other)
Definition: buffer.h:111
buffer_impl()
Definition: buffer.h:37
std::pair< entry const *, size_t > get() const
Definition: buffer.h:48
const_buffer buffer(void const *p, size_t n)
Definition: buffer.h:122
std::pair< entry const *, size_t > buffer_data_type
A pair that defined the chunk.
Definition: buffer.h:43
void add(Pointer p, size_t s)
Definition: buffer.h:64