Packages
hackney
3.0.1
4.7.2
4.7.1
4.7.0
4.6.1
4.6.0
4.5.2
4.5.1
4.5.0
4.4.5
4.4.3
4.4.2
4.4.1
4.4.0
4.3.0
4.2.3
4.2.2
4.2.1
4.2.0
4.1.0
4.0.3
4.0.2
4.0.1
4.0.0
3.2.1
3.2.0
3.1.2
3.1.1
3.1.0
3.0.3
3.0.2
3.0.1
3.0.0
retired
2.0.1
2.0.0
2.0.0-beta.1
1.25.0
1.24.1
1.24.0
1.23.0
1.22.0
1.21.0
1.20.1
1.20.0
1.19.1
1.19.0
1.18.2
1.18.1
1.18.0
1.17.4
1.17.3
1.17.2
1.17.1
1.17.0
1.16.0
1.15.2
1.15.1
1.15.0
1.14.3
1.14.2
1.14.0
1.13.0
1.12.1
1.12.0
1.11.0
1.10.1
1.10.0
1.9.0
1.8.6
1.8.5
1.8.4
1.8.3
1.8.2
1.8.0
1.7.1
1.7.0
1.6.6
retired
1.6.5
1.6.4
retired
1.6.3
1.6.2
1.6.1
1.6.0
1.5.7
1.5.6
1.5.5
1.5.4
1.5.3
1.5.2
1.5.1
1.5.0
1.4.10
1.4.8
1.4.7
1.4.6
1.4.5
1.4.4
1.4.3
1.4.2
1.4.1
1.4.0
1.3.2
1.3.1
1.3.0
1.2.0
1.1.0
1.0.6
1.0.5
1.0.2
1.0.1
0.15.2
0.15.0
0.14.3
0.14.2
0.14.1
0.14.0
0.13.1
Simple HTTP client with HTTP/1.1, HTTP/2, and HTTP/3 support
Security advisory:
This version has known vulnerabilities.
View advisories
Current section
Files
Jump to
Current section
Files
c_src/hackney_quic_nif.h
/**
* hackney_quic_nif.h - Common headers for hackney QUIC NIF
*
* This file is part of hackney released under the Apache 2 license.
* See the NOTICE for more information.
*
* Copyright (c) 2024-2026 Benoit Chesneau
*/
#ifndef HACKNEY_QUIC_NIF_H
#define HACKNEY_QUIC_NIF_H
#include <erl_nif.h>
#include <stdbool.h>
#include <stdint.h>
#include <string.h>
/* Forward declarations */
typedef struct QuicConn QuicConn;
/* Resource types (initialized in nif_load) */
extern ErlNifResourceType *QUIC_CONN_RESOURCE;
/* Common atoms - defined in atoms.h, initialized in nif_load */
extern ERL_NIF_TERM ATOM_OK;
extern ERL_NIF_TERM ATOM_ERROR;
extern ERL_NIF_TERM ATOM_TRUE;
extern ERL_NIF_TERM ATOM_FALSE;
extern ERL_NIF_TERM ATOM_UNDEFINED;
extern ERL_NIF_TERM ATOM_QUIC;
extern ERL_NIF_TERM ATOM_CONNECTED;
extern ERL_NIF_TERM ATOM_CLOSED;
extern ERL_NIF_TERM ATOM_TRANSPORT_ERROR;
extern ERL_NIF_TERM ATOM_STREAM_HEADERS;
extern ERL_NIF_TERM ATOM_STREAM_DATA;
extern ERL_NIF_TERM ATOM_STREAM_OPENED;
extern ERL_NIF_TERM ATOM_STREAM_RESET;
extern ERL_NIF_TERM ATOM_STOP_SENDING;
extern ERL_NIF_TERM ATOM_GOAWAY;
extern ERL_NIF_TERM ATOM_SESSION_TICKET;
extern ERL_NIF_TERM ATOM_SEND_READY;
extern ERL_NIF_TERM ATOM_TIMER;
extern ERL_NIF_TERM ATOM_BLOCKED;
extern ERL_NIF_TERM ATOM_NOT_CONNECTED;
extern ERL_NIF_TERM ATOM_BADARG;
extern ERL_NIF_TERM ATOM_ENOMEM;
/* Utility macros */
#define UNUSED(x) (void)(x)
/* Make a {ok, Value} tuple */
static inline ERL_NIF_TERM make_ok(ErlNifEnv *env, ERL_NIF_TERM value) {
return enif_make_tuple2(env, ATOM_OK, value);
}
/* Make a {error, Reason} tuple */
static inline ERL_NIF_TERM make_error(ErlNifEnv *env, ERL_NIF_TERM reason) {
return enif_make_tuple2(env, ATOM_ERROR, reason);
}
/* Make a {error, Atom} tuple from string */
static inline ERL_NIF_TERM make_error_str(ErlNifEnv *env, const char *reason) {
return enif_make_tuple2(env, ATOM_ERROR, enif_make_atom(env, reason));
}
#endif /* HACKNEY_QUIC_NIF_H */