PdCom
5.3
Process data communication client
Toggle main menu visibility
Loading...
Searching...
No Matches
include
pdcom5
Subscription.h
Go to the documentation of this file.
1
/*****************************************************************************
2
* vim:tw=78
3
*
4
* Copyright (C) 2021 Richard Hacker (lerichi at gmx dot net),
5
* Florian Pose (fp at igh dot de),
6
* Bjarne von Horn (vh at igh dot de).
7
*
8
* This file is part of the PdCom library.
9
*
10
* The PdCom library is free software: you can redistribute it and/or modify
11
* it under the terms of the GNU Lesser General Public License as published by
12
* the Free Software Foundation, either version 3 of the License, or (at your
13
* option) any later version.
14
*
15
* The PdCom library is distributed in the hope that it will be useful, but
16
* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
17
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
18
* License for more details.
19
*
20
* You should have received a copy of the GNU Lesser General Public License
21
* along with the PdCom library. If not, see <http://www.gnu.org/licenses/>.
22
*
23
****************************************************************************/
24
26
27
#ifndef PDCOM5_SUBSCRIPTION_H
28
#define PDCOM5_SUBSCRIPTION_H
29
30
#include "
DataDeserializer.h
"
31
#include "
Exception.h
"
32
#include "
Selector.h
"
33
#include "
Variable.h
"
34
#include "
details.h
"
35
36
#include <memory>
37
#include <pdcom5_export.h>
38
#include <string>
39
#include <vector>
40
41
namespace
PdCom {
42
43
namespace
impl {
44
class
Subscription;
45
}
// namespace impl
46
47
class
Process
;
48
class
Variable
;
49
class
Subscriber
;
50
64
class
PDCOM5_PUBLIC
Subscription
:
public
DataDeserializer
<Subscription>
65
{
66
public
:
67
enum class
State {
68
Invalid = 0,
69
Pending,
70
Active,
71
};
72
74
Subscription
() =
default
;
75
Subscription
(
Subscription
&&) noexcept;
76
Subscription
&operator=(
Subscription
&&) noexcept;
77
85
Subscription
(
86
Subscriber
&subscriber,
87
const
Variable
&variable,
88
const
Selector
&selector = {});
89
98
Subscription
(
99
Subscriber
&subscriber,
100
Process
&process,
101
const
std::string &path,
102
const
Selector
&selector = {});
103
108
void
poll
();
109
116
const
void
*
getData
()
const
;
117
123
Variable
getVariable
()
const
;
124
130
void
print
(std::ostream &os,
char
delimiter)
const
;
131
135
bool
empty
() const noexcept {
return
!(pimpl); }
136
140
State
getState
() const noexcept {
return
state_; }
141
145
Process
*
getProcess
()
const
;
146
152
std::string
getPath
()
const
;
153
154
private
:
155
friend
impl::Subscription;
156
157
std::shared_ptr<impl::Subscription> pimpl = {};
158
159
State state_ = State::Invalid;
160
};
161
162
}
// namespace PdCom
163
164
#endif
// PDCOM5_SUBSCRIPTION_H
DataDeserializer.h
Exception.h
Selector.h
Variable.h
PdCom::Process
Base class for PdCom protocol handler.
Definition
Process.h:87
PdCom::Subscriber
Definition
Subscriber.h:107
PdCom::Subscription::print
void print(std::ostream &os, char delimiter) const
Print the value(s).
PdCom::Subscription::poll
void poll()
Poll values from the server.
PdCom::Subscription::getProcess
Process * getProcess() const
Get the assigned Process.
PdCom::Subscription::getState
State getState() const noexcept
Get the current state.
Definition
Subscription.h:140
PdCom::Subscription::getVariable
Variable getVariable() const
Access the subscribed variable.
PdCom::Subscription::getData
const void * getData() const
Get the data Pointer.
PdCom::Subscription::empty
bool empty() const noexcept
Check whether the subscription is default-constructed.
Definition
Subscription.h:135
PdCom::Subscription::getPath
std::string getPath() const
Get the path of the subscribed variable.
PdCom::Subscription::Subscription
Subscription(Subscriber &subscriber, Process &process, const std::string &path, const Selector &selector={})
Constructor for an unknown variable.
PdCom::Subscription::Subscription
Subscription()=default
Default constructor for an empty subscription.
PdCom::Variable
PdCom Variable interface.
Definition
Variable.h:68
details.h
PdCom::DataDeserializer
Data Deserialisation helper.
Definition
DataDeserializer.h:51
PdCom::Selector
Selector base class for creating views on multidimensional data.
Definition
Selector.h:48
Documentation automatically created on
by
. - PdCom developed by
Ingenieurgemeinschaft IgH GmbH
. All rights reserved.