From: Tommi Virtanen Date: Wed, 6 Apr 2011 20:48:59 +0000 (-0700) Subject: buffer: Move functions touching buffer::raw internals into buffer.cc X-Git-Tag: v0.27~147 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=14cff958851e1a89ac1c8830313b323046a1b6e7;p=ceph.git buffer: Move functions touching buffer::raw internals into buffer.cc Signed-off-by: Tommi Virtanen --- diff --git a/src/common/buffer.cc b/src/common/buffer.cc index a1eee29e693..11bfc4abff3 100644 --- a/src/common/buffer.cc +++ b/src/common/buffer.cc @@ -74,6 +74,49 @@ bool buffer_track_alloc = true; #endif } + buffer::ptr::ptr(raw *r) : _raw(r), _off(0), _len(r->len) { // no lock needed; this is an unref raw. + r->nref.inc(); + bdout << "ptr " << this << " get " << _raw << bendl; + } + buffer::ptr::ptr(unsigned l) : _off(0), _len(l) { + _raw = create(l); + _raw->nref.inc(); + bdout << "ptr " << this << " get " << _raw << bendl; + } + buffer::ptr::ptr(const char *d, unsigned l) : _off(0), _len(l) { // ditto. + _raw = copy(d, l); + _raw->nref.inc(); + bdout << "ptr " << this << " get " << _raw << bendl; + } + buffer::ptr::ptr(const ptr& p) : _raw(p._raw), _off(p._off), _len(p._len) { + if (_raw) { + _raw->nref.inc(); + bdout << "ptr " << this << " get " << _raw << bendl; + } + } + buffer::ptr::ptr(const ptr& p, unsigned o, unsigned l) : _raw(p._raw), _off(p._off + o), _len(l) { + assert(o+l <= p._len); + assert(_raw); + _raw->nref.inc(); + bdout << "ptr " << this << " get " << _raw << bendl; + } + buffer::ptr& buffer::ptr::operator= (const ptr& p) { + // be careful -- we need to properly handle self-assignment. + if (p._raw) { + p._raw->nref.inc(); // inc new + bdout << "ptr " << this << " get " << _raw << bendl; + } + release(); // dec (+ dealloc) old (if any) + if (p._raw) { + _raw = p._raw; + _off = p._off; + _len = p._len; + } else { + _off = _len = 0; + } + return *this; + } + void buffer::list::encode_base64(buffer::list& o) { bufferptr bp(length() * 4 / 3 + 3); diff --git a/src/include/buffer.h b/src/include/buffer.h index 7f12f3d368b..5738f1a02a3 100644 --- a/src/include/buffer.h +++ b/src/include/buffer.h @@ -315,48 +315,12 @@ public: public: ptr() : _raw(0), _off(0), _len(0) {} - ptr(raw *r) : _raw(r), _off(0), _len(r->len) { // no lock needed; this is an unref raw. - r->nref.inc(); - bdout << "ptr " << this << " get " << _raw << bendl; - } - ptr(unsigned l) : _off(0), _len(l) { - _raw = create(l); - _raw->nref.inc(); - bdout << "ptr " << this << " get " << _raw << bendl; - } - ptr(const char *d, unsigned l) : _off(0), _len(l) { // ditto. - _raw = copy(d, l); - _raw->nref.inc(); - bdout << "ptr " << this << " get " << _raw << bendl; - } - ptr(const ptr& p) : _raw(p._raw), _off(p._off), _len(p._len) { - if (_raw) { - _raw->nref.inc(); - bdout << "ptr " << this << " get " << _raw << bendl; - } - } - ptr(const ptr& p, unsigned o, unsigned l) : _raw(p._raw), _off(p._off + o), _len(l) { - assert(o+l <= p._len); - assert(_raw); - _raw->nref.inc(); - bdout << "ptr " << this << " get " << _raw << bendl; - } - ptr& operator= (const ptr& p) { - // be careful -- we need to properly handle self-assignment. - if (p._raw) { - p._raw->nref.inc(); // inc new - bdout << "ptr " << this << " get " << _raw << bendl; - } - release(); // dec (+ dealloc) old (if any) - if (p._raw) { - _raw = p._raw; - _off = p._off; - _len = p._len; - } else { - _off = _len = 0; - } - return *this; - } + ptr(raw *r); + ptr(unsigned l); + ptr(const char *d, unsigned l); + ptr(const ptr& p); + ptr(const ptr& p, unsigned o, unsigned l); + ptr& operator= (const ptr& p); ~ptr() { release(); }