30 RCSIDH(lib_bio_retry_h,
"$Id: f2ed5ea934c3b90a2151f23f65d1c8b64c382f6a $")
32 #include <freeradius-devel/util/retry.h>
33 #include <freeradius-devel/util/event.h>
45 #ifndef _BIO_RETRY_PRIVATE
static int const char char buffer[256]
fr_bio_t * fr_bio_retry_alloc(TALLOC_CTX *ctx, size_t max_saved, fr_bio_retry_sent_t sent, fr_bio_retry_response_t response, fr_bio_retry_rewrite_t rewrite, fr_bio_retry_release_t release, fr_bio_retry_config_t const *cfg, fr_bio_t *next))
Allocate a fr_bio_retry_t.
int fr_bio_retry_entry_start(fr_bio_t *bio, fr_bio_retry_entry_t *retry_ctx, fr_retry_config_t const *cfg)
fr_retry_config_t retry_config
base retry config
void(* fr_bio_retry_release_t)(fr_bio_t *bio, fr_bio_retry_entry_t *retry_ctx, fr_bio_retry_release_reason_t reason)
Callback on release the packet (timeout or have all replies)
fr_bio_retry_release_reason_t
@ FR_BIO_RETRY_WRITE_ERROR
@ FR_BIO_RETRY_FATAL_ERROR
void * rewrite_ctx
context specifically for rewriting this packet
void(* fr_bio_retry_sent_t)(fr_bio_t *bio, void *packet_ctx, const void *buffer, size_t size, fr_bio_retry_entry_t *retry_ctx)
Callback for when a packet is sent.
ssize_t(* fr_bio_retry_rewrite_t)(fr_bio_t *bio, fr_bio_retry_entry_t *retry_ctx, const void *buffer, size_t size)
ssize_t fr_bio_retry_rewrite(fr_bio_t *bio, fr_bio_retry_entry_t *retry_ctx, const void *buffer, size_t size))
Resend a packet.
bool(* fr_bio_retry_response_t)(fr_bio_t *bio, fr_bio_retry_entry_t **item_p, void *packet_ctx, const void *buffer, size_t size)
Callback on read to see if a packet is a response.
fr_event_list_t * el
event list
void * packet_ctx
packet_ctx from the write() call
const fr_retry_t * fr_bio_retry_entry_info(fr_bio_t *bio, fr_bio_retry_entry_t *retry_ctx)
int fr_bio_retry_entry_cancel(fr_bio_t *bio, fr_bio_retry_entry_t *retry_ctx))
Cancel one item.
fr_bio_retry_rewrite_t rewrite
per-packet rewrite callback
void * uctx
user-writable context
Stores all information relating to an event list.