PLCnext API Documentation 25.0.2.69
MessageQueue.hpp
1
2//
3// Copyright Phoenix Contact GmbH & Co. KG
4//
6#pragma once
8
9// forwards
10namespace Arp { namespace System { namespace Ve
11{
12class IMessageQueueService;
13}}}
14
15namespace Arp { namespace System { namespace Commons { namespace Ipc
16{
17
27{
28public: // enums
29
31 enum class OpenMode
32 {
33 CreateNew = 0,
34 Open,
36 };
37
39 enum class Access
40 {
41 ReadOnly,
42 WriteOnly,
44 };
45
46public: // construction/destruction
47 MessageQueue(const String& name, bool blocking = false);
48 MessageQueue(const String& name, OpenMode openMode, Access permission = Access::ReadWrite, bool blocking = false);
49 MessageQueue(const String& name, OpenMode openMode, Access permission, bool blocking, long maxmsg, long msgsize);
50 ~MessageQueue(void);
51
52public: // setter/getter operations
53 bool IsBlocking() const;
54 long GetMessageCount() const;
55 long GetMaxMessageCount() const;
56 long GetMaxMessageSize() const;
57
58public: // methods
59 void Send(const char *pMsg, size_t len, unsigned int prio, Milliseconds timeoutMs = Milliseconds(0));
60 size_t Receive(char *pBuffer, size_t len, unsigned int& prio, Milliseconds timeoutMs = Milliseconds(0));
61 void Close();
62 void Unlink();
63
64private: // typedefs and usings
65
66 using IMessageQueueService = Arp::System::Ve::IMessageQueueService;
67
68private: // methods
69 MessageQueue(const MessageQueue& arg) = delete;
70 MessageQueue& operator=(const MessageQueue& arg) = delete;
71
72private: // fields
73
74 IMessageQueueService *pMessageQueueService;
75
76private: // static fields
77
78};
79
80}}}} // end of namespace Arp::System::Commons::Ipc
This class represents the Arp String. The implementation is based on std::string.
Definition: String.hpp:39
Message queues allow processes to exchange data in form of messages
Definition: MessageQueue.hpp:27
void Send(const char *pMsg, size_t len, unsigned int prio, Milliseconds timeoutMs=Milliseconds(0))
Sends a message to the queue.
Definition: MessageQueue.cpp:139
OpenMode
Supported opening modes for message queues.
Definition: MessageQueue.hpp:32
void Unlink()
Deletes the message queue.
Definition: MessageQueue.cpp:171
bool IsBlocking() const
Checks if this message queue was created in blocking mode.
Definition: MessageQueue.cpp:96
void Close()
Closes the message queue.
Definition: MessageQueue.cpp:160
long GetMessageCount() const
Queries the current amount of message stored in the message queue.
Definition: MessageQueue.cpp:106
Access
Supported access modes for message queues.
Definition: MessageQueue.hpp:40
@ ReadWrite
Object owner can reas and write to message queue.
~MessageQueue(void)
Destructs this instance and closes the message queue.
Definition: MessageQueue.cpp:85
long GetMaxMessageSize() const
Queries the maximal supported byte-size of a message.
Definition: MessageQueue.cpp:126
long GetMaxMessageCount() const
Queries the maximal amount of messages that can be stored inside the message queue.
Definition: MessageQueue.cpp:116
MessageQueue(const String &name, bool blocking=false)
Tries to open an already existing message queue.
Definition: MessageQueue.cpp:20
size_t Receive(char *pBuffer, size_t len, unsigned int &prio, Milliseconds timeoutMs=Milliseconds(0))
Receives a message from the queue.
Definition: MessageQueue.cpp:154
@ CreateNew
Creates a new file. An exception is raised if the file already exists.
@ OpenOrCreate
Opens the file for update, if it exists. Otherwise, creates a new file.
@ Open
Opens an existing file. An exception is raised if the file does not exist.
@ ReadWrite
Specifies read and write access to the file. Data can be written to the file and the file pointer can...
@ ReadOnly
The store is read only and may not be modified
Root namespace for the PLCnext API