lichao
2021-03-26 ea2ee85202f7b16d7b713bc7a7dcd1fa63bc6213
src/shm_queue.h
@@ -53,9 +53,11 @@
    using Super::size;
    using Super::capacity;
    const MQId &Id() const { return id_; }
    bool Write(const D &buf, const int timeout_ms) {
    template <class OnWrite>
    bool Write(const D &buf, const int timeout_ms, const OnWrite &onWrite) {
        Guard lock(mutex());
        if (cond_write_.timed_wait(lock, MSFromNow(timeout_ms), [&]() { return !this->full(); })) {
            onWrite();
            this->push_back(buf);
            cond_read_.notify_one();
            return true;
@@ -63,6 +65,7 @@
            return false;
        }
    }
    bool Write(const D &buf, const int timeout_ms) { return Write(buf, timeout_ms, [](){}); }
    bool Read(D &buf, const int timeout_ms){
        Guard lock(mutex());
@@ -92,6 +95,7 @@
    bool Recv(MQId &source_id, void *&data, size_t &size, const int timeout_ms);
    const MQId &Id() const { return data()->Id(); }
    bool Send(const MQId &remote_id, const Msg &msg, const int timeout_ms);
    bool Recv(Msg &msg, const int timeout_ms) { return Read(msg, timeout_ms); }
};
} // namespace bhome_shm