Implement interface for using web plotter from C++
It's not actually usable yet due to ODR violations created by
abseil being compiled into libwebrtc_full.a, but it does work based
on testing I've done with using websockets for data transfer.
Change-Id: I574570c7b5c85df9e53321bfb971a608d20b9803
diff --git a/aos/network/web_proxy.cc b/aos/network/web_proxy.cc
index af1b646..5902d30 100644
--- a/aos/network/web_proxy.cc
+++ b/aos/network/web_proxy.cc
@@ -7,6 +7,7 @@
#include "aos/seasocks/seasocks_logger.h"
#include "api/create_peerconnection_factory.h"
#include "glog/logging.h"
+#include "internal/Embedded.h"
namespace aos {
namespace web_proxy {
@@ -22,7 +23,7 @@
return new rtc::RefCountedObject<DummySetSessionDescriptionObserver>();
}
virtual void OnSuccess() {}
- virtual void OnFailure(webrtc::RTCError error) {}
+ virtual void OnFailure(webrtc::RTCError /*error*/) {}
};
} // namespace
@@ -32,6 +33,8 @@
: server_(server),
config_(aos::CopyFlatBuffer(event_loop->configuration())),
event_loop_(event_loop) {
+ // We need to reference findEmbeddedContent() to make the linker happy...
+ findEmbeddedContent("");
const aos::Node *self = event_loop->node();
for (uint i = 0; i < event_loop->configuration()->channels()->size(); ++i) {
@@ -276,11 +279,14 @@
// Function called for web socket data. Parses the flatbuffer and
// handles it appropriately.
void Connection::HandleWebSocketData(const uint8_t *data, size_t size) {
- const WebSocketMessage *message =
- flatbuffers::GetRoot<WebSocketMessage>(data);
- switch (message->payload_type()) {
+ const FlatbufferSpan<WebSocketMessage> message({data, size});
+ if (!message.Verify()) {
+ LOG(ERROR) << "Invalid WebsocketMessage received from browser.";
+ return;
+ }
+ switch (message.message().payload_type()) {
case Payload::WebSocketSdp: {
- const WebSocketSdp *offer = message->payload_as_WebSocketSdp();
+ const WebSocketSdp *offer = message.message().payload_as_WebSocketSdp();
if (offer->type() != SdpType::OFFER) {
LOG(WARNING) << "Got the wrong sdp type from client";
break;
@@ -325,7 +331,7 @@
break;
}
case Payload::WebSocketIce: {
- const WebSocketIce *ice = message->payload_as_WebSocketIce();
+ const WebSocketIce *ice = message.message().payload_as_WebSocketIce();
std::string candidate = ice->candidate()->str();
std::string sdpMid = ice->sdpMid()->str();
int sdpMLineIndex = ice->sdpMLineIndex();