OpenTera WebRTC API (C++) 1.2.5
SignalingClient.h
1 #ifndef OPENTERA_WEBRTC_NATIVE_CLIENT_SIGNALING_SIGNALING_CLIENT_H
2 #define OPENTERA_WEBRTC_NATIVE_CLIENT_SIGNALING_SIGNALING_CLIENT_H
3 
4 #include <OpenteraWebrtcNativeClient/Configurations/SignalingServerConfiguration.h>
5 #include <OpenteraWebrtcNativeClient/Utils/ClassMacro.h>
6 #include <OpenteraWebrtcNativeClient/Utils/Client.h>
7 
8 #include <string>
9 #include <vector>
10 #include <memory>
11 #include <functional>
12 
13 namespace opentera
14 {
16  {
17  protected:
18  SignalingServerConfiguration m_configuration;
19 
20  std::function<void()> m_onSignalingConnectionOpened;
21  std::function<void()> m_onSignalingConnectionClosed;
22  std::function<void(const std::string&)> m_onSignalingConnectionError;
23 
24  std::function<void(const std::vector<Client>&)> m_onRoomClientsChanged;
25 
26  std::function<void(const std::string& id)> m_makePeerCall;
27  std::function<void(const std::string& fromId, const std::string& sdp)> m_receivePeerCall;
28  std::function<void(const std::string& fromId, const std::string& sdp)> m_receivePeerCallAnswer;
29  std::function<
30  void(const std::string& fromId, const std::string& sdpMid, int sdpMLineIndex, const std::string& sdp)>
31  m_receiveIceCandidate;
32 
33  std::function<void(const std::string& fromId)> m_onCallRejected;
34  std::function<void()> m_closeAllPeerConnections;
35 
36  std::function<void(const std::string& error)> m_onError;
37 
38  public:
40  virtual ~SignalingClient();
41 
42  DECLARE_NOT_COPYABLE(SignalingClient);
43  DECLARE_NOT_MOVABLE(SignalingClient);
44 
45  const std::string& room();
46 
47  virtual void setTlsVerificationEnabled(bool isEnabled) = 0;
48 
49  virtual bool isConnected() = 0;
50  virtual std::string sessionId() = 0;
51 
52  virtual void connect() = 0;
53  virtual void close() = 0;
54  virtual void closeSync() = 0;
55 
56  virtual void callAll() = 0;
57  virtual void callIds(const std::vector<std::string>& ids) = 0;
58  virtual void closeAllRoomPeerConnections() = 0;
59 
60  virtual void callPeer(const std::string& toId, const std::string& sdp) = 0;
61  virtual void makePeerCallAnswer(const std::string& toId, const std::string& sdp) = 0;
62  virtual void rejectCall(const std::string& toId) = 0;
63  virtual void sendIceCandidate(
64  const std::string& sdpMid,
65  int sdpMLineIndex,
66  const std::string& candidate,
67  const std::string& toId) = 0;
68 
69  void setOnSignalingConnectionOpened(const std::function<void()>& callback);
70  void setOnSignalingConnectionClosed(const std::function<void()>& callback);
71  void setOnSignalingConnectionError(const std::function<void(const std::string&)>& callback);
72 
73  void setOnRoomClientsChanged(const std::function<void(const std::vector<Client>&)>& callback);
74 
75  void setMakePeerCall(const std::function<void(const std::string& id)>& callback);
76  void setReceivePeerCall(const std::function<void(const std::string& fromId, const std::string& sdp)>& callback);
77  void setReceivePeerCallAnswer(
78  const std::function<void(const std::string& fromId, const std::string& sdp)>& callback);
79  void setReceiveIceCandidate(
80  const std::function<
81  void(const std::string& fromId, const std::string& sdpMid, int sdpMLineIndex, const std::string& sdp)>&
82  callback);
83 
84  void setOnCallRejected(const std::function<void(const std::string& fromId)>& callback);
85  void setCloseAllPeerConnections(const std::function<void()>& callback);
86 
87  void setOnError(const std::function<void(const std::string& error)>& callback);
88 
89  protected:
90  template<class T, class... Types>
91  void invokeIfCallable(const std::function<T>& f, Types... args);
92  };
93 
94  inline const std::string& SignalingClient::room() { return m_configuration.room(); }
95 
96  inline void SignalingClient::setOnSignalingConnectionOpened(const std::function<void()>& callback)
97  {
98  m_onSignalingConnectionOpened = callback;
99  }
100 
101  inline void SignalingClient::setOnSignalingConnectionClosed(const std::function<void()>& callback)
102  {
103  m_onSignalingConnectionClosed = callback;
104  }
105 
106  inline void SignalingClient::setOnSignalingConnectionError(const std::function<void(const std::string&)>& callback)
107  {
108  m_onSignalingConnectionError = callback;
109  }
110 
111  inline void
112  SignalingClient::setOnRoomClientsChanged(const std::function<void(const std::vector<Client>&)>& callback)
113  {
114  m_onRoomClientsChanged = callback;
115  }
116 
117  inline void SignalingClient::setMakePeerCall(const std::function<void(const std::string& id)>& callback)
118  {
119  m_makePeerCall = callback;
120  }
121 
122  inline void SignalingClient::setReceivePeerCall(
123  const std::function<void(const std::string& fromId, const std::string& sdp)>& callback)
124  {
125  m_receivePeerCall = callback;
126  }
127 
128  inline void SignalingClient::setReceivePeerCallAnswer(
129  const std::function<void(const std::string& fromId, const std::string& sdp)>& callback)
130  {
131  m_receivePeerCallAnswer = callback;
132  }
133 
134  inline void SignalingClient::setReceiveIceCandidate(
135  const std::function<
136  void(const std::string& fromId, const std::string& sdpMid, int sdpMLineIndex, const std::string& sdp)>&
137  callback)
138  {
139  m_receiveIceCandidate = callback;
140  }
141 
142  inline void SignalingClient::setOnCallRejected(const std::function<void(const std::string& fromId)>& callback)
143  {
144  m_onCallRejected = callback;
145  }
146 
147  inline void SignalingClient::setCloseAllPeerConnections(const std::function<void()>& callback)
148  {
149  m_closeAllPeerConnections = callback;
150  }
151 
152  inline void SignalingClient::setOnError(const std::function<void(const std::string& error)>& callback)
153  {
154  m_onError = callback;
155  }
156 
157  template<class T, class... Types>
158  inline void SignalingClient::invokeIfCallable(const std::function<T>& f, Types... args)
159  {
160  if (f)
161  {
162  f(args...);
163  }
164  }
165 }
166 
167 #endif
Definition: SignalingClient.h:16
Represents a signaling server configuration.
Definition: SignalingServerConfiguration.h:14
const std::string & room() const
Returns the room name.
Definition: SignalingServerConfiguration.h:147