diff --git a/CMakeLists.txt b/CMakeLists.txt index bd05abd..4588671 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -85,9 +85,6 @@ endif( FFTW_FOUND ) # Boost (1.48 required for container; scarab minimum is 1.46) #find_package( Boost 1.48.0 REQUIRED ) -# Sandfly -add_definitions( -DDRIPLINE_AUTH_FILE=~/.project8_authentications.json ) - # Included external dependencies # Including: tk_spline add_subdirectory( external ) diff --git a/examples/eb_fmt_1ch_fpa.yaml b/examples/eb_fmt_1ch_fpa.yaml index f8ec241..a45109c 100644 --- a/examples/eb_fmt_1ch_fpa.yaml +++ b/examples/eb_fmt_1ch_fpa.yaml @@ -1,8 +1,7 @@ -dripline: +dripline_mesh: broker: localhost - queue: psyllid -post-to-slack: false +use-relayer: false daq: activate-at-startup: true diff --git a/examples/eb_fmt_1ch_socket.yaml b/examples/eb_fmt_1ch_socket.yaml index b2a6ee1..9fc8d7b 100644 --- a/examples/eb_fmt_1ch_socket.yaml +++ b/examples/eb_fmt_1ch_socket.yaml @@ -1,8 +1,9 @@ -dripline: +dripline_mesh: broker: localhost - queue: psyllid -post-to-slack: false +name: psyllid + +use-relayer: false daq: activate-at-startup: true diff --git a/examples/fmt_1ch_fpa.yaml b/examples/fmt_1ch_fpa.yaml index cb89092..ff51bf2 100644 --- a/examples/fmt_1ch_fpa.yaml +++ b/examples/fmt_1ch_fpa.yaml @@ -1,8 +1,9 @@ -dripline: +dripline_mesh: broker: localhost - queue: psyllid -post-to-slack: false +name: psyllid + +use-relayer: false daq: activate-at-startup: true diff --git a/examples/fmt_1ch_socket.yaml b/examples/fmt_1ch_socket.yaml index c85c08a..5871d33 100644 --- a/examples/fmt_1ch_socket.yaml +++ b/examples/fmt_1ch_socket.yaml @@ -1,8 +1,9 @@ dripline: broker: localhost - queue: psyllid -post-to-slack: false +name: psyllid + +use-relayer: false daq: activate-at-startup: true diff --git a/examples/str_1ch_dataprod.yaml b/examples/str_1ch_dataprod.yaml index a9adb74..d8427f3 100644 --- a/examples/str_1ch_dataprod.yaml +++ b/examples/str_1ch_dataprod.yaml @@ -1,8 +1,9 @@ -dripline: +dripline_mesh: broker: localhost - queue: psyllid -post-to-slack: false +name: psyllid + +use-relayer: false daq: activate-at-startup: true diff --git a/examples/str_1ch_fpa.yaml b/examples/str_1ch_fpa.yaml index 30dab0c..ffaf5e5 100644 --- a/examples/str_1ch_fpa.yaml +++ b/examples/str_1ch_fpa.yaml @@ -1,8 +1,9 @@ -dripline: +dripline_mesh: broker: localhost - queue: psyllid -post-to-slack: false +name: psyllid + +use-relayer: false daq: activate-at-startup: true diff --git a/examples/str_1ch_socket.yaml b/examples/str_1ch_socket.yaml index 316e865..9b0ee0c 100644 --- a/examples/str_1ch_socket.yaml +++ b/examples/str_1ch_socket.yaml @@ -1,8 +1,9 @@ -dripline: +dripline_mesh: broker: localhost - queue: psyllid -post-to-slack: false +name: psyllid + +use-relayer: false daq: activate-at-startup: true diff --git a/examples/str_1ch_socket_batch.yaml b/examples/str_1ch_socket_batch.yaml index 3cbdd82..0ce3406 100644 --- a/examples/str_1ch_socket_batch.yaml +++ b/examples/str_1ch_socket_batch.yaml @@ -1,4 +1,6 @@ -post-to-slack: false +name: psyllid + +use-relayer: false daq: activate-at-startup: true diff --git a/examples/str_1ch_socket_custom.yaml b/examples/str_1ch_socket_custom.yaml index af09528..9cabcde 100644 --- a/examples/str_1ch_socket_custom.yaml +++ b/examples/str_1ch_socket_custom.yaml @@ -1,8 +1,9 @@ -dripline: +dripline_mesh: broker: localhost - queue: psyllid -post-to-slack: false +name: psyllid + +use-relayer: false daq: activate-at-startup: true diff --git a/examples/str_3ch_fpa.yaml b/examples/str_3ch_fpa.yaml index 9247ce9..38a8838 100644 --- a/examples/str_3ch_fpa.yaml +++ b/examples/str_3ch_fpa.yaml @@ -1,8 +1,9 @@ -dripline: +dripline_mesh: broker: localhost - queue: psyllid -post-to-slack: false +name: psyllid + +use-relayer: false daq: activate-at-startup: true diff --git a/sandfly b/sandfly index 0ead4ce..bca32da 160000 --- a/sandfly +++ b/sandfly @@ -1 +1 @@ -Subproject commit 0ead4ce3b48fb5b5274b6c65d37b6fcee4e1fcd9 +Subproject commit bca32da76947e82ce104463dfef02d3f171a8eac diff --git a/source/applications/psyllid.cc b/source/applications/psyllid.cc index 6b14642..c74ce24 100644 --- a/source/applications/psyllid.cc +++ b/source/applications/psyllid.cc @@ -12,6 +12,7 @@ #include "conductor.hh" #include "sandfly_error.hh" #include "server_config.hh" +#include "slack_relayer.hh" #include "application.hh" #include "logger.hh" @@ -41,10 +42,11 @@ int main( int argc, char** argv ) // The application scarab::main_app the_main; conductor the_conductor; - the_conductor.set_rc_creator< daq_control >(); // Default configuration + // Same as sandfly, but change the name the_main.default_config() = server_config(); + the_main.default_config()["name"]() = "psyllid"; // The main execution callback the_main.callback( [&](){ @@ -52,7 +54,8 @@ int main( int argc, char** argv ) auto t_cwrap = scarab::wrap_cancelable( the_conductor ); t_sig_hand.add_cancelable( t_cwrap ); - the_conductor.execute( the_main.primary_config(), the_main.auth() ); + the_conductor.execute< daq_control >( the_main.primary_config(), the_main.auth(), + std::make_shared< slack_relayer >(the_main.primary_config(), the_main.auth()) ); } ); // Command line options diff --git a/source/control/daq_control.cc b/source/control/daq_control.cc index 6be2919..2c4c8c5 100644 --- a/source/control/daq_control.cc +++ b/source/control/daq_control.cc @@ -59,7 +59,7 @@ namespace psyllid catch( std::exception& e ) { LERROR( plog, "Unable to start files: " << e.what() ); - f_msg_relay->slack_error( std::string("Unable to start files: ") + e.what() ); + f_msg_relay->send_error( std::string("Unable to start files: ") + e.what() ); set_status( status::error ); LDEBUG( plog, "Canceling midge" ); if( f_midge_pkg.have_lock() ) f_midge_pkg->cancel(); @@ -81,7 +81,7 @@ namespace psyllid catch( std::exception& e ) { LERROR( plog, "Unable to finish files: " << e.what() ); - f_msg_relay->slack_error( std::string("Unable to finish files: ") + e.what() ); + f_msg_relay->send_error( std::string("Unable to finish files: ") + e.what() ); set_status( status::error ); LDEBUG( plog, "Canceling midge" ); if( f_midge_pkg.have_lock() ) f_midge_pkg->cancel(); diff --git a/source/utility/CMakeLists.txt b/source/utility/CMakeLists.txt index 18daa4f..b8b0886 100644 --- a/source/utility/CMakeLists.txt +++ b/source/utility/CMakeLists.txt @@ -6,9 +6,11 @@ set( headers byte_swap.hh psyllid_error.hh psyllid_version.hh + slack_relayer.hh ) set( sources psyllid_error.cc + slack_relayer.cc ) configure_file( psyllid_version.cc.in ${CMAKE_CURRENT_BINARY_DIR}/psyllid_version.cc ) diff --git a/source/utility/slack_relayer.cc b/source/utility/slack_relayer.cc new file mode 100644 index 0000000..b008cb6 --- /dev/null +++ b/source/utility/slack_relayer.cc @@ -0,0 +1,85 @@ +/* + * slack_relayer.cc + * + * Created on: Feb 18, 2025 + * Author: N.S. Oblath + */ + +#include "slack_relayer.hh" + +#include "param.hh" + +namespace psyllid +{ + + slack_relayer::slack_relayer( const scarab::param_node& a_config, const scarab::authentication& a_auth ) : + sandfly::message_relayer( a_config, a_auth ) + {} + + + void slack_relayer::send_notice( const std::string& a_msg_text ) const + { + send_to_slack( a_msg_text, "status_message.notice." ); + return; + } + + void slack_relayer::send_warn( const std::string& a_msg_text ) const + { + send_to_slack( a_msg_text, "status_message.warning." ); + return; + } + + void slack_relayer::send_error( const std::string& a_msg_text ) const + { + send_to_slack( a_msg_text, "status_message.error." ); + return; + } + + void slack_relayer::send_critical( const std::string& a_msg_text ) const + { + send_to_slack( a_msg_text, "status_message.critical." ); + return; + } + + void slack_relayer::send_notice( scarab::param_ptr_t&& a_payload ) const + { + send_to_slack( std::move(a_payload), "status_message.notice." ); + return; + } + + void slack_relayer::send_warn( scarab::param_ptr_t&& a_payload ) const + { + send_to_slack( std::move(a_payload), "status_message.warning." ); + return; + } + + void slack_relayer::send_error( scarab::param_ptr_t&& a_payload ) const + { + send_to_slack( std::move(a_payload), "status_message.error." ); + return; + } + + void slack_relayer::send_critical( scarab::param_ptr_t&& a_payload ) const + { + send_to_slack( std::move(a_payload), "status_message.critical." ); + return; + } + + void slack_relayer::send_to_slack( const std::string& a_msg_text, const std::string& a_rk_root ) const + { + if( ! f_use_relayer ) return; + scarab::param_ptr_t t_msg_ptr( new scarab::param_node() ); + scarab::param_node& t_msg = t_msg_ptr->as_node(); + t_msg.add( "message", scarab::param_value( a_msg_text ) ); + send_to_slack( std::move(t_msg_ptr), a_rk_root ); + return; + } + + void slack_relayer::send_to_slack( scarab::param_ptr_t&& a_payload, const std::string& a_rk_root ) const + { + if( ! f_use_relayer ) return; + send_async( dripline::msg_alert::create( std::move(a_payload), a_rk_root + f_queue_name ) ); + return; + } + +} /* namespace psyllid */ diff --git a/source/utility/slack_relayer.hh b/source/utility/slack_relayer.hh new file mode 100644 index 0000000..22b0b24 --- /dev/null +++ b/source/utility/slack_relayer.hh @@ -0,0 +1,47 @@ +/* + * slack_relayer.hh + * + * Created on: Feb 18, 2025 + * Author: N.S. Oblath + */ + +#ifndef PSYLLID_SLACK_RELAYER_HH_ +#define PSYLLID_SLACK_RELAYER_HH_ + +#include "message_relayer.hh" + +#include "param_fwd.hh" + +namespace psyllid +{ + + class slack_relayer : public sandfly::message_relayer + { + public: + slack_relayer( const scarab::param_node& a_config, const scarab::authentication& a_auth ); + slack_relayer( const slack_relayer& ) = delete; + slack_relayer( slack_relayer&& ) = default; + virtual ~slack_relayer() = default; + + slack_relayer& operator=( const slack_relayer& ) = delete; + slack_relayer& operator=( slack_relayer&& ) = default; + + public: + void send_notice( const std::string& a_msg_text ) const override; + void send_warn( const std::string& a_msg_text ) const override; + void send_error( const std::string& a_msg_text ) const override; + void send_critical( const std::string& a_msg_text ) const override; + + void send_notice( scarab::param_ptr_t&& a_payload ) const override; + void send_warn( scarab::param_ptr_t&& a_payload ) const override; + void send_error( scarab::param_ptr_t&& a_payload ) const override; + void send_critical( scarab::param_ptr_t&& a_payload ) const override; + + protected: + void send_to_slack( const std::string& a_msg_text, const std::string& a_rk_root ) const; + void send_to_slack( scarab::param_ptr_t&& a_payload, const std::string& a_rk_root ) const; + }; + +} /* namespace psyllid */ + +#endif /* PSYLLID_SLACK_RELAYER_HH_ */