]> git.proxmox.com Git - ceph.git/blobdiff - ceph/src/common/buffer_seastar.cc
import 15.2.0 Octopus source
[ceph.git] / ceph / src / common / buffer_seastar.cc
index cd1e07df3d1203392d17e8adc34cb36cefa616c0..f1e1484eeef07c73949506f9b816c47c8e319a0e 100644 (file)
@@ -41,17 +41,19 @@ class raw_seastar_local_ptr : public raw {
   }
 };
 
-inline namespace v14_2_0 {
+inline namespace v15_2_0 {
 
-raw* create_foreign(temporary_buffer&& buf) {
-  return new raw_seastar_foreign_ptr(std::move(buf));
+ceph::unique_leakable_ptr<buffer::raw> create_foreign(temporary_buffer&& buf) {
+  return ceph::unique_leakable_ptr<buffer::raw>(
+    new raw_seastar_foreign_ptr(std::move(buf)));
 }
 
-raw* create(temporary_buffer&& buf) {
-  return new raw_seastar_local_ptr(std::move(buf));
+ceph::unique_leakable_ptr<buffer::raw> create(temporary_buffer&& buf) {
+  return ceph::unique_leakable_ptr<buffer::raw>(
+    new raw_seastar_local_ptr(std::move(buf)));
 }
 
-} // inline namespace v14_2_0
+} // inline namespace v15_2_0
 
 // buffer::ptr conversions
 
@@ -72,7 +74,7 @@ ptr::operator seastar::temporary_buffer<char>() &&
 list::operator seastar::net::packet() &&
 {
   seastar::net::packet p;
-  p.reserve(_buffers.size());
+  p.reserve(_num);
   for (auto& ptr : _buffers) {
     // append each ptr as a temporary_buffer
     p = seastar::net::packet(std::move(p), std::move(ptr));
@@ -99,8 +101,8 @@ public:
 
 buffer::ptr seastar_buffer_iterator::get_ptr(size_t len)
 {
-  buffer::raw* r = new raw_seastar_local_shared_ptr{buf};
-  buffer::ptr p{r};
+  buffer::ptr p{ceph::unique_leakable_ptr<buffer::raw>(
+    new raw_seastar_local_shared_ptr{buf})};
   p.set_length(len);
   return p;
 }