ZeroTierOne/controller/RabbitMQ.hpp

69 lines
1.1 KiB
C++
Raw Normal View History

2019-03-05 23:11:50 +00:00
/*
2019-08-23 16:23:39 +00:00
* Copyright (c)2019 ZeroTier, Inc.
2019-03-05 23:11:50 +00:00
*
2019-08-23 16:23:39 +00:00
* Use of this software is governed by the Business Source License included
* in the LICENSE.TXT file in the project's root directory.
2019-03-05 23:11:50 +00:00
*
2019-08-23 16:23:39 +00:00
* Change Date: 2023-01-01
2019-03-05 23:11:50 +00:00
*
2019-08-23 16:23:39 +00:00
* On the date above, in accordance with the Business Source License, use
* of this software will be governed by version 2.0 of the Apache License.
2019-03-05 23:11:50 +00:00
*/
2019-08-23 16:23:39 +00:00
/****/
2019-08-06 12:51:50 +00:00
2019-03-05 23:11:50 +00:00
#ifndef ZT_CONTROLLER_RABBITMQ_HPP
#define ZT_CONTROLLER_RABBITMQ_HPP
#include "DB.hpp"
2019-03-05 23:11:50 +00:00
namespace ZeroTier
{
struct MQConfig {
2019-08-06 12:51:50 +00:00
const char *host;
int port;
const char *username;
const char *password;
2019-03-05 23:11:50 +00:00
};
}
#ifdef ZT_CONTROLLER_USE_LIBPQ
2019-03-08 18:29:36 +00:00
#include "../node/Mutex.hpp"
2019-03-05 23:11:50 +00:00
#include <amqp.h>
#include <amqp_tcp_socket.h>
#include <string>
namespace ZeroTier
{
class RabbitMQ {
public:
2019-08-06 12:51:50 +00:00
RabbitMQ(MQConfig *cfg, const char *queueName);
~RabbitMQ();
2019-03-05 23:11:50 +00:00
2019-08-06 12:51:50 +00:00
void init();
2019-03-05 23:11:50 +00:00
2019-08-06 12:51:50 +00:00
std::string consume();
2019-03-05 23:11:50 +00:00
private:
2019-08-06 12:51:50 +00:00
MQConfig *_mqc;
const char *_qName;
2019-03-05 23:11:50 +00:00
2019-08-06 12:51:50 +00:00
amqp_socket_t *_socket;
amqp_connection_state_t _conn;
amqp_queue_declare_ok_t *_q;
int _status;
2019-03-05 23:11:50 +00:00
2019-08-06 12:51:50 +00:00
int _channel;
2019-03-08 18:29:36 +00:00
Mutex _chan_m;
2019-03-05 23:11:50 +00:00
};
}
#endif // ZT_CONTROLLER_USE_LIBPQ
#endif // ZT_CONTROLLER_RABBITMQ_HPP