libdoip  0.1.0
DoIP (Diagnostics over Internet Protocol) ISO 13400 C++17 Library
doip::DoIPDefaultConnection Class Reference

Default implementation of IConnectionContext. More...

#include <DoIPDefaultConnection.h>

Inheritance diagram for doip::DoIPDefaultConnection:
Collaboration diagram for doip::DoIPDefaultConnection:

Public Member Functions

 DoIPDefaultConnection (UniqueServerModelPtr model)
 Constructs a DoIPDefaultConnection. More...
 
ssize_t sendProtocolMessage (const DoIPMessage &msg) override
 Sends a DoIP protocol message to the client. More...
 
void closeConnection (DoIPCloseReason reason) override
 Closes the connection. More...
 
bool isOpen () const override
 Checks if the connection is open. More...
 
DoIPCloseReason getCloseReason () const override
 Gets the reason for connection closure. More...
 
bool isRoutingActivated () const
 Checks if routing is currently activated. More...
 
uint8_t getAliveCheckRetryCount () const
 Gets the alive check retry count. More...
 
std::chrono::milliseconds getInitialInactivityTimeout () const
 Gets the initial inactivity timeout duration. More...
 
std::chrono::milliseconds getGeneralInactivityTimeout () const
 Gets the general inactivity timeout duration. More...
 
std::chrono::milliseconds getAliveCheckTimeout () const
 Gets the alive check timeout duration. More...
 
std::chrono::milliseconds getDownstreamResponseTimeout () const
 Gets the downstream response timeout duration. More...
 
void setAliveCheckRetryCount (uint8_t count)
 Sets the alive check retry count. More...
 
void setInitialInactivityTimeout (std::chrono::milliseconds timeout)
 Sets the initial inactivity timeout duration. More...
 
void setGeneralInactivityTimeout (std::chrono::milliseconds timeout)
 Sets the general inactivity timeout duration. More...
 
void setAliveCheckTimeout (std::chrono::milliseconds timeout)
 Sets the alive check timeout duration. More...
 
void setDownstreamResponseTimeout (std::chrono::milliseconds timeout)
 Sets the downstream response timeout duration. More...
 
DoIPAddress getServerAddress () const override
 Gets the server's logical address. More...
 
DoIPAddress getClientAddress () const override
 Gets the client's address. More...
 
DoIPDiagnosticAck notifyDiagnosticMessage (const DoIPMessage &msg) override
 Handles an incoming diagnostic message. More...
 
void notifyConnectionClosed (DoIPCloseReason reason) override
 Notifies application that connection is closing. More...
 
void notifyDiagnosticAckSent (DoIPDiagnosticAck ack) override
 Notifies application that diagnostic ACK/NACK was sent. More...
 
bool hasDownstreamHandler () const override
 Checks if a downstream handler is present. More...
 
DoIPDownstreamResult notifyDownstreamRequest (const DoIPMessage &msg) override
 Notifies application of a downstream request. More...
 
void receiveDownstreamResponse (const ByteArray &response, DoIPDownstreamResult result) override
 Receives a downstream response. More...
 
DoIPServerState getState () const
 Gets the current state of the connection. More...
 
UniqueServerModelPtrgetServerModel ()
 Gets the server model. More...
 
void handleMessage2 (const DoIPMessage &message)
 Handles a message (internal helper) More...
 
- Public Member Functions inherited from doip::IConnectionContext
virtual ~IConnectionContext ()=default
 

Protected Member Functions

void transitionTo (DoIPServerState newState)
 
std::chrono::milliseconds getTimerDuration (StateDescriptor const *stateDesc)
 
void startStateTimer (StateDescriptor const *stateDesc)
 
void restartStateTimer ()
 
void handleSocketInitialized (DoIPServerEvent event, OptDoIPMessage msg)
 
void handleWaitRoutingActivation (DoIPServerEvent event, OptDoIPMessage msg)
 
void handleRoutingActivated (DoIPServerEvent event, OptDoIPMessage msg)
 
void handleWaitAliveCheckResponse (DoIPServerEvent event, OptDoIPMessage msg)
 
void handleWaitDownstreamResponse (DoIPServerEvent event, OptDoIPMessage msg)
 
void handleFinalize (DoIPServerEvent event, OptDoIPMessage msg)
 
void handleTimeout (ConnectionTimers timer_id)
 Default timeout handler. More...
 
ssize_t sendRoutingActivationResponse (const DoIPAddress &source_address, DoIPRoutingActivationResult response_code)
 
ssize_t sendAliveCheckRequest ()
 
ssize_t sendDiagnosticMessageResponse (const DoIPAddress &sourceAddress, DoIPDiagnosticAck ack)
 
ssize_t sendDownstreamResponse (const DoIPAddress &sourceAddress, const ByteArray &payload)
 

Protected Attributes

UniqueServerModelPtr m_serverModel
 
std::array< StateDescriptor, 7 > STATE_DESCRIPTORS
 
DoIPAddress m_routedClientAddress
 
bool m_isOpen
 
DoIPCloseReason m_closeReason = DoIPCloseReason::None
 
const StateDescriptor * m_state = nullptr
 
TimerManager< ConnectionTimersm_timerManager
 
uint8_t m_aliveCheckRetry {0}
 
uint8_t m_aliveCheckRetryCount {DOIP_ALIVE_CHECK_RETRIES}
 
std::chrono::milliseconds m_initialInactivityTimeout {times::server::InitialInactivityTimeout}
 
std::chrono::milliseconds m_generalInactivityTimeout {times::server::GeneralInactivityTimeout}
 
std::chrono::milliseconds m_aliveCheckTimeout {times::server::AliveCheckResponseTimeout}
 
std::chrono::milliseconds m_downstreamResponseTimeout {10s}
 

Detailed Description

Default implementation of IConnectionContext.

This class provides a default implementation of the IConnectionContext interface, including the state machine and server model. It excludes TCP socket support, making it suitable for non-TCP-based connections.

Definition at line 54 of file DoIPDefaultConnection.h.

Constructor & Destructor Documentation

◆ DoIPDefaultConnection()

doip::DoIPDefaultConnection::DoIPDefaultConnection ( UniqueServerModelPtr  model)
explicit

Constructs a DoIPDefaultConnection.

Parameters
modelThe server model to use

Definition at line 9 of file DoIPDefaultConnection.cpp.

References handleSocketInitialized(), doip::SocketInitialized, and doip::WaitRoutingActivation.

Member Function Documentation

◆ closeConnection()

void doip::DoIPDefaultConnection::closeConnection ( DoIPCloseReason  reason)
overridevirtual

Closes the connection.

Parameters
reasonThe reason for closure

Implements doip::IConnectionContext.

Definition at line 62 of file DoIPDefaultConnection.cpp.

References LOG_DOIP_ERROR, LOG_DOIP_INFO, and fmt::streamed().

Referenced by doip::DoIPConnection::closeConnection().

◆ getAliveCheckRetryCount()

uint8_t doip::DoIPDefaultConnection::getAliveCheckRetryCount ( ) const
inline

Gets the alive check retry count.

Returns
The number of alive check retries

Definition at line 148 of file DoIPDefaultConnection.h.

◆ getAliveCheckTimeout()

std::chrono::milliseconds doip::DoIPDefaultConnection::getAliveCheckTimeout ( ) const
inline

Gets the alive check timeout duration.

Returns
The alive check timeout in milliseconds

Definition at line 166 of file DoIPDefaultConnection.h.

◆ getClientAddress()

DoIPAddress doip::DoIPDefaultConnection::getClientAddress ( ) const
overridevirtual

Gets the client's address.

Returns
The client address

Implements doip::IConnectionContext.

Definition at line 90 of file DoIPDefaultConnection.cpp.

◆ getCloseReason()

DoIPCloseReason doip::DoIPDefaultConnection::getCloseReason ( ) const
inlineoverridevirtual

Gets the reason for connection closure.

Returns
The close reason

Implements doip::IConnectionContext.

Definition at line 134 of file DoIPDefaultConnection.h.

◆ getDownstreamResponseTimeout()

std::chrono::milliseconds doip::DoIPDefaultConnection::getDownstreamResponseTimeout ( ) const
inline

Gets the downstream response timeout duration.

Returns
The downstream response timeout in milliseconds

Definition at line 172 of file DoIPDefaultConnection.h.

◆ getGeneralInactivityTimeout()

std::chrono::milliseconds doip::DoIPDefaultConnection::getGeneralInactivityTimeout ( ) const
inline

Gets the general inactivity timeout duration.

Returns
The general inactivity timeout in milliseconds

Definition at line 160 of file DoIPDefaultConnection.h.

◆ getInitialInactivityTimeout()

std::chrono::milliseconds doip::DoIPDefaultConnection::getInitialInactivityTimeout ( ) const
inline

Gets the initial inactivity timeout duration.

Returns
The initial inactivity timeout in milliseconds

Definition at line 154 of file DoIPDefaultConnection.h.

◆ getServerAddress()

DoIPAddress doip::DoIPDefaultConnection::getServerAddress ( ) const
overridevirtual

Gets the server's logical address.

Returns
The server address

Implements doip::IConnectionContext.

Definition at line 86 of file DoIPDefaultConnection.cpp.

◆ getServerModel()

UniqueServerModelPtr& doip::DoIPDefaultConnection::getServerModel ( )
inline

Gets the server model.

Returns
Reference to the server model pointer

Definition at line 267 of file DoIPDefaultConnection.h.

◆ getState()

DoIPServerState doip::DoIPDefaultConnection::getState ( ) const
inline

Gets the current state of the connection.

Returns
The current DoIPServerState

Definition at line 259 of file DoIPDefaultConnection.h.

◆ getTimerDuration()

std::chrono::milliseconds doip::DoIPDefaultConnection::getTimerDuration ( StateDescriptor const *  stateDesc)
protected

Definition at line 126 of file DoIPDefaultConnection.cpp.

◆ handleFinalize()

void doip::DoIPDefaultConnection::handleFinalize ( DoIPServerEvent  event,
OptDoIPMessage  msg 
)
protected

Definition at line 317 of file DoIPDefaultConnection.cpp.

◆ handleMessage2()

void doip::DoIPDefaultConnection::handleMessage2 ( const DoIPMessage message)

Handles a message (internal helper)

Parameters
messageThe message to handle

Definition at line 98 of file DoIPDefaultConnection.cpp.

Referenced by doip::DoIPConnection::receiveTcpMessage().

◆ handleRoutingActivated()

void doip::DoIPDefaultConnection::handleRoutingActivated ( DoIPServerEvent  event,
OptDoIPMessage  msg 
)
protected

◆ handleSocketInitialized()

void doip::DoIPDefaultConnection::handleSocketInitialized ( DoIPServerEvent  event,
OptDoIPMessage  msg 
)
protected

Definition at line 184 of file DoIPDefaultConnection.cpp.

Referenced by DoIPDefaultConnection().

◆ handleTimeout()

void doip::DoIPDefaultConnection::handleTimeout ( ConnectionTimers  timer_id)
protected

Default timeout handler.

Parameters
timer_idthe timer ID that expired

Definition at line 325 of file DoIPDefaultConnection.cpp.

References doip::times::server::InitialInactivityTimeout(), LOG_DOIP_ERROR, LOG_DOIP_WARN, and fmt::streamed().

◆ handleWaitAliveCheckResponse()

void doip::DoIPDefaultConnection::handleWaitAliveCheckResponse ( DoIPServerEvent  event,
OptDoIPMessage  msg 
)
protected

Definition at line 282 of file DoIPDefaultConnection.cpp.

References LOG_DOIP_WARN, fmt::streamed(), and doip::ZERO_ADDRESS.

◆ handleWaitDownstreamResponse()

void doip::DoIPDefaultConnection::handleWaitDownstreamResponse ( DoIPServerEvent  event,
OptDoIPMessage  msg 
)
protected

Definition at line 308 of file DoIPDefaultConnection.cpp.

References LOG_DOIP_CRITICAL.

◆ handleWaitRoutingActivation()

void doip::DoIPDefaultConnection::handleWaitRoutingActivation ( DoIPServerEvent  event,
OptDoIPMessage  msg 
)
protected

Definition at line 191 of file DoIPDefaultConnection.cpp.

References LOG_DOIP_WARN.

◆ hasDownstreamHandler()

bool doip::DoIPDefaultConnection::hasDownstreamHandler ( ) const
overridevirtual

Checks if a downstream handler is present.

Returns
true if present, false otherwise

Implements doip::IConnectionContext.

Definition at line 427 of file DoIPDefaultConnection.cpp.

◆ isOpen()

bool doip::DoIPDefaultConnection::isOpen ( ) const
inlineoverridevirtual

Checks if the connection is open.

Returns
true if open, false otherwise

Implements doip::IConnectionContext.

Definition at line 126 of file DoIPDefaultConnection.h.

◆ isRoutingActivated()

bool doip::DoIPDefaultConnection::isRoutingActivated ( ) const
inline

Checks if routing is currently activated.

Returns
true if routing is activated, false otherwise

Definition at line 142 of file DoIPDefaultConnection.h.

References doip::RoutingActivated.

◆ notifyConnectionClosed()

void doip::DoIPDefaultConnection::notifyConnectionClosed ( DoIPCloseReason  reason)
overridevirtual

Notifies application that connection is closing.

Parameters
reasonThe close reason

Implements doip::IConnectionContext.

Definition at line 415 of file DoIPDefaultConnection.cpp.

◆ notifyDiagnosticAckSent()

void doip::DoIPDefaultConnection::notifyDiagnosticAckSent ( DoIPDiagnosticAck  ack)
overridevirtual

Notifies application that diagnostic ACK/NACK was sent.

Parameters
ackThe acknowledgment sent

Implements doip::IConnectionContext.

Definition at line 421 of file DoIPDefaultConnection.cpp.

◆ notifyDiagnosticMessage()

DoIPDiagnosticAck doip::DoIPDefaultConnection::notifyDiagnosticMessage ( const DoIPMessage msg)
overridevirtual

Handles an incoming diagnostic message.

Parameters
msgThe diagnostic message
Returns
Diagnostic acknowledgment (ACK/NACK)

Implements doip::IConnectionContext.

Definition at line 408 of file DoIPDefaultConnection.cpp.

◆ notifyDownstreamRequest()

DoIPDownstreamResult doip::DoIPDefaultConnection::notifyDownstreamRequest ( const DoIPMessage msg)
overridevirtual

Notifies application of a downstream request.

Parameters
msgThe downstream request message
Returns
Downstream result

Implements doip::IConnectionContext.

Definition at line 433 of file DoIPDefaultConnection.cpp.

◆ receiveDownstreamResponse()

void doip::DoIPDefaultConnection::receiveDownstreamResponse ( const ByteArray response,
DoIPDownstreamResult  result 
)
overridevirtual

Receives a downstream response.

Parameters
responseThe downstream response message
resultthe downstream result

Implements doip::IConnectionContext.

Definition at line 443 of file DoIPDefaultConnection.cpp.

References LOG_DOIP_INFO, doip::message::makeDiagnosticMessage(), doip::message::makeDiagnosticNegativeResponse(), and fmt::streamed().

◆ restartStateTimer()

void doip::DoIPDefaultConnection::restartStateTimer ( )
protected

Definition at line 177 of file DoIPDefaultConnection.cpp.

References LOG_DOIP_ERROR, and fmt::streamed().

◆ sendAliveCheckRequest()

ssize_t doip::DoIPDefaultConnection::sendAliveCheckRequest ( )
protected

Definition at line 372 of file DoIPDefaultConnection.cpp.

References doip::message::makeAliveCheckRequest().

◆ sendDiagnosticMessageResponse()

ssize_t doip::DoIPDefaultConnection::sendDiagnosticMessageResponse ( const DoIPAddress sourceAddress,
DoIPDiagnosticAck  ack 
)
protected

◆ sendDownstreamResponse()

ssize_t doip::DoIPDefaultConnection::sendDownstreamResponse ( const DoIPAddress sourceAddress,
const ByteArray payload 
)
protected

Definition at line 401 of file DoIPDefaultConnection.cpp.

References doip::message::makeDiagnosticMessage().

◆ sendProtocolMessage()

ssize_t doip::DoIPDefaultConnection::sendProtocolMessage ( const DoIPMessage msg)
overridevirtual

Sends a DoIP protocol message to the client.

Parameters
msgThe message to send
Returns
Number of bytes sent

Implements doip::IConnectionContext.

Definition at line 57 of file DoIPDefaultConnection.cpp.

References LOG_DOIP_INFO, doip::DoIPMessage::size(), and fmt::streamed().

◆ sendRoutingActivationResponse()

ssize_t doip::DoIPDefaultConnection::sendRoutingActivationResponse ( const DoIPAddress source_address,
DoIPRoutingActivationResult  response_code 
)
protected

Definition at line 356 of file DoIPDefaultConnection.cpp.

References doip::ByteArray::writeU16BE().

◆ setAliveCheckRetryCount()

void doip::DoIPDefaultConnection::setAliveCheckRetryCount ( uint8_t  count)
inline

Sets the alive check retry count.

Parameters
countThe number of retries for alive checks

Definition at line 178 of file DoIPDefaultConnection.h.

◆ setAliveCheckTimeout()

void doip::DoIPDefaultConnection::setAliveCheckTimeout ( std::chrono::milliseconds  timeout)
inline

Sets the alive check timeout duration.

Parameters
timeoutThe timeout duration in milliseconds

Definition at line 196 of file DoIPDefaultConnection.h.

◆ setDownstreamResponseTimeout()

void doip::DoIPDefaultConnection::setDownstreamResponseTimeout ( std::chrono::milliseconds  timeout)
inline

Sets the downstream response timeout duration.

Parameters
timeoutThe timeout duration in milliseconds

Definition at line 202 of file DoIPDefaultConnection.h.

◆ setGeneralInactivityTimeout()

void doip::DoIPDefaultConnection::setGeneralInactivityTimeout ( std::chrono::milliseconds  timeout)
inline

Sets the general inactivity timeout duration.

Parameters
timeoutThe timeout duration in milliseconds

Definition at line 190 of file DoIPDefaultConnection.h.

◆ setInitialInactivityTimeout()

void doip::DoIPDefaultConnection::setInitialInactivityTimeout ( std::chrono::milliseconds  timeout)
inline

Sets the initial inactivity timeout duration.

Parameters
timeoutThe timeout duration in milliseconds

Definition at line 184 of file DoIPDefaultConnection.h.

◆ startStateTimer()

void doip::DoIPDefaultConnection::startStateTimer ( StateDescriptor const *  stateDesc)
protected

Definition at line 144 of file DoIPDefaultConnection.cpp.

References LOG_DOIP_DEBUG, LOG_DOIP_ERROR, and fmt::streamed().

◆ transitionTo()

void doip::DoIPDefaultConnection::transitionTo ( DoIPServerState  newState)
protected

Definition at line 102 of file DoIPDefaultConnection.cpp.

References LOG_DOIP_ERROR, LOG_DOIP_INFO, and fmt::streamed().

Member Data Documentation

◆ m_aliveCheckRetry

uint8_t doip::DoIPDefaultConnection::m_aliveCheckRetry {0}
protected

Definition at line 288 of file DoIPDefaultConnection.h.

◆ m_aliveCheckRetryCount

uint8_t doip::DoIPDefaultConnection::m_aliveCheckRetryCount {DOIP_ALIVE_CHECK_RETRIES}
protected

Definition at line 289 of file DoIPDefaultConnection.h.

◆ m_aliveCheckTimeout

std::chrono::milliseconds doip::DoIPDefaultConnection::m_aliveCheckTimeout {times::server::AliveCheckResponseTimeout}
protected

Definition at line 294 of file DoIPDefaultConnection.h.

◆ m_closeReason

DoIPCloseReason doip::DoIPDefaultConnection::m_closeReason = DoIPCloseReason::None
protected

Definition at line 283 of file DoIPDefaultConnection.h.

◆ m_downstreamResponseTimeout

std::chrono::milliseconds doip::DoIPDefaultConnection::m_downstreamResponseTimeout {10s}
protected

Definition at line 295 of file DoIPDefaultConnection.h.

◆ m_generalInactivityTimeout

std::chrono::milliseconds doip::DoIPDefaultConnection::m_generalInactivityTimeout {times::server::GeneralInactivityTimeout}
protected

Definition at line 293 of file DoIPDefaultConnection.h.

◆ m_initialInactivityTimeout

std::chrono::milliseconds doip::DoIPDefaultConnection::m_initialInactivityTimeout {times::server::InitialInactivityTimeout}
protected

Definition at line 292 of file DoIPDefaultConnection.h.

◆ m_isOpen

bool doip::DoIPDefaultConnection::m_isOpen
protected

Definition at line 282 of file DoIPDefaultConnection.h.

◆ m_routedClientAddress

DoIPAddress doip::DoIPDefaultConnection::m_routedClientAddress
protected

Definition at line 280 of file DoIPDefaultConnection.h.

◆ m_serverModel

◆ m_state

const StateDescriptor* doip::DoIPDefaultConnection::m_state = nullptr
protected

Definition at line 284 of file DoIPDefaultConnection.h.

◆ m_timerManager

TimerManager<ConnectionTimers> doip::DoIPDefaultConnection::m_timerManager
protected

Definition at line 285 of file DoIPDefaultConnection.h.

◆ STATE_DESCRIPTORS

std::array<StateDescriptor, 7> doip::DoIPDefaultConnection::STATE_DESCRIPTORS
protected

Definition at line 279 of file DoIPDefaultConnection.h.


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