OSSIA
Open Scenario System for Interactive Application
ossia::net::multiplex_protocol Class Referencefinal

A protocol used to expose a local application's data through multiple other protocols. More...

Inheritance diagram for ossia::net::multiplex_protocol:
ossia::net::protocol_base

Detailed Description

A protocol used to expose a local application's data through multiple other protocols.

For instance use this when developing an artistic application with parameters that you want to be able to control from another software.

Public Member Functions

 multiplex_protocol (const multiplex_protocol &)=delete
 
 multiplex_protocol (multiplex_protocol &&)=delete
 
multiplex_protocoloperator= (const multiplex_protocol &)=delete
 
multiplex_protocoloperator= (multiplex_protocol &&)=delete
 
bool pull (ossia::net::parameter_base &) override
 Pulls a value from the server synchronously. More...
 
bool push (const ossia::net::parameter_base &addr, const ossia::value &v) override
 Send a value to the network.
 
bool push_raw (const full_parameter_data &) override
 Send a value to the network.
 
bool observe (ossia::net::parameter_base &, bool) override
 Notify the network that a parameter should be listened to. More...
 
bool update (ossia::net::node_base &node_base) override
 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.
 
bool echo_incoming_message (const message_origin_identifier &, const parameter_base &, const ossia::value &v) override
 called when some protocol on the same device received a message. More...
 
void stop () override
 
void set_device (ossia::net::device_base &dev) override
 It is mandatory to call this function from device implementations, when the protocol is set.
 
void expose_to (std::unique_ptr< ossia::net::protocol_base > p)
 
void stop_expose_to (const ossia::net::protocol_base &p)
 Stop exposition to a protocol. It will be deleted.
 
void clear ()
 
const auto & get_protocols () const
 The protocols we are currently exposing this device through.
 
- Public Member Functions inherited from ossia::net::protocol_base
 protocol_base (flags f)
 
 protocol_base (const protocol_base &)=delete
 
 protocol_base (protocol_base &&)=delete
 
protocol_baseoperator= (const protocol_base &)=delete
 
protocol_baseoperator= (protocol_base &&)=delete
 
virtual std::future< void > pull_async (parameter_base &)
 Pulls a value from the server asynchronously. More...
 
virtual void request (parameter_base &)
 Request an update on a value.
 
virtual bool push (const parameter_base &, ossia::value &&v)
 
bool push (const parameter_base &p)
 
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 (tcb::span< ossia::bundle_element >)
 
virtual bool push_bundle_bounded (tcb::span< ossia::bundle_element >)
 
virtual bool push_raw_bundle (const std::vector< full_parameter_data > &)
 Send a value to the network.
 
virtual bool publish (const parameter_base &)
 Notify the network that a parameter is to be published. More...
 
virtual bool unpublish (const parameter_base &)
 Notify the network that a parameter is to be removed. More...
 
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 void set_logger (const network_logger &l)
 Replace the loggers used.
 
virtual const network_loggerget_logger () const noexcept
 
virtual bool connected () const noexcept
 
virtual void connect ()
 
virtual void start_execution ()
 
virtual void stop_execution ()
 
flags get_flags () const noexcept
 
bool test_flag (flags f) const noexcept
 

Additional Inherited Members

- Public Types inherited from ossia::net::protocol_base
enum  flags { SupportsMultiplex = (1 << 0) }
 
- Public Attributes inherited from ossia::net::protocol_base
Nano::Signal< void()> on_connection_open
 
Nano::Signal< void()> on_connection_closed
 
Nano::Signal< void()> on_connection_failure
 
- Protected Attributes inherited from ossia::net::protocol_base
const flags m_flags {}
 
network_logger m_logger
 

Member Function Documentation

◆ pull()

bool ossia::net::multiplex_protocol::pull ( ossia::net::parameter_base )
overridevirtual

Pulls a value from the server synchronously.

Returns
True if the value was correctly retrieved.

Implements ossia::net::protocol_base.

◆ observe()

bool ossia::net::multiplex_protocol::observe ( ossia::net::parameter_base ,
bool   
)
overridevirtual

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.

Implements ossia::net::protocol_base.

◆ echo_incoming_message()

bool ossia::net::multiplex_protocol::echo_incoming_message ( const message_origin_identifier &  ,
const parameter_base ,
const ossia::value v 
)
overridevirtual

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 from ossia::net::protocol_base.

◆ expose_to()

void ossia::net::multiplex_protocol::expose_to ( std::unique_ptr< ossia::net::protocol_base p)

Use this to add protocols through which you will expose the device. For instance OSC, Minuit, etc.