]> git.proxmox.com Git - ceph.git/blobdiff - ceph/src/seastar/src/core/semaphore.cc
update ceph source to reef 18.1.2
[ceph.git] / ceph / src / seastar / src / core / semaphore.cc
index 826d39f1a9eae55395b8e051168903c1153ffe81..4856f7775aff6de0f56f8ee4dac425878a1f1a68 100644 (file)
@@ -45,6 +45,10 @@ const char* semaphore_timed_out::what() const noexcept {
     return "Semaphore timedout";
 }
 
+const char* semaphore_aborted::what() const noexcept {
+    return "Semaphore aborted";
+}
+
 semaphore_timed_out semaphore_default_exception_factory::timeout() noexcept {
     static_assert(std::is_nothrow_default_constructible_v<semaphore_timed_out>);
     return semaphore_timed_out();
@@ -55,6 +59,11 @@ broken_semaphore semaphore_default_exception_factory::broken() noexcept {
     return broken_semaphore();
 }
 
+semaphore_aborted semaphore_default_exception_factory::aborted() noexcept {
+    static_assert(std::is_nothrow_default_constructible_v<semaphore_aborted>);
+    return semaphore_aborted();
+}
+
 // A factory of semaphore exceptions that contain additional context: the semaphore name
 // auto sem = named_semaphore(0, named_semaphore_exception_factory{"file_opening_limit_semaphore"});
 
@@ -81,6 +90,14 @@ broken_named_semaphore::broken_named_semaphore(std::string_view msg) noexcept :
     }
 }
 
+named_semaphore_aborted::named_semaphore_aborted(std::string_view msg) noexcept : _msg() {
+    try {
+        _msg = format("Semaphore aborted: {}", msg);
+    } catch (...) {
+        // ignore, empty _msg will generate a static message in what().
+    }
+}
+
 const char* named_semaphore_timed_out::what() const noexcept {
     // return a static message if generating the dynamic message failed.
     return _msg.empty() ? "Named semaphore timed out" : _msg.c_str();
@@ -91,6 +108,11 @@ const char* broken_named_semaphore::what() const noexcept {
     return _msg.empty() ? "Broken named semaphore" : _msg.c_str();
 }
 
+const char* named_semaphore_aborted::what() const noexcept {
+    // return a static message if generating the dynamic message failed.
+    return _msg.empty() ? "Named semaphore aborted" : _msg.c_str();
+}
+
 named_semaphore_timed_out named_semaphore_exception_factory::timeout() const noexcept {
     return named_semaphore_timed_out(name);
 }
@@ -99,4 +121,8 @@ broken_named_semaphore named_semaphore_exception_factory::broken() const noexcep
     return broken_named_semaphore(name);
 }
 
+named_semaphore_aborted named_semaphore_exception_factory::aborted() const noexcept {
+    return named_semaphore_aborted(name);
+}
+
 } // namespace seastar