| OSSIA
    Open Scenario System for Interactive Application | 
The protocol_base class. More...
 
  
The protocol_base class.
A protocol is used to implement remote communication.
| Public Types | |
| enum | flags { SupportsMultiplex = (1 << 0) } | 
| Public Member Functions | |
| protocol_base (flags f) | |
| protocol_base (const protocol_base &)=delete | |
| protocol_base (protocol_base &&)=delete | |
| protocol_base & | operator= (const protocol_base &)=delete | 
| protocol_base & | operator= (protocol_base &&)=delete | 
| virtual bool | pull (parameter_base &)=0 | 
| Pulls a value from the server synchronously. | |
| virtual std::future< void > | pull_async (parameter_base &) | 
| Pulls a value from the server asynchronously. | |
| virtual void | request (parameter_base &) | 
| Request an update on a value. | |
| virtual bool | push (const parameter_base &, const ossia::value &v)=0 | 
| Send a value to the network. | |
| virtual bool | push (const parameter_base &, ossia::value &&v) | 
| bool | push (const parameter_base &p) | 
| virtual bool | echo_incoming_message (const message_origin_identifier &, const parameter_base &, const ossia::value &v) | 
| called when some protocol on the same device received a message. | |
| virtual bool | push_bundle (const std::vector< const ossia::net::parameter_base * > &) | 
| Send many values in one go if the protocol supports it. | |
| virtual bool | push_bundle (std::span< ossia::bundle_element >) | 
| virtual bool | push_bundle_bounded (std::span< ossia::bundle_element >) | 
| virtual bool | push_raw (const full_parameter_data &)=0 | 
| Send a value to the network. | |
| virtual bool | push_raw_bundle (const std::vector< full_parameter_data > &) | 
| Send a value to the network. | |
| virtual bool | observe (parameter_base &, bool)=0 | 
| Notify the network that a parameter should be listened to. | |
| virtual bool | publish (const parameter_base &) | 
| Notify the network that a parameter is to be published. | |
| virtual bool | unpublish (const parameter_base &) | 
| Notify the network that a parameter is to be removed. | |
| virtual bool | observe_quietly (parameter_base &, bool) | 
| Begin observation without notifying the other computers. | |
| virtual std::future< void > | update_async (node_base &node_base) | 
| If the protocol supports it, request the namespace corresponding to this node. | |
| virtual bool | update (node_base &node_base)=0 | 
| If the protocol supports it, request the namespace corresponding to this node. If the update takes too long, nodes may be dropped as there is a default timeout. | |
| virtual void | set_device (ossia::net::device_base &dev) | 
| It is mandatory to call this function from device implementations, when the protocol is set. | |
| virtual void | set_logger (const network_logger &l) | 
| Replace the loggers used. | |
| virtual const network_logger & | get_logger () const noexcept | 
| virtual bool | connected () const noexcept | 
| virtual void | connect () | 
| virtual void | start_execution () | 
| virtual void | stop_execution () | 
| virtual void | stop () | 
| virtual void | set_feedback (bool feedback) | 
| flags | get_flags () const noexcept | 
| bool | test_flag (flags f) const noexcept | 
| Public Attributes | |
| Nano::Signal< void()> | on_connection_open | 
| Nano::Signal< void()> | on_connection_closed | 
| Nano::Signal< void()> | on_connection_failure | 
| Protected Attributes | |
| const flags | m_flags {} | 
| network_logger | m_logger | 
| 
 | pure virtual | 
Pulls a value from the server synchronously.
Implemented in ossia::oscquery::oscquery_server_protocol, ossia::oscquery_asio::oscquery_server_protocol_base, and ossia::net::multiplex_protocol.
| 
 | virtual | 
Pulls a value from the server asynchronously.
Reimplemented in ossia::oscquery::oscquery_server_protocol, and ossia::oscquery_asio::oscquery_server_protocol_base.
| 
 | virtual | 
Request an update on a value.
Reimplemented in ossia::oscquery::oscquery_server_protocol, and ossia::oscquery_asio::oscquery_server_protocol_base.
| 
 | pure virtual | 
Send a value to the network.
Implemented in ossia::oscquery::oscquery_server_protocol, ossia::oscquery_asio::oscquery_server_protocol_base, and ossia::net::multiplex_protocol.
| 
 | virtual | 
called when some protocol on the same device received a message.
This can be used to echo the message to other protocols on the same device.
Reimplemented in ossia::net::multiplex_protocol, ossia::oscquery::oscquery_server_protocol, and ossia::oscquery_asio::oscquery_server_protocol_base.
| 
 | virtual | 
Send many values in one go if the protocol supports it.
Reimplemented in ossia::oscquery::oscquery_server_protocol, and ossia::oscquery_asio::oscquery_server_protocol_base.
| 
 | pure virtual | 
Send a value to the network.
Implemented in ossia::net::multiplex_protocol, ossia::oscquery::oscquery_server_protocol, and ossia::oscquery_asio::oscquery_server_protocol_base.
| 
 | virtual | 
Send a value to the network.
Reimplemented in ossia::oscquery::oscquery_server_protocol, and ossia::oscquery_asio::oscquery_server_protocol_base.
| 
 | pure virtual | 
Notify the network that a parameter should be listened to.
In some protocols (Minuit, OSCQuery), this may send a message to the other client so that it regularly sends values of this parameter to the local computer.
If a parameter is listened to, when a message is received, parameter_base::setValue will be called, which will notify the local signals. Else, parameter_base::setValueQuiet will be called : the value will be updated but the signals won't be notified.
Implemented in ossia::oscquery::oscquery_server_protocol, ossia::oscquery_asio::oscquery_server_protocol_base, and ossia::net::multiplex_protocol.
| 
 | virtual | 
Notify the network that a parameter is to be published.
In some protocols (MQTT), this may send a message to the broker to indicate that a new topic is being made available for publication.
| 
 | virtual | 
Notify the network that a parameter is to be removed.
In some protocols (MQTT), this may send a message to the broker to indicate that a previously published topic is disappearing.
| 
 | inlinevirtual | 
Begin observation without notifying the other computers.
Reimplemented in ossia::oscquery::oscquery_server_protocol, and ossia::oscquery_asio::oscquery_server_protocol_base.
| 
 | pure virtual | 
If the protocol supports it, request the namespace corresponding to this node. If the update takes too long, nodes may be dropped as there is a default timeout.
Implemented in ossia::oscquery::oscquery_server_protocol, ossia::oscquery_asio::oscquery_server_protocol_base, and ossia::net::multiplex_protocol.
| 
 | virtual | 
It is mandatory to call this function from device implementations, when the protocol is set.
Reimplemented in ossia::oscquery::oscquery_server_protocol, ossia::oscquery_asio::oscquery_server_protocol_base, and ossia::net::multiplex_protocol.