notification concept

pull/57/head
Volker Birk 2021-08-12 19:48:16 +02:00
parent 54e3758a3e
commit f5d6017792
4 changed files with 65 additions and 49 deletions

View File

@ -6,29 +6,36 @@
#include "trans_auto.h"
PEP_STATUS auto_init(PEP_transport_t *transport,
PEP_SESSION session, 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)
{
return PEP_STATUS_OK;
}
PEP_STATUS auto_readnext(PEP_SESSION session, message **msg,
PEP_STATUS auto_startup(PEP_transport_t *transport,
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_shutdown(PEP_transport_t *transport,
PEP_transport_status_code *tsc)
{
return PEP_STATUS_OK;
}
PEP_STATUS auto_sendto(PEP_SESSION session, message *msg,
PEP_transport_status_code *tsc)
{
return PEP_STATUS_OK;
}
PEP_STATUS auto_recvnext(PEP_SESSION session, message **msg,
PEP_transport_status_code *tsc)
{
return PEP_STATUS_OK;
}
PEP_STATUS auto_notify(signal_statuschange_t status_change,
signal_sendto_result_t sendto_result)
{
return PEP_STATUS_OK;

View File

@ -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);
/**
* <!-- auto_readnext() -->
*
* @brief TODO
*
* @param[in] session PEP_SESSION
* @param[out] msg message**
* @param[out] via PEP_transport_t**
*
*/
PEP_STATUS auto_init(PEP_transport_t *transport,
PEP_SESSION session, PEP_transport_status_code *tsc);
PEP_STATUS auto_readnext(PEP_SESSION session, message **msg,
PEP_STATUS auto_startup(PEP_transport_t *transport,
PEP_transport_status_code *tsc);
PEP_STATUS auto_signal_statuschange(PEP_transport_id id,
PEP_transport_status_code tsc);
PEP_STATUS auto_shutdown(PEP_transport_t *transport,
PEP_transport_status_code *tsc);
PEP_STATUS auto_sendto(PEP_SESSION session, message *msg,
PEP_transport_status_code *tsc);
PEP_STATUS auto_recvnext(PEP_SESSION session, message **msg,
PEP_transport_status_code *tsc);
PEP_STATUS auto_notify(signal_statuschange_t status_change,
signal_sendto_result_t sendto_result);
#endif

View File

@ -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;

View File

@ -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,20 +73,22 @@ 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;
notify_transport_t notify;
// functions offered by transport system
signal_statuschange_t signal_statuschange;
bool is_online_transport;
bool shortmsg_supported;