mirror of
https://git.rwth-aachen.de/acs/public/villas/node/
synced 2025-03-09 00:00:00 +01:00
node-webrtc: don't inherit from std::variant
Signed-off-by: Philipp Jungkamp <Philipp.Jungkamp@opal-rt.com>
This commit is contained in:
parent
41099255f8
commit
ca85117674
5 changed files with 21 additions and 17 deletions
|
@ -86,7 +86,7 @@ public:
|
|||
void connect();
|
||||
void disconnect();
|
||||
|
||||
void sendMessage(const SignalingMessage &msg);
|
||||
void sendMessage(SignalingMessage);
|
||||
|
||||
void onMessage(std::function<void(SignalingMessage)> callback)
|
||||
{
|
||||
|
|
|
@ -44,10 +44,10 @@ struct ControlMessage {
|
|||
json_t * toJSON() const;
|
||||
};
|
||||
|
||||
class SignalingMessage : public std::variant<std::monostate, RelayMessage, ControlMessage, rtc::Description, rtc::Candidate> {
|
||||
public:
|
||||
using variant::variant;
|
||||
SignalingMessage(json_t *j);
|
||||
struct SignalingMessage {
|
||||
std::variant<std::monostate, RelayMessage, ControlMessage, rtc::Description, rtc::Candidate> message;
|
||||
|
||||
static SignalingMessage fromJSON(json_t *j);
|
||||
json_t * toJSON() const;
|
||||
std::string toString() const;
|
||||
};
|
||||
|
|
|
@ -147,7 +147,7 @@ void PeerConnection::onLocalDescription(rtc::Description desc)
|
|||
|
||||
auto lock = std::unique_lock { mutex };
|
||||
|
||||
client->sendMessage(desc);
|
||||
client->sendMessage({ desc });
|
||||
}
|
||||
|
||||
void PeerConnection::onLocalCandidate(rtc::Candidate cand)
|
||||
|
@ -156,7 +156,7 @@ void PeerConnection::onLocalCandidate(rtc::Candidate cand)
|
|||
|
||||
auto lock = std::unique_lock { mutex };
|
||||
|
||||
client->sendMessage(cand);
|
||||
client->sendMessage({ cand });
|
||||
}
|
||||
|
||||
void PeerConnection::onConnectionStateChange(rtc::PeerConnection::State state)
|
||||
|
@ -327,7 +327,7 @@ void PeerConnection::onSignalingMessage(SignalingMessage msg)
|
|||
[&](auto other){
|
||||
logger->warn("unknown signaling message");
|
||||
}
|
||||
}, msg);
|
||||
}, msg.message);
|
||||
}
|
||||
|
||||
void PeerConnection::onDataChannel(std::shared_ptr<rtc::DataChannel> dc)
|
||||
|
|
|
@ -206,14 +206,14 @@ int SignalingClient::receive(void *in, size_t len)
|
|||
|
||||
logger->debug("Signaling message received: {:.{}}", (char *)in, len);
|
||||
|
||||
cbMessage(SignalingMessage { json });
|
||||
cbMessage(SignalingMessage::fromJSON(json));
|
||||
|
||||
json_decref(json);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
void SignalingClient::sendMessage(const SignalingMessage &msg)
|
||||
void SignalingClient::sendMessage(SignalingMessage msg)
|
||||
{
|
||||
outgoingMessages.push(msg);
|
||||
|
||||
|
|
|
@ -139,7 +139,7 @@ json_t * SignalingMessage::toJSON() const
|
|||
[](auto &other){
|
||||
return (json_t *) { nullptr };
|
||||
}
|
||||
}, *this);
|
||||
}, message);
|
||||
}
|
||||
|
||||
std::string SignalingMessage::toString() const
|
||||
|
@ -160,11 +160,13 @@ std::string SignalingMessage::toString() const
|
|||
[](auto other){
|
||||
return fmt::format("invalid signaling message");
|
||||
}
|
||||
}, *this);
|
||||
}, message);
|
||||
}
|
||||
|
||||
SignalingMessage::SignalingMessage(json_t *json)
|
||||
SignalingMessage SignalingMessage::fromJSON(json_t *json)
|
||||
{
|
||||
auto self = SignalingMessage { std::monostate() };
|
||||
|
||||
// relay message
|
||||
json_t *rlys = nullptr;
|
||||
// control message
|
||||
|
@ -193,15 +195,17 @@ SignalingMessage::SignalingMessage(json_t *json)
|
|||
throw RuntimeError("Failed to decode signaling message");
|
||||
|
||||
if (rlys) {
|
||||
emplace<RelayMessage>(rlys);
|
||||
self.message.emplace<RelayMessage>(rlys);
|
||||
}
|
||||
else if (ctrl) {
|
||||
emplace<ControlMessage>(ctrl);
|
||||
self.message.emplace<ControlMessage>(ctrl);
|
||||
}
|
||||
else if (cand) {
|
||||
emplace<rtc::Candidate>(cand, mid);
|
||||
self.message.emplace<rtc::Candidate>(cand, mid);
|
||||
}
|
||||
else if (desc) {
|
||||
emplace<rtc::Description>(desc, typ);
|
||||
self.message.emplace<rtc::Description>(desc, typ);
|
||||
}
|
||||
|
||||
return self;
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue