File: BrownianMotionMqttClient.h

package info (click to toggle)
labplot 2.12.1-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 78,500 kB
  • sloc: cpp: 241,048; ansic: 6,324; python: 915; xml: 400; yacc: 237; sh: 221; awk: 35; makefile: 11
file content (39 lines) | stat: -rw-r--r-- 1,087 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#ifndef BROWNIANMOTIONMQTTCLIENT
#define BROWNIANMOTIONMQTTCLIENT

#include <QMqttClient>
#include <memory>
#include <random>

class BrownianMotionMqttClient : public QMqttClient {
public:
	BrownianMotionMqttClient(QObject* parent = nullptr,
							 int interval = 1000,
							 const QString& hostname = QStringLiteral("test.mosquitto.org"),
							 int port = 1883,
							 int yPaths = 20);
	~BrownianMotionMqttClient() = default;
	QString subscribeBrownianTopic();
	QString publishBrownianData();
	void setInterval(int);

private:
	std::unique_ptr<QMqttTopicName> m_brownian_xTopic;
	std::vector<std::unique_ptr<QMqttTopicName>> m_brownian_yTopics;

	quint8 m_qos{0};
	QVector<double> m_x;

	std::unique_ptr<std::default_random_engine> m_generator;
	std::unique_ptr<std::normal_distribution<double>> m_distribution;
	int64_t m_seed{std::chrono::system_clock::now().time_since_epoch().count()};
	double m_delta{0.25};
	double m_dt{0.1};
	int m_pathes{1};
	int m_iters{300};
	int m_iterCount{0};
	int m_itersTotal{100000};
	int m_interval{1000};
};

#endif // BROWNIANMOTIONMQTTCLIENT