OSSIA
Open Scenario System for Interactive Application
Loading...
Searching...
No Matches
qml_ws_inbound_socket.hpp
1#pragma once
2#include <ossia/network/context.hpp>
3#include <ossia/network/sockets/udp_socket.hpp>
4
5#include <ossia-qt/protocols/utils.hpp>
6
7#include <QJSValue>
8#include <QObject>
9#include <QQmlEngine>
10
11#include <nano_observer.hpp>
12
13#include <verdigris>
14
15namespace ossia::qt
16{
17class qml_websocket_inbound_socket
18 : public QObject
19 , public Nano::Observer
20{
21 W_OBJECT(qml_websocket_inbound_socket)
22public:
23 qml_websocket_inbound_socket(
24 const ossia::net::inbound_socket_configuration& conf, boost::asio::io_context& ctx)
25 : m_context{ctx}
26 {
27 // FIXME
28 // WebSocket server implementation simplified for now
29 }
30 inline boost::asio::io_context& context() noexcept { return m_context; }
31
32 void open()
33 {
34 if(onOpen.isCallable())
35
36 onOpen.call({qjsEngine(this)->newQObject(this)});
37 }
38
39 void close()
40 {
41 run_on_qt_thread({ onClose.call(); });
42 }
43 W_SLOT(close)
44
45 boost::asio::io_context& m_context;
46
47 QJSValue onOpen;
48 QJSValue onClose;
49 QJSValue onError;
50 QJSValue onConnection;
51 QJSValue onBytes;
52 QJSValue onTextMessage;
53 QJSValue onBinaryMessage;
54};
55}
Definition qml_device.cpp:43