Browse Source

fileutl: simple_buffer: Add write() and full() methods

These can be used to implement write buffering

Gbp-Dch: ignore
tags/debian/1.1.9
Julian Andres Klode 6 years ago
parent
commit
c368b3abe1
1 changed files with 11 additions and 0 deletions
  1. +11
    -0
      apt-pkg/contrib/fileutl.cc

+ 11
- 0
apt-pkg/contrib/fileutl.cc View File

@@ -928,6 +928,7 @@ struct APT_HIDDEN simple_buffer { /*{{{*/
const char *get() const { return buffer + bufferstart; }
char *get() { return buffer + bufferstart; }
bool empty() const { return bufferend <= bufferstart; }
bool full() const { return bufferend == buffersize_max; }
unsigned long long size() const { return bufferend-bufferstart; }
void reset() { bufferend = bufferstart = 0; }
ssize_t read(void *to, unsigned long long requested_size) APT_MUSTCHECK
@@ -940,6 +941,16 @@ struct APT_HIDDEN simple_buffer { /*{{{*/
bufferstart = bufferend = 0;
return requested_size;
}
ssize_t write(const void *from, unsigned long long requested_size) APT_MUSTCHECK
{
if (buffersize_max - size() < requested_size)
requested_size = buffersize_max - size();
memcpy(buffer + bufferend, from, requested_size);
bufferend += requested_size;
if (bufferstart == bufferend)
bufferstart = bufferend = 0;
return requested_size;
}
};
/*}}}*/



Loading…
Cancel
Save