diff --git a/src/trans_auto.c b/src/trans_auto.c index b87d911f1..723deb08b 100644 --- a/src/trans_auto.c +++ b/src/trans_auto.c @@ -6,29 +6,36 @@ #include "trans_auto.h" -PEP_STATUS auto_init(PEP_transport_t *transport, - PEP_SESSION session, PEP_transport_status_code *tsc) +PEP_STATUS auto_startup(PEP_transport_t *transport, + PEP_transport_status_code *tsc) +{ + + return PEP_STATUS_OK; +} + +PEP_STATUS auto_shutdown(PEP_transport_t *transport, + PEP_transport_status_code *tsc) { return PEP_STATUS_OK; } PEP_STATUS auto_sendto(PEP_SESSION session, message *msg, - stringlist_t **unreachable_addresses, PEP_transport_status_code *tsc) + PEP_transport_status_code *tsc) { return PEP_STATUS_OK; } -PEP_STATUS auto_readnext(PEP_SESSION session, message **msg, +PEP_STATUS auto_recvnext(PEP_SESSION session, message **msg, PEP_transport_status_code *tsc) { return PEP_STATUS_OK; } -PEP_STATUS auto_signal_statuschange(PEP_transport_id id, - PEP_transport_status_code tsc) +PEP_STATUS auto_notify(signal_statuschange_t status_change, + signal_sendto_result_t sendto_result) { return PEP_STATUS_OK; diff --git a/src/trans_auto.h b/src/trans_auto.h index b706bc631..f4251584e 100644 --- a/src/trans_auto.h +++ b/src/trans_auto.h @@ -9,27 +9,19 @@ #include "transport.h" -PEP_STATUS auto_sendto(PEP_SESSION session, message *msg, - stringlist_t **unreachable_addresses, PEP_transport_status_code *tsc); +PEP_STATUS auto_startup(PEP_transport_t *transport, + PEP_transport_status_code *tsc); -/** - * - * - * @brief TODO - * - * @param[in] session PEP_SESSION - * @param[out] msg message** - * @param[out] via PEP_transport_t** - * - */ +PEP_STATUS auto_shutdown(PEP_transport_t *transport, + PEP_transport_status_code *tsc); -PEP_STATUS auto_init(PEP_transport_t *transport, - PEP_SESSION session, PEP_transport_status_code *tsc); +PEP_STATUS auto_sendto(PEP_SESSION session, message *msg, + PEP_transport_status_code *tsc); -PEP_STATUS auto_readnext(PEP_SESSION session, message **msg, +PEP_STATUS auto_recvnext(PEP_SESSION session, message **msg, PEP_transport_status_code *tsc); -PEP_STATUS auto_signal_statuschange(PEP_transport_id id, - PEP_transport_status_code tsc); +PEP_STATUS auto_notify(signal_statuschange_t status_change, + signal_sendto_result_t sendto_result); #endif diff --git a/src/transport.c b/src/transport.c index 38c0846da..9ec2e23ff 100644 --- a/src/transport.c +++ b/src/transport.c @@ -22,12 +22,15 @@ PEP_STATUS init_transport_system(PEP_SESSION session, bool in_first) memset(transports, 0, sizeof(PEP_transport_t) * PEP_trans__count); transports[PEP_trans_auto].id = PEP_trans_auto; + transports[PEP_trans_auto].uri_scheme = ""; + + transports[PEP_trans_auto].startup = auto_startup; + transports[PEP_trans_auto].shutdown = auto_shutdown; - transports[PEP_trans_auto].init = auto_init; transports[PEP_trans_auto].sendto = auto_sendto; - transports[PEP_trans_auto].readnext = auto_readnext; + transports[PEP_trans_auto].recvnext = auto_recvnext; - transports[PEP_trans_auto].signal_statuschange = auto_signal_statuschange; + transports[PEP_trans_auto].notify = auto_notify; } return PEP_STATUS_OK; diff --git a/src/transport.h b/src/transport.h index 19e7f8798..74d880820 100644 --- a/src/transport.h +++ b/src/transport.h @@ -40,20 +40,32 @@ typedef struct _PEP_transport_t PEP_transport_t; // functions offered by transport -typedef PEP_STATUS (*init_transport_t)(PEP_transport_t *transport, - PEP_SESSION session, PEP_transport_status_code *tsc); +typedef PEP_STATUS (*startup_transport_t)(PEP_transport_t *transport, + PEP_transport_status_code *tsc); + +typedef PEP_STATUS (*shutdown_transport_t)(PEP_transport_t *transport, + PEP_transport_status_code *tsc); typedef PEP_STATUS (*sendto_t)(PEP_SESSION session, message *msg, - stringlist_t **unreachable_addresses, PEP_transport_status_code *tsc); + PEP_transport_status_code *tsc); typedef PEP_STATUS (*recvnext_t)(PEP_SESSION session, message **msg, PEP_transport_status_code *tsc); -// functions offered by transport system +// callbacks typedef PEP_STATUS (*signal_statuschange_t)(PEP_transport_id id, PEP_transport_status_code tsc); +typedef PEP_STATUS (*signal_sendto_result_t)(PEP_transport_id id, char *message_id, + char *address, PEP_transport_status_code tsc); + +// call this to receive signals +// this function does not terminate until shutdown of the transport + +typedef PEP_STATUS (*notify_transport_t)(signal_statuschange_t status_change, + signal_sendto_result_t sendto_result); + /** * @struct _PEP_transport_t * @@ -61,19 +73,21 @@ typedef PEP_STATUS (*signal_statuschange_t)(PEP_transport_id id, * */ struct _PEP_transport_t { - PEP_transport_id id; // transport ID + PEP_transport_id id; // transport ID const char *uri_scheme; // URI scheme this transport is // covering // functions offered by transport - init_transport_t init; + startup_transport_t startup; + shutdown_transport_t shutdown; + sendto_t sendto; - recvnext_t readnext; + recvnext_t recvnext; - // functions offered by transport system + notify_transport_t notify; - signal_statuschange_t signal_statuschange; + // functions offered by transport system bool is_online_transport;