]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
common/buffer_seastar: move to crimson/crimson/buffer_seastar 55641/head
authorMatan Breizman <mbreizma@redhat.com>
Mon, 19 Feb 2024 16:11:53 +0000 (16:11 +0000)
committerMatan Breizman <mbreizma@redhat.com>
Wed, 21 Feb 2024 09:36:49 +0000 (09:36 +0000)
Signed-off-by: Matan Breizman <mbreizma@redhat.com>
src/common/buffer_seastar.cc [deleted file]
src/common/buffer_seastar.h [deleted file]
src/crimson/CMakeLists.txt
src/crimson/auth/KeyRing.cc
src/crimson/common/buffer_seastar.cc [new file with mode: 0644]
src/crimson/common/buffer_seastar.h [new file with mode: 0644]
src/test/crimson/test_denc.cc

diff --git a/src/common/buffer_seastar.cc b/src/common/buffer_seastar.cc
deleted file mode 100644 (file)
index fa040a4..0000000
+++ /dev/null
@@ -1,118 +0,0 @@
-// -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*-
-// vim: ts=8 sw=2 smarttab
-/*
- * Ceph - scalable distributed file system
- *
- * Copyright (C) 2017 Red Hat, Inc.
- *
- * This is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License version 2.1, as published by the Free Software
- * Foundation.  See file COPYING.
- *
- */
-
-#include <seastar/core/sharded.hh>
-#include <seastar/net/packet.hh>
-#include <seastar/core/reactor.hh>
-#include <seastar/core/alien.hh>
-
-#include "include/buffer_raw.h"
-#include "buffer_seastar.h"
-
-using temporary_buffer = seastar::temporary_buffer<char>;
-
-namespace ceph::buffer {
-
-class raw_seastar_foreign_ptr : public raw {
-  seastar::foreign_ptr<temporary_buffer> ptr;
-  seastar::alien::instance& alien;
- public:
-  raw_seastar_foreign_ptr(temporary_buffer&& buf)
-    : raw(buf.get_write(), buf.size()), ptr(std::move(buf)),
-      alien(seastar::engine().alien()) {}
-
-  ~raw_seastar_foreign_ptr() {
-    if (!seastar::engine_is_ready()) {
-      // we should let a seastar reactor destroy this memory, we are alien.
-      seastar::alien::run_on(alien, ptr.get_owner_shard(),
-      [_ptr = std::move(ptr)]() mutable noexcept {
-        _ptr.reset();
-      });
-    }
-  }
-};
-
-class raw_seastar_local_ptr : public raw {
-  temporary_buffer buf;
- public:
-  raw_seastar_local_ptr(temporary_buffer&& buf)
-    : raw(buf.get_write(), buf.size()), buf(std::move(buf)) {}
-};
-
-inline namespace v15_2_0 {
-
-ceph::unique_leakable_ptr<buffer::raw> create(temporary_buffer&& buf) {
-  return ceph::unique_leakable_ptr<buffer::raw>(
-    new raw_seastar_foreign_ptr(std::move(buf)));
-}
-
-ceph::unique_leakable_ptr<buffer::raw> create_local(temporary_buffer&& buf) {
-  return ceph::unique_leakable_ptr<buffer::raw>(
-    new raw_seastar_local_ptr(std::move(buf)));
-}
-
-} // inline namespace v15_2_0
-
-// buffer::ptr conversions
-
-ptr::operator seastar::temporary_buffer<char>() &
-{
-  return {c_str(), _len, seastar::make_object_deleter(*this)};
-}
-
-ptr::operator seastar::temporary_buffer<char>() &&
-{
-  auto data = c_str();
-  auto length = _len;
-  return {data, length, seastar::make_object_deleter(std::move(*this))};
-}
-
-// buffer::list conversions
-
-list::operator seastar::net::packet() &&
-{
-  seastar::net::packet p(_num);
-  for (auto& ptr : _buffers) {
-    // append each ptr as a temporary_buffer
-    p = seastar::net::packet(std::move(p), std::move(ptr));
-  }
-  clear();
-  return p;
-}
-
-} // namespace ceph::buffer
-
-namespace {
-
-using ceph::buffer::raw;
-class raw_seastar_local_shared_ptr : public raw {
-  temporary_buffer buf;
-public:
-  raw_seastar_local_shared_ptr(temporary_buffer& buf)
-    : raw(buf.get_write(), buf.size()), buf(buf.share()) {}
-};
-}
-
-buffer::ptr seastar_buffer_iterator::get_ptr(size_t len)
-{
-  buffer::ptr p{ceph::unique_leakable_ptr<buffer::raw>(
-    new raw_seastar_local_shared_ptr{buf})};
-  p.set_length(len);
-  return p;
-}
-
-buffer::ptr const_seastar_buffer_iterator::get_ptr(size_t len)
-{
-  return buffer::ptr{ buffer::copy(get_pos_add(len), len) };
-}
diff --git a/src/common/buffer_seastar.h b/src/common/buffer_seastar.h
deleted file mode 100644 (file)
index 70a7b93..0000000
+++ /dev/null
@@ -1,62 +0,0 @@
-// -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*-
-// vim: ts=8 sw=2 smarttab
-
-#include <seastar/core/temporary_buffer.hh>
-#include "include/buffer.h"
-#include "common/error_code.h"
-
-namespace details {
-
-template<bool is_const>
-class buffer_iterator_impl {
-public:
-  using pointer = std::conditional_t<is_const, const char*, char *>;
-  buffer_iterator_impl(pointer first, const char* last)
-    : pos(first), end_ptr(last)
-  {}
-  pointer get_pos_add(size_t n) {
-    auto r = pos;
-    pos += n;
-    if (pos > end_ptr) {
-      throw buffer::end_of_buffer{};
-    }
-    return r;
-  }
-  pointer get() const {
-    return pos;
-  }
-protected:
-  pointer pos;
-  const char* end_ptr;
-};
-} // namespace details
-
-class seastar_buffer_iterator : details::buffer_iterator_impl<false> {
-  using parent = details::buffer_iterator_impl<false>;
-  using temporary_buffer = seastar::temporary_buffer<char>;
-public:
-  seastar_buffer_iterator(temporary_buffer& b)
-    : parent(b.get_write(), b.end()), buf(b)
-  {}
-  using parent::pointer;
-  using parent::get_pos_add;
-  using parent::get;
-  ceph::buffer::ptr get_ptr(size_t len);
-
-private:
-  // keep the reference to buf around, so it can be "shared" by get_ptr()
-  temporary_buffer& buf;
-};
-
-class const_seastar_buffer_iterator : details::buffer_iterator_impl<true> {
-  using parent = details::buffer_iterator_impl<true>;
-  using temporary_buffer = seastar::temporary_buffer<char>;
-public:
-  const_seastar_buffer_iterator(temporary_buffer& b)
-    : parent(b.get_write(), b.end())
-  {}
-  using parent::pointer;
-  using parent::get_pos_add;
-  using parent::get;
-  ceph::buffer::ptr get_ptr(size_t len);
-};
index 510ffbd9df996f0d24cb96a0d111578cedc86eb7..6bbd7b49ec75526a526c6b5778822f31bbb5d177 100644 (file)
@@ -24,6 +24,7 @@ set(crimson_common_srcs
   common/throttle.cc
   common/tmap_helpers.cc
   common/tri_mutex.cc
+  common/buffer_seastar.cc
   crush/CrushLocation.cc)
 
 # the specialized version of ceph-common, where
@@ -35,7 +36,6 @@ add_library(crimson-common STATIC
   ${PROJECT_SOURCE_DIR}/src/common/bit_str.cc
   ${PROJECT_SOURCE_DIR}/src/common/bloom_filter.cc
   ${PROJECT_SOURCE_DIR}/src/common/buffer.cc
-  ${PROJECT_SOURCE_DIR}/src/common/buffer_seastar.cc
   ${PROJECT_SOURCE_DIR}/src/common/ceph_argparse.cc
   ${PROJECT_SOURCE_DIR}/src/common/ceph_context.cc
   ${PROJECT_SOURCE_DIR}/src/common/ceph_crypto.cc
index 436e29c1bdd0014b33ca2d513521100458522b11..b64d2d0f78a82c325a7d3d0da9f92d34ebd837ca 100644 (file)
@@ -10,7 +10,7 @@
 #include <seastar/core/future-util.hh>
 #include <seastar/core/reactor.hh>
 
-#include "common/buffer_seastar.h"
+#include "crimson/common/buffer_seastar.h"
 #include "auth/KeyRing.h"
 #include "include/denc.h"
 #include "crimson/common/buffer_io.h"
diff --git a/src/crimson/common/buffer_seastar.cc b/src/crimson/common/buffer_seastar.cc
new file mode 100644 (file)
index 0000000..fa040a4
--- /dev/null
@@ -0,0 +1,118 @@
+// -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*-
+// vim: ts=8 sw=2 smarttab
+/*
+ * Ceph - scalable distributed file system
+ *
+ * Copyright (C) 2017 Red Hat, Inc.
+ *
+ * This is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software
+ * Foundation.  See file COPYING.
+ *
+ */
+
+#include <seastar/core/sharded.hh>
+#include <seastar/net/packet.hh>
+#include <seastar/core/reactor.hh>
+#include <seastar/core/alien.hh>
+
+#include "include/buffer_raw.h"
+#include "buffer_seastar.h"
+
+using temporary_buffer = seastar::temporary_buffer<char>;
+
+namespace ceph::buffer {
+
+class raw_seastar_foreign_ptr : public raw {
+  seastar::foreign_ptr<temporary_buffer> ptr;
+  seastar::alien::instance& alien;
+ public:
+  raw_seastar_foreign_ptr(temporary_buffer&& buf)
+    : raw(buf.get_write(), buf.size()), ptr(std::move(buf)),
+      alien(seastar::engine().alien()) {}
+
+  ~raw_seastar_foreign_ptr() {
+    if (!seastar::engine_is_ready()) {
+      // we should let a seastar reactor destroy this memory, we are alien.
+      seastar::alien::run_on(alien, ptr.get_owner_shard(),
+      [_ptr = std::move(ptr)]() mutable noexcept {
+        _ptr.reset();
+      });
+    }
+  }
+};
+
+class raw_seastar_local_ptr : public raw {
+  temporary_buffer buf;
+ public:
+  raw_seastar_local_ptr(temporary_buffer&& buf)
+    : raw(buf.get_write(), buf.size()), buf(std::move(buf)) {}
+};
+
+inline namespace v15_2_0 {
+
+ceph::unique_leakable_ptr<buffer::raw> create(temporary_buffer&& buf) {
+  return ceph::unique_leakable_ptr<buffer::raw>(
+    new raw_seastar_foreign_ptr(std::move(buf)));
+}
+
+ceph::unique_leakable_ptr<buffer::raw> create_local(temporary_buffer&& buf) {
+  return ceph::unique_leakable_ptr<buffer::raw>(
+    new raw_seastar_local_ptr(std::move(buf)));
+}
+
+} // inline namespace v15_2_0
+
+// buffer::ptr conversions
+
+ptr::operator seastar::temporary_buffer<char>() &
+{
+  return {c_str(), _len, seastar::make_object_deleter(*this)};
+}
+
+ptr::operator seastar::temporary_buffer<char>() &&
+{
+  auto data = c_str();
+  auto length = _len;
+  return {data, length, seastar::make_object_deleter(std::move(*this))};
+}
+
+// buffer::list conversions
+
+list::operator seastar::net::packet() &&
+{
+  seastar::net::packet p(_num);
+  for (auto& ptr : _buffers) {
+    // append each ptr as a temporary_buffer
+    p = seastar::net::packet(std::move(p), std::move(ptr));
+  }
+  clear();
+  return p;
+}
+
+} // namespace ceph::buffer
+
+namespace {
+
+using ceph::buffer::raw;
+class raw_seastar_local_shared_ptr : public raw {
+  temporary_buffer buf;
+public:
+  raw_seastar_local_shared_ptr(temporary_buffer& buf)
+    : raw(buf.get_write(), buf.size()), buf(buf.share()) {}
+};
+}
+
+buffer::ptr seastar_buffer_iterator::get_ptr(size_t len)
+{
+  buffer::ptr p{ceph::unique_leakable_ptr<buffer::raw>(
+    new raw_seastar_local_shared_ptr{buf})};
+  p.set_length(len);
+  return p;
+}
+
+buffer::ptr const_seastar_buffer_iterator::get_ptr(size_t len)
+{
+  return buffer::ptr{ buffer::copy(get_pos_add(len), len) };
+}
diff --git a/src/crimson/common/buffer_seastar.h b/src/crimson/common/buffer_seastar.h
new file mode 100644 (file)
index 0000000..70a7b93
--- /dev/null
@@ -0,0 +1,62 @@
+// -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*-
+// vim: ts=8 sw=2 smarttab
+
+#include <seastar/core/temporary_buffer.hh>
+#include "include/buffer.h"
+#include "common/error_code.h"
+
+namespace details {
+
+template<bool is_const>
+class buffer_iterator_impl {
+public:
+  using pointer = std::conditional_t<is_const, const char*, char *>;
+  buffer_iterator_impl(pointer first, const char* last)
+    : pos(first), end_ptr(last)
+  {}
+  pointer get_pos_add(size_t n) {
+    auto r = pos;
+    pos += n;
+    if (pos > end_ptr) {
+      throw buffer::end_of_buffer{};
+    }
+    return r;
+  }
+  pointer get() const {
+    return pos;
+  }
+protected:
+  pointer pos;
+  const char* end_ptr;
+};
+} // namespace details
+
+class seastar_buffer_iterator : details::buffer_iterator_impl<false> {
+  using parent = details::buffer_iterator_impl<false>;
+  using temporary_buffer = seastar::temporary_buffer<char>;
+public:
+  seastar_buffer_iterator(temporary_buffer& b)
+    : parent(b.get_write(), b.end()), buf(b)
+  {}
+  using parent::pointer;
+  using parent::get_pos_add;
+  using parent::get;
+  ceph::buffer::ptr get_ptr(size_t len);
+
+private:
+  // keep the reference to buf around, so it can be "shared" by get_ptr()
+  temporary_buffer& buf;
+};
+
+class const_seastar_buffer_iterator : details::buffer_iterator_impl<true> {
+  using parent = details::buffer_iterator_impl<true>;
+  using temporary_buffer = seastar::temporary_buffer<char>;
+public:
+  const_seastar_buffer_iterator(temporary_buffer& b)
+    : parent(b.get_write(), b.end())
+  {}
+  using parent::pointer;
+  using parent::get_pos_add;
+  using parent::get;
+  ceph::buffer::ptr get_ptr(size_t len);
+};
index 10ebd6dce5756aa388a64b9e70df0441d635228c..568f81cdf7f62208e58a74ab961e4e9da25aade4 100644 (file)
@@ -2,7 +2,7 @@
 #include <seastar/core/temporary_buffer.hh>
 #include <gtest/gtest.h>
 #include "include/denc.h"
-#include "common/buffer_seastar.h"
+#include "crimson/common/buffer_seastar.h"
 
 using temporary_buffer = seastar::temporary_buffer<char>;
 using buffer_iterator = seastar_buffer_iterator;