IRSOL
C++ code implementing socket server for interacting with Baumer camera.
irsol::server::handlers::internal::HandlerBase< T, > Class Template Referenceabstract

Generic handler base class for protocol messages. More...

#include <base.hpp>

Inheritance diagram for irsol::server::handlers::internal::HandlerBase< T, >:
MyAssignmentHandler irsol::server::handlers::AssignmentFrameRateHandler irsol::server::handlers::AssignmentInputSequenceLengthHandler irsol::server::handlers::AssignmentIntegrationTimeHandler irsol::server::handlers::CommandAbortHandler irsol::server::handlers::InquiryFrameRateHandler irsol::server::handlers::InquiryInputSequenceLengthHandler irsol::server::handlers::InquiryIntegrationTimeHandler irsol::server::handlers::LambdaHandler< T, > irsol::server::handlers::internal::AssignmentImgHandlerBase< AssignmentCameraImageAttribute > irsol::server::handlers::internal::CommandGIBaseHandler irsol::server::handlers::internal::InquiryImgHandlerBase< InquiryCameraImageAttribute >

Public Member Functions

virtual std::vector< out_message_toperator() (const irsol::types::client_id_t &clientId, T &&message)
 Invokes the handler for a given client and message.
 

Protected Member Functions

 HandlerBase (std::shared_ptr< Context > ctx)
 Constructs the handler base.
 
virtual std::vector< out_message_tprocess (std::shared_ptr< irsol::server::ClientSession > session, T &&message)=0
 Processes the protocol message for the given session.
 

Protected Attributes

std::shared_ptr< Contextctx
 Handler context (provides access to app and utilities).
 

Detailed Description

template<typename T, std::enable_if_t< irsol::traits::is_type_in_variant< T, irsol::protocol::InMessage >::value, int > = 0>
class irsol::server::handlers::internal::HandlerBase< T, >

Generic handler base class for protocol messages.

Template Parameters
TProtocol message type (Assignment, Inquiry, Command).

Provides the interface for processing protocol messages for a given client session.

Definition at line 38 of file base.hpp.

Constructor & Destructor Documentation

◆ HandlerBase()

irsol::server::handlers::internal::HandlerBase< T, >::HandlerBase ( std::shared_ptr< Context ctx)
inlineprotected

Constructs the handler base.

Parameters
ctxHandler context.

Definition at line 68 of file base.hpp.

68: ctx(ctx){};
std::shared_ptr< Context > ctx
Handler context (provides access to app and utilities).
Definition base.hpp:81

Member Function Documentation

◆ operator()()

Invokes the handler for a given client and message.

Parameters
clientIdThe client identifier.
messageThe protocol message.
Returns
Vector of outbound messages (success or error).
Note
This method is invoked by the irsol::server::handlers::MessageHandler::handle method.

Definition at line 50 of file base.hpp.

53 {
54 // Retrieve the current session using the client ID
55 auto session = ctx->getSession(clientId);
56 if(!session) {
57 IRSOL_LOG_ERROR("No session found for client {}", clientId);
58 return {};
59 }
60 return process(session, std::move(message));
61 }
virtual std::vector< out_message_t > process(std::shared_ptr< irsol::server::ClientSession > session, T &&message)=0
Processes the protocol message for the given session.
#define IRSOL_LOG_ERROR(...)
Logs an error-level message using the default logger.
Definition logging.hpp:94
constexpr auto makeHandler(std::shared_ptr< Context > ctx, Args &&... args)
Constructs a handler instance of the given type.
Definition factory.hpp:28

◆ process()

virtual std::vector< out_message_t > irsol::server::handlers::internal::HandlerBase< T, >::process ( std::shared_ptr< irsol::server::ClientSession session,
T &&  message 
)
protectedpure virtual

Processes the protocol message for the given session.

Parameters
sessionThe client session.
messageThe protocol message.
Returns
Vector of outbound messages (success or error).

Implemented in irsol::server::handlers::LambdaHandler< T, >.

Member Data Documentation

◆ ctx

Handler context (provides access to app and utilities).

Definition at line 81 of file base.hpp.


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