summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2025-05-17 00:03:16 +0200
committerCarl Hetherington <cth@carlh.net>2025-05-28 00:33:55 +0200
commit65be48c492f118eaab3d87564f9b2a3163b0acd1 (patch)
tree1d0726f6809fc0aaf759930ec5a54b2b12ce4ec8
parent2a651467edc28b1ebfc1c93036c89d5823be2b09 (diff)
Cleanup: coding style for Synch.
-rw-r--r--src/lib/grok/messenger.h91
1 files changed, 52 insertions, 39 deletions
diff --git a/src/lib/grok/messenger.h b/src/lib/grok/messenger.h
index 4a0fd3662..bd19438f6 100644
--- a/src/lib/grok/messenger.h
+++ b/src/lib/grok/messenger.h
@@ -184,79 +184,92 @@ struct MessengerInit
};
-/*************************** Synchronization *******************************/
enum SynchDirection
{
SYNCH_SENT,
SYNCH_RECEIVE_READY
};
-struct Synch
+
+class Synch
{
- Synch(const std::string &sentSemName, const std::string &receiveReadySemName)
- : sentSemName_(sentSemName), receiveReadySemName_(receiveReadySemName)
+public:
+ Synch(std::string const& sent_sem_name, std::string const& receive_ready_sem_name)
+ : _sent_sem_name(sent_sem_name)
+ , _receive_ready_sem_name(receive_ready_sem_name)
{
// unlink semaphores in case of previous crash
unlink();
open();
}
+
~Synch()
{
close();
unlink();
}
+
void post(SynchDirection dir)
{
- auto sem = (dir == SYNCH_SENT ? sentSem_ : receiveReadySem_);
- int rc = sem_post(sem);
- if(rc)
+ auto sem = dir == SYNCH_SENT ? _sent_sem : _receive_ready_sem;
+ if (sem_post(sem)) {
getMessengerLogger()->error("Error posting to semaphore: %s", strerror(errno));
+ }
}
+
void wait(SynchDirection dir)
{
- auto sem = dir == SYNCH_SENT ? sentSem_ : receiveReadySem_;
- int rc = sem_wait(sem);
- if(rc)
+ auto sem = dir == SYNCH_SENT ? _sent_sem : _receive_ready_sem;
+ if (sem_wait(sem)) {
getMessengerLogger()->error("Error waiting for semaphore: %s", strerror(errno));
+ }
}
- void open(void)
+
+ void open()
{
- sentSem_ = sem_open(sentSemName_.c_str(), O_CREAT, 0666, 0);
- if(!sentSem_)
+ _sent_sem = sem_open(_sent_sem_name.c_str(), O_CREAT, 0666, 0);
+ if (!_sent_sem) {
getMessengerLogger()->error("Error opening shared memory: %s", strerror(errno));
- receiveReadySem_ = sem_open(receiveReadySemName_.c_str(), O_CREAT, 0666, 1);
- if(!receiveReadySem_)
+ }
+
+ _receive_ready_sem = sem_open(_receive_ready_sem_name.c_str(), O_CREAT, 0666, 1);
+ if (!_receive_ready_sem) {
getMessengerLogger()->error("Error opening shared memory: %s", strerror(errno));
+ }
}
- void close(void)
+
+ void close()
{
- int rc = sem_close(sentSem_);
- if(rc)
- getMessengerLogger()->error("Error closing semaphore %s: %s", sentSemName_.c_str(),
- strerror(errno));
- rc = sem_close(receiveReadySem_);
- if(rc)
- getMessengerLogger()->error("Error closing semaphore %s: %s",
- receiveReadySemName_.c_str(), strerror(errno));
+ if (sem_close(_sent_sem)) {
+ getMessengerLogger()->error("Error closing semaphore %s: %s", _sent_sem_name.c_str(), strerror(errno));
+ }
+
+ if (sem_close(_receive_ready_sem)) {
+ getMessengerLogger()->error("Error closing semaphore %s: %s", _receive_ready_sem_name.c_str(), strerror(errno));
+ }
}
- void unlink(void)
+
+ void unlink()
{
- int rc = sem_unlink(sentSemName_.c_str());
- if(rc == -1 && errno != ENOENT)
- getMessengerLogger()->error("Error unlinking semaphore %s: %s", sentSemName_.c_str(),
- strerror(errno));
- rc = sem_unlink(receiveReadySemName_.c_str());
- if(rc == -1 && errno != ENOENT)
- getMessengerLogger()->error("Error unlinking semaphore %s: %s",
- receiveReadySemName_.c_str(), strerror(errno));
- }
- sem_t* sentSem_;
- sem_t* receiveReadySem_;
+ int rc = sem_unlink(_sent_sem_name.c_str());
+ if (rc == -1 && errno != ENOENT) {
+ getMessengerLogger()->error("Error unlinking semaphore %s: %s", _sent_sem_name.c_str(), strerror(errno));
+ }
+ rc = sem_unlink(_receive_ready_sem_name.c_str());
+ if (rc == -1 && errno != ENOENT) {
+ getMessengerLogger()->error("Error unlinking semaphore %s: %s", _receive_ready_sem_name.c_str(), strerror(errno));
+ }
+ }
- private:
- std::string sentSemName_;
- std::string receiveReadySemName_;
+private:
+ sem_t* _sent_sem;
+ sem_t* _receive_ready_sem;
+
+ std::string _sent_sem_name;
+ std::string _receive_ready_sem_name;
};
+
+
struct SharedMemoryManager
{
static bool initShm(const std::string &name, size_t len, int* shm_fd, char** buffer)