Dripline-Cpp  v2.10.11
Dripline Implementation in C++
Public Member Functions | Private Member Functions | List of all members
oscillator_service_hub Class Reference

#include <oscillator_service_hub.hh>

Inheritance diagram for oscillator_service_hub:
Inheritance graph

Public Member Functions

 oscillator_service_hub (const scarab::param_node &a_config, const scarab::authentication &a_auth)
 
virtual ~oscillator_service_hub ()
 
void execute ()
 
 snake_case_mv_referrable (class oscillator, oscillator)
 
 snake_case_mv_accessible (int, return)
 
- Public Member Functions inherited from hub
 hub (const scarab::param_node &a_config, const scarab::authentication &a_auth, const bool a_make_connection=true)
 
 hub (const hub &)=delete
 
 hub (hub &&)=default
 
virtual ~hub ()=default
 
huboperator= (const hub &)=delete
 
huboperator= (hub &&)
 
void set_run_handler (const handler_func_t &a_func)
 Sets the run request handler function. More...
 
void register_get_handler (const std::string &a_key, const handler_func_t &a_func)
 Sets a get request handler function. More...
 
void register_set_handler (const std::string &a_key, const handler_func_t &a_func)
 Sets a set request handler function. More...
 
void register_cmd_handler (const std::string &a_key, const handler_func_t &a_func)
 Sets a command request handler function. More...
 
void remove_get_handler (const std::string &a_key)
 Removes a get request handler function. More...
 
void remove_set_handler (const std::string &a_key)
 Removes a set request handler function. More...
 
void remove_cmd_handler (const std::string &a_key)
 Removes a command request handler function. More...
 
- Public Member Functions inherited from service
 service (const scarab::param_node &a_config=service_config(), const scarab::authentication &a_auth=create_auth_with_dripline(true), const bool a_make_connection=true)
 
 service (const service &)=delete
 
 service (service &&a_orig)=default
 
virtual ~service ()
 
serviceoperator= (const service &)=delete
 
serviceoperator= (service &&a_orig)
 
 snake_case_mv_referrable (scarab::authentication, auth)
 
 snake_case_mv_accessible (status, status)
 
 snake_case_mv_accessible (bool, restart_on_error)
 
 snake_case_mv_accessible (bool, enable_scheduling)
 
bool add_child (endpoint_ptr_t a_endpoint_ptr)
 Add a synchronous child endpoint. More...
 
bool add_async_child (endpoint_ptr_t a_endpoint_ptr)
 Add an asynchronous child endpoint. More...
 
virtual sent_msg_pkg_ptr send (request_ptr_t a_request, amqp_channel_ptr a_channel=amqp_channel_ptr()) const
 Sends a request message and returns a channel on which to listen for a reply. More...
 
virtual sent_msg_pkg_ptr send (reply_ptr_t a_reply, amqp_channel_ptr a_channel=amqp_channel_ptr()) const
 Sends a reply message. More...
 
virtual sent_msg_pkg_ptr send (alert_ptr_t a_alert, amqp_channel_ptr a_channel=amqp_channel_ptr()) const
 Sends an alert message. More...
 
virtual void run ()
 
bool start ()
 
bool listen ()
 
bool stop ()
 
virtual bool listen_on_queue ()
 
virtual void send_reply (reply_ptr_t a_reply) const
 Sends a reply message. More...
 
 snake_case_mv_accessible (uuid_t, id)
 
 snake_case_mv_referrable (sync_map_t, sync_children)
 
 snake_case_mv_referrable (async_map_t, async_children)
 
 snake_case_mv_referrable (std::string, broadcast_key)
 
- Public Member Functions inherited from core
 core (const scarab::param_node &a_config=dripline_config(), const scarab::authentication &a_auth=scarab::authentication(), const bool a_make_connection=true)
 
 core (const core &a_orig)=default
 
 core (core &&a_orig)=default
 
virtual ~core ()=default
 
coreoperator= (const core &a_orig)=default
 
coreoperator= (core &&a_orig)=default
 
 snake_case_mv_referrable (std::string, address)
 
 snake_case_mv_accessible (unsigned, port)
 
 snake_case_mv_referrable (std::string, username)
 
 snake_case_mv_referrable (std::string, password)
 
 snake_case_mv_referrable (std::string, requests_exchange)
 
 snake_case_mv_referrable (std::string, alerts_exchange)
 
 snake_case_mv_referrable (std::string, heartbeat_routing_key)
 
 snake_case_mv_accessible (unsigned, max_payload_size)
 
 snake_case_mv_accessible (bool, make_connection)
 
 snake_case_mv_accessible (unsigned, max_connection_attempts)
 
- Public Member Functions inherited from endpoint
 endpoint (const std::string &a_name)
 
 endpoint (const endpoint &a_orig)=default
 
 endpoint (endpoint &&a_orig)=default
 
virtual ~endpoint ()=default
 
endpointoperator= (const endpoint &a_orig)=default
 
endpointoperator= (endpoint &&a_orig)=default
 
 snake_case_mv_referrable (std::string, name)
 
 snake_case_mv_accessible (service *, service)
 
serviceparent ()
 
const serviceparent () const
 
reply_ptr_t submit_request_message (const request_ptr_t a_request)
 Directly submit a request message to this endpoint. More...
 
void submit_reply_message (const reply_ptr_t a_reply)
 Directly submit a reply message to this endpoint. More...
 
void submit_alert_message (const alert_ptr_t a_alert)
 Directly submit an alert message to this endpoint. More...
 
virtual void on_reply_message (const reply_ptr_t a_reply)
 
virtual void on_alert_message (const alert_ptr_t a_alert)
 
void sort_message (const message_ptr_t a_request)
 
uuid_t enable_lockout (const scarab::param_node &a_tag)
 enable lockout with randomly-generated key More...
 
uuid_t enable_lockout (const scarab::param_node &a_tag, uuid_t a_key)
 enable lockout with user-supplied key More...
 
bool disable_lockout (const uuid_t &a_key, bool a_force=false)
 
bool is_locked () const
 
bool check_key (const uuid_t &a_key) const
 
- Public Member Functions inherited from listener_receiver
 listener_receiver ()
 
 listener_receiver (const listener_receiver &)=delete
 
 listener_receiver (listener_receiver &&a_orig)
 
listener_receiveroperator= (const listener_receiver &)=delete
 
listener_receiveroperator= (listener_receiver &&a_orig)
 
- Public Member Functions inherited from listener
 listener ()
 
 listener (const listener &)=delete
 
 listener (listener &&a_orig)=default
 
virtual ~listener ()=default
 
listeneroperator= (const listener &)=delete
 
listeneroperator= (listener &&a_orig)
 
 snake_case_mv_referrable (amqp_channel_ptr, channel)
 
 snake_case_mv_referrable (std::string, consumer_tag)
 
 snake_case_mv_accessible (unsigned, listen_timeout_ms)
 
 snake_case_mv_referrable (std::thread, listener_thread)
 
- Public Member Functions inherited from concurrent_receiver
 concurrent_receiver ()
 
 concurrent_receiver (const concurrent_receiver &)=delete
 
 concurrent_receiver (concurrent_receiver &&a_orig)
 
virtual ~concurrent_receiver ()
 
concurrent_receiveroperator= (const concurrent_receiver &)=delete
 
concurrent_receiveroperator= (concurrent_receiver &&a_orig)
 
virtual void process_message (message_ptr_t a_message)
 Deposits the message in the concurrent queue (called by the listener) More...
 
void execute ()
 Handles messages that appear in the concurrent queue by calling submit_message(). More...
 
- Public Member Functions inherited from receiver
 receiver ()
 
 receiver (const receiver &a_orig)=delete
 
 receiver (receiver &&a_orig)=default
 
virtual ~receiver ()=default
 
receiveroperator= (const receiver &a_orig)=delete
 
receiveroperator= (receiver &&a_orig)
 
void handle_message_chunk (amqp_envelope_ptr a_envelope)
 
void wait_for_message (incoming_message_pack &a_pack, const std::string &a_message_id)
 
void process_message_pack (incoming_message_pack &a_pack, const std::string &a_message_id)
 Converts a message pack into a Dripline message, and then submits the message for processing. More...
 
 snake_case_mv_referrable (incoming_message_map, incoming_messages)
 Stores the incomplete messages. More...
 
 snake_case_mv_accessible (unsigned, single_message_wait_ms)
 Wait time for all message chunks from a single dripline message. More...
 
 snake_case_mv_accessible (unsigned, reply_listen_timeout_ms)
 Listen timeout for individual message chunks when waiting for replies. More...
 
reply_ptr_t wait_for_reply (const sent_msg_pkg_ptr a_receive_reply, int a_timeout_ms=0)
 
reply_ptr_t wait_for_reply (const sent_msg_pkg_ptr a_receive_reply, core::post_listen_status &a_status, int a_timeout_ms=0)
 
- Public Member Functions inherited from heartbeater
 heartbeater (service *a_service)
 Primary constructor. A service pointer is required to be able to send messages. More...
 
 heartbeater (const heartbeater &)=delete
 
 heartbeater (heartbeater &&a_orig)=default
 
virtual ~heartbeater ()=default
 
heartbeateroperator= (const heartbeater &)=delete
 
heartbeateroperator= (heartbeater &&a_orig)
 
void execute (const std::string &a_name, uuid_t a_id, const std::string &a_routing_key)
 
 snake_case_mv_accessible (unsigned, heartbeat_interval_s)
 Interval between heartbeat alerts (default: 60 s) More...
 
 snake_case_mv_accessible (unsigned, check_timeout_ms)
 Timing interval for the internal loop (default: 1000 ms) More...
 
 snake_case_mv_accessible (service *, service)
 
- Public Member Functions inherited from scheduler< executor, clock >
 scheduler ()
 
 scheduler (const scheduler &)=delete
 
 scheduler (scheduler &&)
 
virtual ~scheduler ()=default
 
scheduleroperator= (const scheduler &)=delete
 
scheduleroperator= (scheduler &&a_orig)
 
int schedule (executable_t an_executable, time_point_t an_exe_time)
 
int schedule (executable_t an_executable, duration_t an_interval, time_point_t an_exe_time=clock::now())
 
void unschedule (int an_id)
 Unschedule an event using the event's ID. More...
 
void execute ()
 Main execution loop for the scheduler. More...
 
 snake_case_mv_accessible (duration_t, exe_buffer)
 The time difference from "now" that determines whether an event is executed. More...
 
 snake_case_mv_accessible (duration_t, cycle_time)
 Main thread cycle time. More...
 
 snake_case_mv_referrable_const (executor, the_executor)
 The executor used to execute events.
More...
 
 snake_case_mv_referrable_const (events_map_t, events)
 The scheduled events, stored in a map sorted by execution time. More...
 

Private Member Functions

reply_ptr_t handle_set_frequency_request (const request_ptr_t a_request)
 
reply_ptr_t handle_get_frequency_request (const request_ptr_t a_request)
 
reply_ptr_t handle_set_amplitude_request (const request_ptr_t a_request)
 
reply_ptr_t handle_get_amplitude_request (const request_ptr_t a_request)
 
reply_ptr_t handle_set_start_time_request (const request_ptr_t a_request)
 
reply_ptr_t handle_get_start_time_request (const request_ptr_t a_request)
 
reply_ptr_t handle_get_in_phase_request (const request_ptr_t a_request)
 
reply_ptr_t handle_get_quadrature_request (const request_ptr_t a_request)
 
reply_ptr_t handle_get_iq_request (const request_ptr_t a_request)
 

Additional Inherited Members

- Public Types inherited from service
typedef std::map< std::string, endpoint_ptr_tsync_map_t
 
typedef std::map< std::string, lr_ptr_tasync_map_t
 
- Public Types inherited from core
enum class  post_listen_status {
  unknown , message_received , timeout , soft_error ,
  hard_error
}
 
- Public Types inherited from scheduler< executor, clock >
using clock_t = clock
 
using time_point_t = typename clock::time_point
 
using duration_t = typename clock::duration
 
using executable_t = std::function< void() >
 
typedef std::multimap< time_point_t, eventevents_map_t
 
- Static Public Member Functions inherited from core
static void listen_for_message (amqp_envelope_ptr &a_envelope, post_listen_status &a_status, amqp_channel_ptr a_channel, const std::string &a_consumer_tag, int a_timeout_ms=0, bool a_do_ack=true)
 listen for a single AMQP message More...
 
- Public Attributes inherited from scheduler< executor, clock >
snake_case_mv_accessible_static(int, curr_id) protected std::recursive_mutex f_scheduler_mutex
 The ID to be used for the next scheduled event. More...
 
std::mutex f_executor_mutex
 
std::condition_variable_any f_cv
 
std::thread f_scheduler_thread
 
- Static Public Attributes inherited from core
static bool s_offline = false
 
- Protected Types inherited from service
enum class  status {
  nothing = 0 , channel_created = 10 , exchange_declared = 20 , queue_declared = 30 ,
  queue_bound = 40 , consuming = 50 , listening = 60 , processing = 70
}
 
- Protected Member Functions inherited from service
virtual bool open_channels ()
 
virtual bool setup_queues ()
 
virtual bool bind_keys ()
 
virtual bool start_consuming ()
 
virtual bool stop_consuming ()
 
virtual bool remove_queue ()
 
virtual void submit_message (message_ptr_t a_message)
 Implementation of submit_message (from concurrent_receiver) More...
 
virtual reply_ptr_t on_request_message (const request_ptr_t a_request)
 Default request handler; passes request to initial request functions. More...
 
- Protected Member Functions inherited from core
sent_msg_pkg_ptr do_send (message_ptr_t a_message, const std::string &a_exchange, bool a_expect_reply, amqp_channel_ptr a_channel=amqp_channel_ptr()) const
 
amqp_channel_ptr send_withreply (message_ptr_t a_message, std::string &a_reply_consumer_tag, const std::string &a_exchange) const
 
bool send_noreply (message_ptr_t a_message, const std::string &a_exchange) const
 
amqp_channel_ptr open_channel () const
 
- Protected Member Functions inherited from endpoint
bool authenticate (const uuid_t &a_key) const
 Returns true if the server is unlocked or if it's locked and the key matches the lockout key; returns false otherwise. More...
 
 snake_case_mv_referrable (scarab::param_node, lockout_tag)
 
 snake_case_mv_accessible (uuid_t, lockout_key)
 
- Protected Member Functions inherited from concurrent_receiver
 snake_case_mv_referrable (scarab::concurrent_queue< message_ptr_t >, message_queue)
 
 snake_case_mv_referrable (std::thread, receiver_thread)
 
- Protected Member Functions inherited from receiver
reply_ptr_t process_received_reply (incoming_message_pack &a_pack, const std::string &a_message_id)
 
- Static Protected Member Functions inherited from core
static bool setup_exchange (amqp_channel_ptr a_channel, const std::string &a_exchange)
 
static bool setup_queue (amqp_channel_ptr a_channel, const std::string &a_queue_name)
 
static bool bind_key (amqp_channel_ptr a_channel, const std::string &a_exchange, const std::string &a_queue_name, const std::string &a_routing_key)
 
static std::string start_consuming (amqp_channel_ptr a_channel, const std::string &a_queue_name)
 
static bool stop_consuming (amqp_channel_ptr a_channel, std::string &a_consumer_tag)
 
static bool remove_queue (amqp_channel_ptr a_channel, const std::string &a_queue_name)
 
- Protected Attributes inherited from heartbeater
std::thread f_heartbeat_thread
 

Detailed Description

Definition at line 18 of file oscillator_service_hub.hh.

Constructor & Destructor Documentation

◆ oscillator_service_hub()

oscillator_service_hub ( const scarab::param_node &  a_config,
const scarab::authentication &  a_auth 
)

Definition at line 29 of file oscillator_service_hub.cc.

◆ ~oscillator_service_hub()

~oscillator_service_hub ( )
virtual

Definition at line 44 of file oscillator_service_hub.cc.

Member Function Documentation

◆ execute()

void execute ( )

Definition at line 48 of file oscillator_service_hub.cc.

◆ handle_get_amplitude_request()

reply_ptr_t handle_get_amplitude_request ( const request_ptr_t  a_request)
private

Definition at line 94 of file oscillator_service_hub.cc.

◆ handle_get_frequency_request()

reply_ptr_t handle_get_frequency_request ( const request_ptr_t  a_request)
private

Definition at line 79 of file oscillator_service_hub.cc.

◆ handle_get_in_phase_request()

reply_ptr_t handle_get_in_phase_request ( const request_ptr_t  a_request)
private

Definition at line 129 of file oscillator_service_hub.cc.

◆ handle_get_iq_request()

reply_ptr_t handle_get_iq_request ( const request_ptr_t  a_request)
private

Definition at line 145 of file oscillator_service_hub.cc.

◆ handle_get_quadrature_request()

reply_ptr_t handle_get_quadrature_request ( const request_ptr_t  a_request)
private

Definition at line 137 of file oscillator_service_hub.cc.

◆ handle_get_start_time_request()

reply_ptr_t handle_get_start_time_request ( const request_ptr_t  a_request)
private

◆ handle_set_amplitude_request()

reply_ptr_t handle_set_amplitude_request ( const request_ptr_t  a_request)
private

Definition at line 88 of file oscillator_service_hub.cc.

◆ handle_set_frequency_request()

reply_ptr_t handle_set_frequency_request ( const request_ptr_t  a_request)
private

Definition at line 73 of file oscillator_service_hub.cc.

◆ handle_set_start_time_request()

reply_ptr_t handle_set_start_time_request ( const request_ptr_t  a_request)
private

◆ snake_case_mv_accessible()

snake_case_mv_accessible ( int  ,
return   
)

◆ snake_case_mv_referrable()

snake_case_mv_referrable ( class oscillator  ,
oscillator   
)

The documentation for this class was generated from the following files: