From 95bd9a67f9f6c90f627784e3f8fbf5c203784e51 Mon Sep 17 00:00:00 2001
From: lichao <lichao@aiotlink.com>
Date: 星期五, 30 四月 2021 15:36:17 +0800
Subject: [PATCH] change shm socket msg queue to atomic queue.

---
 src/shm_msg_queue.cpp |   21 ++++-----------------
 1 files changed, 4 insertions(+), 17 deletions(-)

diff --git a/src/shm_msg_queue.cpp b/src/shm_msg_queue.cpp
index 03a6cfb..cd8cd66 100644
--- a/src/shm_msg_queue.cpp
+++ b/src/shm_msg_queue.cpp
@@ -29,19 +29,6 @@
 	return std::string(buf, n + 4);
 }
 
-const int AdjustMQLength(const int len)
-{
-	const int kMaxLength = 10000;
-	const int kDefaultLen = 12;
-	if (len <= 0) {
-		return kDefaultLen;
-	} else if (len < kMaxLength) {
-		return len;
-	} else {
-		return kMaxLength;
-	}
-}
-
 } // namespace
 
 ShmMsgQueue::MQId ShmMsgQueue::NewId()
@@ -52,13 +39,13 @@
 // ShmMsgQueue memory usage: (320 + 16*length) bytes, length >= 2
 ShmMsgQueue::ShmMsgQueue(const MQId id, ShmType &segment, const int len) :
     id_(id),
-    queue_(segment, MsgQIdToName(id_), AdjustMQLength(len), segment.get_segment_manager())
+    queue_(segment, MsgQIdToName(id_)) //, AdjustMQLength(len), segment.get_segment_manager())
 {
 }
 
 ShmMsgQueue::ShmMsgQueue(ShmType &segment, const int len) :
     id_(NewId()),
-    queue_(segment, true, MsgQIdToName(id_), AdjustMQLength(len), segment.get_segment_manager())
+    queue_(segment, true, MsgQIdToName(id_)) //, AdjustMQLength(len), segment.get_segment_manager())
 {
 	if (!queue_.IsOk()) {
 		throw("error create msgq " + std::to_string(id_));
@@ -72,7 +59,7 @@
 	Queue *q = Find(shm, id);
 	if (q) {
 		MsgI msg;
-		while (q->TryRead(msg)) {
+		while (q->TryRead(msg.OffsetRef())) {
 			msg.Release();
 		}
 	}
@@ -90,7 +77,7 @@
 	bool r = false;
 	if (remote) {
 		msg.AddRef();
-		r = remote->TryWrite(msg);
+		r = remote->TryWrite(msg.Offset());
 		if (!r) {
 			msg.Release();
 		}

--
Gitblit v1.8.0