diff options
Diffstat (limited to 'hicn-light/src/hicn/io/hicnConnection.c')
-rw-r--r-- | hicn-light/src/hicn/io/hicnConnection.c | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/hicn-light/src/hicn/io/hicnConnection.c b/hicn-light/src/hicn/io/hicnConnection.c index 3c6f0612c..c6831df57 100644 --- a/hicn-light/src/hicn/io/hicnConnection.c +++ b/hicn-light/src/hicn/io/hicnConnection.c @@ -72,6 +72,11 @@ typedef struct hicn_state { unsigned id; unsigned delay; + + /* This information would better be stored in the connection data structure + * but it is currently not reachable from within the implementation. */ + connection_state_t state; + connection_state_t admin_state; } _HicnState; // Prototypes @@ -87,6 +92,10 @@ static void _destroy(IoOperations **opsPtr); static list_connections_type _getConnectionType(const IoOperations *ops); static Ticks _sendProbe(IoOperations *ops, unsigned probeType, uint8_t *message); +static connection_state_t _getState(const IoOperations *ops); +static void _setState(IoOperations *ops, connection_state_t state); +static connection_state_t _getAdminState(const IoOperations *ops); +static void _setAdminState(IoOperations *ops, connection_state_t admin_state); /* * This assigns a unique pointer to the void * which we use @@ -114,6 +123,10 @@ static IoOperations _template = { .class = &_streamConnection_Class, .getConnectionType = &_getConnectionType, .sendProbe = &_sendProbe, + .getState = &_getState, + .setState = &_setState, + .getAdminState = &_getAdminState, + .setAdminState = &_setAdminState, }; // ================================================================= @@ -546,3 +559,31 @@ static void _setConnectionState(_HicnState *hicnConnState, bool isUp) { return; } } + +static connection_state_t _getState(const IoOperations *ops) { + parcAssertNotNull(ops, "Parameter must be non-null"); + const _HicnState *hicnConnState = + (const _HicnState *)ioOperations_GetClosure(ops); + return hicnConnState->state; +} + +static void _setState(IoOperations *ops, connection_state_t state) { + parcAssertNotNull(ops, "Parameter must be non-null"); + _HicnState *hicnConnState = + (_HicnState *)ioOperations_GetClosure(ops); + hicnConnState->state = state; +} + +static connection_state_t _getAdminState(const IoOperations *ops) { + parcAssertNotNull(ops, "Parameter must be non-null"); + const _HicnState *hicnConnState = + (const _HicnState *)ioOperations_GetClosure(ops); + return hicnConnState->admin_state; +} + +static void _setAdminState(IoOperations *ops, connection_state_t admin_state) { + parcAssertNotNull(ops, "Parameter must be non-null"); + _HicnState *hicnConnState = + (_HicnState *)ioOperations_GetClosure(ops); + hicnConnState->admin_state = admin_state; +} |