kicad/thirdparty/sentry-native/src/sentry_transport.h

93 lines
2.5 KiB
C

#ifndef SENTRY_TRANSPORT_H_INCLUDED
#define SENTRY_TRANSPORT_H_INCLUDED
#include "sentry_boot.h"
typedef struct sentry_dsn_s sentry_dsn_t;
typedef struct sentry_run_s sentry_run_t;
typedef struct sentry_rate_limiter_s sentry_rate_limiter_t;
/**
* Sets the dump function of the transport.
*
* This function is called during a hard crash to dump any internal send queue
* to disk, using `sentry__run_write_envelope`. The function runs inside a
* signal handler, and appropriate restrictions apply.
*/
void sentry__transport_set_dump_func(sentry_transport_t *transport,
size_t (*dump_func)(sentry_run_t *run, void *state));
/**
* Submit the given envelope to the transport.
*/
void sentry__transport_send_envelope(
sentry_transport_t *transport, sentry_envelope_t *envelope);
/**
* Calls the transports startup hook.
*
* Returns 0 on success.
*/
int sentry__transport_startup(
sentry_transport_t *transport, const sentry_options_t *options);
/**
* Instructs the transport to flush its queue.
*
* Returns 0 on success.
*/
int sentry__transport_flush(sentry_transport_t *transport, uint64_t timeout);
/**
* Instructs the transport to shut down.
*
* Returns 0 on success.
*/
int sentry__transport_shutdown(sentry_transport_t *transport, uint64_t timeout);
/**
* This will create a new platform specific HTTP transport.
*/
sentry_transport_t *sentry__transport_new_default(void);
/**
* This function will instruct the platform specific transport to dump all the
* envelopes in its send queue to disk.
*/
size_t sentry__transport_dump_queue(
sentry_transport_t *transport, sentry_run_t *run);
typedef struct sentry_prepared_http_header_s {
const char *key;
char *value;
} sentry_prepared_http_header_t;
/**
* This represents a HTTP request, with method, url, headers and a body.
*/
typedef struct sentry_prepared_http_request_s {
const char *method;
char *url;
sentry_prepared_http_header_t *headers;
size_t headers_len;
char *body;
size_t body_len;
bool body_owned;
} sentry_prepared_http_request_t;
/**
* Consumes the given envelope and transforms it into into a prepared http
* request. This can return NULL when all the items in the envelope have been
* rate limited.
*/
sentry_prepared_http_request_t *sentry__prepare_http_request(
sentry_envelope_t *envelope, const sentry_dsn_t *dsn,
const sentry_rate_limiter_t *rl, const char *user_agent);
/**
* Free a previously allocated HTTP request.
*/
void sentry__prepared_http_request_free(sentry_prepared_http_request_t *req);
#endif