SinricPro Library
Loading...
Searching...
No Matches
SinricProQueue.h
1/*
2 * Copyright (c) 2021 Sinric. All rights reserved.
3 * Licensed under Creative Commons Attribution-Share Alike (CC BY-SA)
4 *
5 * This file is part of the Sinric Pro (https://github.com/sinricpro/)
6 */
7
8#pragma once
9
10#include <Arduino.h>
11#include <IPAddress.h>
12#include <queue>
13
14#include "SinricProNamespace.h"
15namespace SINRICPRO_NAMESPACE {
16
17typedef enum {
18 IF_UNKNOWN = 0,
19 IF_WEBSOCKET = 1,
20 IF_UDP = 2
21} interface_t;
22
23class SinricProMessage {
24public:
25 SinricProMessage(interface_t interface, const char* message);
26 SinricProMessage(interface_t interface, const char* message, const IPAddress& remoteIP, uint16_t remotePort);
27 ~SinricProMessage();
28 const char* getMessage() const;
29 interface_t getInterface() const;
30 const IPAddress& getRemoteIP() const;
31 uint16_t getRemotePort() const;
32private:
33 interface_t _interface;
34 char* _message;
35 IPAddress _remoteIP;
36 uint16_t _remotePort = 0;
37};
38
39SinricProMessage::SinricProMessage(interface_t interface, const char* message) :
40 _interface(interface) {
41 _message = strdup(message);
42};
43
44SinricProMessage::SinricProMessage(interface_t interface, const char* message, const IPAddress& remoteIP, uint16_t remotePort) :
45 _interface(interface), _remoteIP(remoteIP), _remotePort(remotePort) {
46 _message = strdup(message);
47};
48
49SinricProMessage::~SinricProMessage() {
50 if (_message) free(_message);
51};
52
53const char* SinricProMessage::getMessage() const {
54 return _message;
55};
56
57interface_t SinricProMessage::getInterface() const {
58 return _interface;
59};
60
61const IPAddress& SinricProMessage::getRemoteIP() const {
62 return _remoteIP;
63};
64
65uint16_t SinricProMessage::getRemotePort() const {
66 return _remotePort;
67};
68
69
70typedef std::queue<SinricProMessage*> SinricProQueue_t;
71
72} // SINRICPRO_NAMESPACE