50 std::vector<crow::websocket::connection*> m_conns;
59 socket.can_receive_any();
61 void b_transport(tlm::tlm_generic_payload&
txn, sc_core::sc_time&
t)
65 char*
ptr = (
char*)
txn.get_data_ptr();
66 std::string data(
ptr,
txn.get_data_length());
67 buffer = (buffer + data);
68 if (buffer.size() > MAX_BUFFER) buffer = buffer.substr(buffer.size() - MAX_BUFFER);
69 for (
auto conn : m_conns) {
70 conn->send_text(data);
73 void enqueue(std::string data)
80 : socket(sc_core::sc_gen_unique_name(
"monitor_biflow_backend")), name(
n)
82 socket.register_b_transport(
this, &biflow_ws::b_transport);
85 void set_conn(crow::websocket::connection*
c)
90 void clear_conn(crow::websocket::connection*
c)
92 auto i = std::find(m_conns.begin(), m_conns.end(),
c);
93 if (
i != m_conns.end()) {
98 std::map<std::string, std::unique_ptr<biflow_ws>> biflows;
101 monitor(
const sc_core::sc_module_name&
nm);
108 void before_end_of_elaboration()
override;
110 void end_of_elaboration()
override;
112 void end_of_simulation()
override;
115 cci::cci_param<uint32_t> p_server_port;
116 cci::cci_param<std::string> p_html_doc_template_dir_path;
117 cci::cci_param<std::string> p_html_doc_name;
118 cci::cci_param<bool> p_use_html_presentation;
121 crow::SimpleApp m_app;
122 std::future<void> m_app_future;
124 std::vector<tlm_quantumkeeper_multithread*> m_qks;