queue_t::array_t => queue_t::elems_t

This commit is contained in:
mutouyun 2019-01-15 15:08:00 +08:00
parent b87e96b43c
commit 0f6d8b3cd7
3 changed files with 15 additions and 15 deletions

View File

@ -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;

View File

@ -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) {

View File

@ -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);