DataChannelServer
A C++ library for creating WebRTC DataChannel servers.
channel.h
Go to the documentation of this file.
1 #pragma once
2 
3 #include <functional>
4 
7 
8 namespace data_channel {
9 
15 class DataChannel {
16 private:
17  typedef std::function<void(const std::string &message)> MessageHandler;
18  typedef std::function<void()> CloseHandler;
19 
20 public:
22  DataChannel(MessageHandler message_handler, CloseHandler close_handler)
23  : send_message_(message_handler), close_channel_(close_handler) {}
25 
26  DataChannel(const DataChannel &other) = delete;
27  DataChannel &operator=(const DataChannel &) = delete;
28 
30  ~DataChannel() { close_channel_(); }
31 
34  void SendMessage(const std::string &message) { send_message_(message); }
35 
38  void SetOnMessageHandler(std::function<void(const std::string &message)> handler) { on_message_ = handler; }
39 
46  void SetOnCloseHandler(std::function<void()> handler) { on_close_ = handler; }
47 
49  const MessageHandler &GetOnMessageHandler() { return on_message_; }
50 
51  const CloseHandler &GetOnCloseHandler() { return on_close_; }
53 
54 private:
55  MessageHandler send_message_;
56  CloseHandler close_channel_;
57 
58  MessageHandler on_message_;
59  CloseHandler on_close_;
60 };
61 
62 } // namespace data_channel
void SetOnCloseHandler(std::function< void()> handler)
Get a notification when the channel is closed.
Definition: channel.h:46
~DataChannel()
Closes the channel.
Definition: channel.h:30
A class which represents a single peer connection.
Definition: channel.h:15
Definition: server.h:17
void SetOnMessageHandler(std::function< void(const std::string &message)> handler)
Set a handler for processing new messages.
Definition: channel.h:38
void SendMessage(const std::string &message)
Send a message to the other side.
Definition: channel.h:34