31#ifndef PROTOCORE_EDGE_MESH_H
32#define PROTOCORE_EDGE_MESH_H
36#if PC_ENABLE_EDGE_MESH
44#define PC_EDGE_MESH_MAGIC0 ('E')
45#define PC_EDGE_MESH_MAGIC1 ('M')
46#define PC_EDGE_MESH_VERSION 1
47#define PC_EDGE_MESH_OP_GET 1
52#define PC_EDGE_MESH_REQ_MAX (2 + 1 + 1 + 32 + 2 + PC_EDGE_KEY_MAX + 2 + PC_MESH_HDRS_MAX)
56enum class EdgeMeshParse : int8_t
71size_t edge_mesh_build_request(
const uint8_t digest[32],
const char *canon,
const char *req_hdrs, uint8_t *out,
79EdgeMeshParse edge_mesh_parse_request(
const uint8_t *buf,
size_t len, uint8_t digest_out[32],
char *canon_out,
80 size_t canon_cap,
char *hdrs_out,
size_t hdrs_cap);
87size_t edge_mesh_serialize_entry(
const EdgeEntry *e,
long current_age, uint8_t *out,
size_t cap);
97bool edge_mesh_deserialize_entry(
const uint8_t *buf,
size_t len, EdgeEntry *e, uint32_t now_ms);
100size_t edge_mesh_build_response(
bool hit,
const uint8_t *entry,
size_t entry_len, uint8_t *out,
size_t cap);
106EdgeMeshParse edge_mesh_parse_response(
const uint8_t *buf,
size_t len,
size_t *entry_off,
size_t *entry_len);
111enum class EdgeMeshStatus : uint8_t
140void edge_mesh_fetch_begin(EdgeMeshFetch *m,
const EdgeFetchTransport *t,
const char *host, uint16_t port,
141 const uint8_t *request,
size_t req_len, uint8_t *buf,
size_t cap, uint32_t now_ms);
144EdgeMeshStatus edge_mesh_fetch_pump(EdgeMeshFetch *m,
const EdgeFetchTransport *t, uint32_t now_ms);
147void edge_mesh_fetch_end(EdgeMeshFetch *m,
const EdgeFetchTransport *t);
CDN edge-cache tier - pure engine (PC_ENABLE_EDGE_CACHE).
CDN edge-cache tier - L2 SD persistence (PC_ENABLE_EDGE_CACHE && PC_ENABLE_DBM).
CDN edge-cache tier - async origin-fetch engine (PC_ENABLE_EDGE_CACHE).
User-facing configuration for ProtoCore.