24 m_bufferSize(bufCapacity), m_buffer(bufCapacity,0), m_externalOffset(0),m_bufLength(0) {
99 ssize_t readlength = blen;
108 if (readlength == 0) {
112 const char* rawbufstart =
m_buffer.data();
117 memcpy(
reinterpret_cast<char*
>(buf), rawbufstart + offset, readlength);
132 BUFLOG(
"XrdCephBufferDataSimple::writeBuffer: offset <0");
137 if ((ssize_t)blen > cap) {
138 BUFLOG(
"XrdCephBufferDataSimple::writeBuffer: blen > cap:" << blen <<
" > " << cap);
141 if ((ssize_t)offset > cap) {
142 BUFLOG(
"XrdCephBufferDataSimple::writeBuffer: offset > cap:" << offset <<
" > " << cap);
145 if (ssize_t(offset + blen) > cap) {
146 BUFLOG(
"XrdCephBufferDataSimple::writeBuffer: (offset + blen) > cap: (" << offset <<
" + " << blen <<
") >" << cap);
151 size_t readBytes = blen;
152 char* rawbufstart =
m_buffer.data();
158 memcpy(rawbufstart + offset, buf, readBytes);
virtual ssize_t readBuffer(void *buf, off_t offset, size_t blen) const override
set cache into an invalid state
virtual off_t setStartingOffset(off_t offset) override
virtual bool isValid() const override
Currently occupied and valid space, which may be less than capacity.
virtual size_t capacity() const override
virtual off_t startingOffset() const override
size_t m_bufLength
what does the first byte of the buffer map to for external offsets
XrdCephBufferDataSimple(size_t bufCapacity)
virtual ssize_t invalidate() override
copy data from the internal buffer to buf
bool m_valid
the buffer size
virtual void setValid(bool isValid) override
virtual ~XrdCephBufferDataSimple()
virtual ssize_t writeBuffer(const void *buf, off_t offset, size_t blen, off_t externalOffset=0) override
set cache into an invalid state; do this before writes to be consistent
static std::atomic< long > m_total_memory_nbuffers
total number of buffers actively open
static std::atomic< long > m_total_memory_used
total memory of all these buffers
virtual size_t length() const override
total available space
virtual void setLength(size_t len) override
Currently occupied and valid space, which may be less than capacity.
std::vector< char > m_buffer
is a simple implementation of IXrdCephBufferData using std::vector<char> representation for the buffe...