mirror of
https://github.com/mutouyun/cpp-ipc.git
synced 2025-12-06 16:56:45 +08:00
queue_t::array_t => queue_t::elems_t
This commit is contained in:
parent
b87e96b43c
commit
0f6d8b3cd7
@ -19,19 +19,19 @@ template <typename T,
|
||||
typename Policy = ipc::prod_cons_circ<relat::single, relat::multi, trans::broadcast>>
|
||||
class queue {
|
||||
public:
|
||||
using array_t = circ::elem_array<sizeof(T), Policy>;
|
||||
using policy_t = typename array_t::policy_t;
|
||||
using elems_t = circ::elem_array<sizeof(T), Policy>;
|
||||
using policy_t = typename elems_t::policy_t;
|
||||
|
||||
private:
|
||||
array_t* elems_ = nullptr;
|
||||
decltype(std::declval<array_t>().cursor()) cursor_ = 0;
|
||||
elems_t* elems_ = nullptr;
|
||||
decltype(std::declval<elems_t>().cursor()) cursor_ = 0;
|
||||
std::atomic_bool connected_ { false };
|
||||
|
||||
public:
|
||||
queue() = default;
|
||||
|
||||
explicit queue(array_t* arr) : queue() {
|
||||
attach(arr);
|
||||
explicit queue(elems_t* els) : queue() {
|
||||
attach(els);
|
||||
}
|
||||
|
||||
queue(const queue&) = delete;
|
||||
@ -39,7 +39,7 @@ public:
|
||||
queue(queue&&) = delete;
|
||||
queue& operator=(queue&&) = delete;
|
||||
|
||||
constexpr array_t * elems() const noexcept {
|
||||
constexpr elems_t * elems() const noexcept {
|
||||
return elems_;
|
||||
}
|
||||
|
||||
@ -73,15 +73,15 @@ public:
|
||||
return connected_.load(std::memory_order_acquire);
|
||||
}
|
||||
|
||||
array_t* attach(array_t* arr) noexcept {
|
||||
if (arr == nullptr) return nullptr;
|
||||
elems_t* attach(elems_t* els) noexcept {
|
||||
if (els == nullptr) return nullptr;
|
||||
auto old = elems_;
|
||||
elems_ = arr;
|
||||
elems_ = els;
|
||||
cursor_ = elems_->cursor();
|
||||
return old;
|
||||
}
|
||||
|
||||
array_t* detach() noexcept {
|
||||
elems_t* detach() noexcept {
|
||||
if (elems_ == nullptr) return nullptr;
|
||||
auto old = elems_;
|
||||
elems_ = nullptr;
|
||||
|
||||
@ -41,7 +41,7 @@ struct msg_t {
|
||||
using queue_t = ipc::queue<msg_t, Policy>;
|
||||
|
||||
struct shm_info_t {
|
||||
typename queue_t::array_t elems_; // the circ_elem_array in shm
|
||||
typename queue_t::elems_t elems_; // the circ_elem_array in shm
|
||||
};
|
||||
|
||||
constexpr static void* head_of(queue_t* que) {
|
||||
|
||||
@ -166,7 +166,7 @@ struct test_cq<ipc::circ::elem_array<D, P>> {
|
||||
template <typename... T>
|
||||
struct test_cq<ipc::queue<T...>> {
|
||||
using cn_t = ipc::queue<T...>;
|
||||
using ca_t = typename cn_t::array_t;
|
||||
using ca_t = typename cn_t::elems_t;
|
||||
|
||||
ca_t* ca_;
|
||||
|
||||
@ -386,9 +386,9 @@ void Unit::test_queue() {
|
||||
ipc::queue<msg_t> queue;
|
||||
queue.push(msg_t { 1, 2 });
|
||||
QCOMPARE(queue.pop(), msg_t{});
|
||||
QVERIFY(sizeof(decltype(queue)::array_t) <= sizeof(*cq__));
|
||||
QVERIFY(sizeof(decltype(queue)::elems_t) <= sizeof(*cq__));
|
||||
|
||||
auto cq = ::new (cq__) decltype(queue)::array_t;
|
||||
auto cq = ::new (cq__) decltype(queue)::elems_t;
|
||||
queue.attach(cq);
|
||||
QVERIFY(queue.detach() != nullptr);
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user