WARNING: USE THIS SOFTWARE AT YOUR OWN RISK! THIS IS EXPERIMENTAL SOFTWARE NOT INTENDED FOR PRODUCTION USE! Zuble is currently an early stage prototype. As such Zuble is minimally tested and inherently unstable. It is provided for experimental, development, and demonstration purposes only. Zuble QML Types   |  Zuble C++ Classes   |  Zuble Overview
Zuble  0.1
Zuble Framework C++/QML extension API
ZMailslot.cpp
Go to the documentation of this file.
1 /*
2  * Zuble - A run-time system for QML/Javascript applications
3  * Copyright (C) 2016 Bob Dinitto
4  *
5  * Filename: ZMailslot.cpp
6  * Created on: 1/3/2016
7  * Author: Bob Dinitto
8  *
9  * Zuble is free software; you can redistribute it and/or
10  * modify it under the terms of the GNU Lesser General Public
11  * License as published by the Free Software Foundation; either
12  * version 2.1 of the License, or (at your option) any later version.
13  *
14  * This library is distributed in the hope that it will be useful,
15  * but WITHOUT ANY WARRANTY; without even the implied warranty of
16  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
17  * Lesser General Public License for more details.
18  *
19  * You should have received a copy of the GNU Lesser General Public
20  * License along with this library; if not, write to the Free Software
21  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
22  *
23  */
24 
25 #include <QtQml>
26 #include "ZMailslot.h"
27 #include "ZblApp.h"
28 
29 namespace Zbl {
30 
32 
33 ZMailslot::ZMailslot(QObject *parent) :
34  QObject(parent)
35 {
36  m_data = new ZMap(this);
37 
38  connect(&m_messageQueue, &ZMessageQueue::messageAvailable,
40 
41  connect(&m_responseQueue, &ZMessageQueue::messageAvailable,
43 }
44 
46 {
48 
49  qmlRegisterType<ZMailslot>("org.zuble.qml", 1, 0, "ZMailslot");
50 }
51 
52 
53 void ZMailslot::setSlotName(const QString& name)
54 {
55  zDebug() << "Setting mailslot name: " << name;
56 
57  m_slotName = name;
58 }
59 
60 const QString ZMailslot::getSlotName()
61 {
62  return m_slotName;
63 }
64 
65 void ZMailslot::sendMessage(QVariant message)
66 {
67  zDebug() << "Mailslot: " << m_slotName << ", sending message.";
68 
69  m_messageQueue.sendMessage(message);
70 }
71 
72 void ZMailslot::postMessage(QVariant message)
73 {
74  zDebug() << "Mailslot: " << m_slotName << ", posting message.";
75 
77 }
78 
80 {
81  return m_responseQueue.getCount();
82 }
83 
85 {
86  zDebug() << "Mailslot: " << m_slotName << ", getting response.";
87 
89 }
90 
92 {
93  zDebug() << "Mailslot: " << m_slotName << ", peeking response.";
94 
96 }
97 
99 {
100  return m_messageQueue.getCount();
101 }
102 
104 {
105  zDebug() << "Mailslot: " << m_slotName << ", getting message.";
106 
108 }
109 
111 {
112  zDebug() << "Mailslot: " << m_slotName << ", peeking message.";
113 
114  return m_messageQueue.peekMessage();
115 }
116 
117 void ZMailslot::sendResponse(QVariant message)
118 {
119  zDebug() << "Mailslot: " << m_slotName << ", sending response.";
120 
121  m_responseQueue.sendMessage(message);
122 }
123 
124 void ZMailslot::postResponse(QVariant message)
125 {
126  zDebug() << "Mailslot: " << m_slotName << ", posting response.";
127 
128  m_responseQueue.queueMessage(message);
129 }
130 
131 QObject* ZMailslot::data()
132 {
133  zDebug() << "Mailslot: " << m_slotName << ", accessing user-defined data.";
134 
135  return m_data;
136 }
137 
139 {
141 }
142 
144 {
146 }
147 
148 
149 
150 } // Zbl
ZBL_DECLARE_LOGGED_OBJECT QString m_slotName
Name of the mail slot.
Definition: ZMailslot.h:185
ZMap * m_data
Mailslot owner&#39;s user-defined data dictionary.
Definition: ZMailslot.h:204
Q_INVOKABLE int messageCount()
Returns the number of messages in the message queue.
Definition: ZMailslot.cpp:98
Q_INVOKABLE QVariant peekMessage()
Returns the next message from message queue without removing it from the queue.
Definition: ZMailslot.cpp:110
Q_INVOKABLE void postResponse(QVariant response)
Enqueues response immediately, then queues a defered responseAvailable signal to be sent later...
Definition: ZMailslot.cpp:124
void responseAvailable(QString slotName)
Sent when a response has been received from an endpoint.
void messageAvailable()
Sent when a message has been placed into the message queue.
Q_INVOKABLE void postMessage(QVariant message)
Enqueues message immediately, then posts a defered messageAvailable signal to the event queue to be s...
Definition: ZMailslot.cpp:72
Q_INVOKABLE int responseCount()
Returns the number of responses in the response queue.
Definition: ZMailslot.cpp:79
A Javascript dictionary object.
Definition: ZMap.h:40
void messageAvailable(QString slotName)
Sent when a message has been placed into an endpoint&#39;s message queue.
void queueMessage(QVariant message)
Enqueues message immediately, then queues a defered messageAvailable signal to be sent later...
QVariant dequeueMessage()
Removes next message from message queue and returns it.
static void registerType()
Definition: ZMailslot.cpp:45
#define ZBL_REGISTER_LOGGED_OBJECT
Definition: zglobal.h:104
Q_INVOKABLE QObject * data()
returns a ZMap dictionary object that can be used by mailslot client to store parameters. Use of the dictionary is user defined.
Definition: ZMailslot.cpp:131
Definition: ZAndGate.cpp:6
Q_INVOKABLE QVariant getResponse()
Removes next response from response queue and returns it.
Definition: ZMailslot.cpp:84
void onMessageQueueAvailable()
Definition: ZMailslot.cpp:138
#define ZBL_DEFINE_LOGGED_OBJECT(class_name)
Definition: zglobal.h:99
Q_INVOKABLE void sendMessage(QVariant message)
Enqueues message and sends messageAvailable signal immediately.
Definition: ZMailslot.cpp:65
Q_INVOKABLE QVariant getMessage()
Removes next message from message queue and returns it.
Definition: ZMailslot.cpp:103
ZMessageQueue m_responseQueue
Responses sent from endpoint to mailslot owner.
Definition: ZMailslot.h:196
#define zDebug()
Definition: zglobal.h:113
A two-way buffered message stream with attached user-defined data cache.
Definition: ZMailslot.h:50
ZMessageQueue m_messageQueue
Messages sent from mailslot owner to endpoint.
Definition: ZMailslot.h:190
Q_INVOKABLE void sendResponse(QVariant response)
Enqueues response and sends responseAvailable signal immediately.
Definition: ZMailslot.cpp:117
void sendMessage(QVariant message)
Enqueues message and then sends messageAvailable signal immediately.
void onResponseQueueAvailable()
Definition: ZMailslot.cpp:143
QVariant peekMessage()
Returns the next message from message queue without removing it from the queue.
Q_INVOKABLE void setSlotName(const QString &name)
Set the name of the mailslot.
Definition: ZMailslot.cpp:53
Q_INVOKABLE QVariant peekResponse()
Returns the next response from response queue without removing it from the queue. ...
Definition: ZMailslot.cpp:91
Q_INVOKABLE const QString getSlotName()
Get the name of the mailslot.
Definition: ZMailslot.cpp:60