OSSIA
Open Scenario System for Interactive Application
ossia::oscquery::oscquery_server_protocol Class Referencefinal

Implementation of an oscquery server. More...

Inheritance diagram for ossia::oscquery::oscquery_server_protocol:
ossia::net::protocol_base

Detailed Description

Implementation of an oscquery server.

Public Types

using connection_handler = std::weak_ptr< void >
 
- Public Types inherited from ossia::net::protocol_base
enum  flags { SupportsMultiplex = (1 << 0) }
 

Public Member Functions

 oscquery_server_protocol (uint16_t osc_port=1234, uint16_t ws_port=5678)
 
bool pull (net::parameter_base &) override
 Pulls a value from the server synchronously. More...
 
std::future< void > pull_async (net::parameter_base &) override
 Pulls a value from the server asynchronously. More...
 
void request (net::parameter_base &) override
 Request an update on a value.
 
bool push (const net::parameter_base &, const ossia::value &v) override
 Send a value to the network.
 
bool push_raw (const ossia::net::full_parameter_data &parameter_base) override
 Send a value to the network.
 
bool push_bundle (const std::vector< const ossia::net::parameter_base * > &) override
 Send many values in one go if the protocol supports it.
 
bool push_raw_bundle (const std::vector< ossia::net::full_parameter_data > &) override
 Send a value to the network.
 
bool echo_incoming_message (const ossia::net::message_origin_identifier &, const ossia::net::parameter_base &, const ossia::value &v) override
 called when some protocol on the same device received a message. More...
 
bool observe (net::parameter_base &, bool) override
 Notify the network that a parameter should be listened to. More...
 
bool observe_quietly (net::parameter_base &, bool) override
 Begin observation without notifying the other computers.
 
bool update (net::node_base &b) 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.
 
void run_commands ()
 
void set_device (net::device_base &dev) override
 It is mandatory to call this function from device implementations, when the protocol is set.
 
void stop () override
 
ossia::net::device_baseget_device () const
 
int get_osc_port () const
 
int get_ws_port () const
 
template<typename F >
void for_each_client (F &&f) const noexcept(noexcept(f(std::declval< const oscquery_client & >())))
 
void disable_zeroconf ()
 
void set_zeroconf_servers (net::zeroconf_server oscquery_server, net::zeroconf_server osc_server)
 
- 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 bool push (const parameter_base &, ossia::value &&v)
 
bool push (const parameter_base &p)
 
virtual bool push_bundle (tcb::span< ossia::bundle_element >)
 
virtual bool push_bundle_bounded (tcb::span< ossia::bundle_element >)
 
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 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
 

Public Attributes

Nano::Signal< void(const std::string &)> onClientConnected
 
Nano::Signal< void(const std::string &)> onClientDisconnected
 
- 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
 

Additional Inherited Members

- Protected Attributes inherited from ossia::net::protocol_base
const flags m_flags {}
 
network_logger m_logger
 

Member Function Documentation

◆ pull()

bool ossia::oscquery::oscquery_server_protocol::pull ( net::parameter_base )
overridevirtual

Pulls a value from the server synchronously.

Returns
True if the value was correctly retrieved.

The server cannot pull because it can have multiple clients.

Implements ossia::net::protocol_base.

◆ pull_async()

std::future< void > ossia::oscquery::oscquery_server_protocol::pull_async ( net::parameter_base )
overridevirtual

Pulls a value from the server asynchronously.

Returns
A future that will be set when the value is received.

Reimplemented from ossia::net::protocol_base.

◆ echo_incoming_message()

bool ossia::oscquery::oscquery_server_protocol::echo_incoming_message ( const ossia::net::message_origin_identifier &  ,
const ossia::net::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.

◆ observe()

bool ossia::oscquery::oscquery_server_protocol::observe ( 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.