79 lines
1.9 KiB
C
79 lines
1.9 KiB
C
#ifndef SENTRY_SESSION_H_INCLUDED
|
|
#define SENTRY_SESSION_H_INCLUDED
|
|
|
|
#include "sentry_boot.h"
|
|
|
|
#include "sentry_path.h"
|
|
#include "sentry_utils.h"
|
|
|
|
struct sentry_jsonwriter_s;
|
|
|
|
typedef enum {
|
|
SENTRY_SESSION_STATUS_OK,
|
|
SENTRY_SESSION_STATUS_CRASHED,
|
|
SENTRY_SESSION_STATUS_ABNORMAL,
|
|
SENTRY_SESSION_STATUS_EXITED,
|
|
} sentry_session_status_t;
|
|
|
|
/**
|
|
* This represents a session, with the number of errors, a status and other
|
|
* metadata.
|
|
*/
|
|
typedef struct sentry_session_s {
|
|
char *release;
|
|
char *environment;
|
|
sentry_uuid_t session_id;
|
|
sentry_value_t distinct_id;
|
|
uint64_t started_ms;
|
|
uint64_t duration_ms;
|
|
uint64_t errors;
|
|
sentry_session_status_t status;
|
|
long init;
|
|
} sentry_session_t;
|
|
|
|
/**
|
|
* This creates a new session.
|
|
*/
|
|
sentry_session_t *sentry__session_new(void);
|
|
|
|
/**
|
|
* This will free a previously allocated session.
|
|
*/
|
|
void sentry__session_free(sentry_session_t *session);
|
|
|
|
/**
|
|
* This will write the gives session into the json writer `jw`.
|
|
*/
|
|
void sentry__session_to_json(
|
|
const sentry_session_t *session, struct sentry_jsonwriter_s *jw);
|
|
|
|
/**
|
|
* Given a JSON string, this will parse and create a session out of it, or NULL
|
|
* on failure.
|
|
*/
|
|
sentry_session_t *sentry__session_from_json(const char *buf, size_t buf_len);
|
|
|
|
/**
|
|
* This will read the JSON serialized session from `path`, or return NULL on
|
|
* failure.
|
|
*/
|
|
sentry_session_t *sentry__session_from_path(const sentry_path_t *path);
|
|
|
|
/**
|
|
* This will end the current session with an explicit `status` code.
|
|
*/
|
|
sentry_session_t *sentry__end_current_session_with_status(
|
|
sentry_session_status_t status);
|
|
|
|
/**
|
|
* This will add `error_count` new errors to the current session.
|
|
*/
|
|
void sentry__record_errors_on_current_session(uint32_t error_count);
|
|
|
|
/**
|
|
* This will update a sessions `distinct_id`, which is based on the user.
|
|
*/
|
|
void sentry__session_sync_user(sentry_session_t *session, sentry_value_t user);
|
|
|
|
#endif
|