Skip to content
3 changes: 0 additions & 3 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -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 )
Expand Down
5 changes: 2 additions & 3 deletions examples/eb_fmt_1ch_fpa.yaml
Original file line number Diff line number Diff line change
@@ -1,8 +1,7 @@
dripline:
dripline_mesh:
broker: localhost
queue: psyllid

post-to-slack: false
use-relayer: false

daq:
activate-at-startup: true
Expand Down
7 changes: 4 additions & 3 deletions examples/eb_fmt_1ch_socket.yaml
Original file line number Diff line number Diff line change
@@ -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
Expand Down
7 changes: 4 additions & 3 deletions examples/fmt_1ch_fpa.yaml
Original file line number Diff line number Diff line change
@@ -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
Expand Down
5 changes: 3 additions & 2 deletions examples/fmt_1ch_socket.yaml
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
dripline:
broker: localhost
queue: psyllid

post-to-slack: false
name: psyllid

use-relayer: false

daq:
activate-at-startup: true
Expand Down
7 changes: 4 additions & 3 deletions examples/str_1ch_dataprod.yaml
Original file line number Diff line number Diff line change
@@ -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
Expand Down
7 changes: 4 additions & 3 deletions examples/str_1ch_fpa.yaml
Original file line number Diff line number Diff line change
@@ -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
Expand Down
7 changes: 4 additions & 3 deletions examples/str_1ch_socket.yaml
Original file line number Diff line number Diff line change
@@ -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
Expand Down
4 changes: 3 additions & 1 deletion examples/str_1ch_socket_batch.yaml
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
post-to-slack: false
name: psyllid

use-relayer: false

daq:
activate-at-startup: true
Expand Down
7 changes: 4 additions & 3 deletions examples/str_1ch_socket_custom.yaml
Original file line number Diff line number Diff line change
@@ -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
Expand Down
7 changes: 4 additions & 3 deletions examples/str_3ch_fpa.yaml
Original file line number Diff line number Diff line change
@@ -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
Expand Down
7 changes: 5 additions & 2 deletions source/applications/psyllid.cc
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Expand Down Expand Up @@ -41,18 +42,20 @@ 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( [&](){
scarab::signal_handler t_sig_hand;
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
Expand Down
4 changes: 2 additions & 2 deletions source/control/daq_control.cc
Original file line number Diff line number Diff line change
Expand Up @@ -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();
Expand All @@ -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();
Expand Down
2 changes: 2 additions & 0 deletions source/utility/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -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 )
Expand Down
85 changes: 85 additions & 0 deletions source/utility/slack_relayer.cc
Original file line number Diff line number Diff line change
@@ -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 */
47 changes: 47 additions & 0 deletions source/utility/slack_relayer.hh
Original file line number Diff line number Diff line change
@@ -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_ */