SOIL C++
C++ Unified Device Interface
Broadcast.h
Go to the documentation of this file.
1#pragma once
2
3#include "constants.h"
4#include <atomic>
5#include <memory>
6#include <mutex>
7#include <stdexcept>
8#include <vector>
9#include "Configuration.h"
10#include <boost/thread.hpp>
11#include <boost/asio.hpp>
12
13namespace UDP
14{
22 class DLL Broadcast
23 {
24 private:
31 std::shared_ptr<boost::thread_group> threads;
32
38 std::shared_ptr<boost::asio::io_service::work> work;
39
45 boost::asio::io_service io_service;
46
52 std::shared_ptr<boost::asio::ip::udp::socket> socket;
53
59 std::vector<boost::asio::ip::udp::endpoint> endpoints;
60
66 std::mutex endpoints_mutex;
67
74 void _send(std::string message);
75
76 public:
86 Broadcast(int n_threads = 1);
87
93 ~Broadcast();
94
104 void add_client(std::string ip, unsigned int port);
105
112 void remove_client(std::string ip);
113
120 void send(std::string message);
121
128 void send(std::vector<std::string> messages);
129
130 //void handle(std::shared_ptr<std::string> message, const boost::system::error_code& error, std::size_t bytes);
131
139 inline int use_count(void) { return static_cast<int>(endpoints.size()); }
140
147 void configure(UDP::Configuration config);
148 };
149}
150
UDP Broadcast.
Definition: Broadcast.h:23
int use_count(void)
Number of Clients.
Definition: Broadcast.h:139
UDP Broadcast Configuration.
Definition: Configuration.h:14
Definition: Broadcast.h:14