feat(erlang): add xdb header and dual-stack table/pool macros

This commit is contained in:
Alice39s 2026-06-27 23:50:19 +09:00
parent a3b8d817ee
commit 211c374ee2
No known key found for this signature in database
GPG Key ID: 0E0AA11C3939DDDD
1 changed files with 30 additions and 0 deletions

View File

@ -18,6 +18,36 @@
-define(IP2REGION_POOL, ip2region_pool). -define(IP2REGION_POOL, ip2region_pool).
%% xdb header field offsets (bytes)
-define(XDB_HEADER_VERSION_OFFSET, 0).
-define(XDB_HEADER_INDEX_POLICY_OFFSET, 2).
-define(XDB_HEADER_CREATED_AT_OFFSET, 4).
-define(XDB_HEADER_START_INDEX_PTR_OFFSET, 8).
-define(XDB_HEADER_END_INDEX_PTR_OFFSET, 12).
-define(XDB_HEADER_IP_VERSION_OFFSET, 16).
-define(XDB_HEADER_RUNTIME_PTR_BYTES_OFFSET, 18).
-define(XDB_HEADER_INFO_LENGTH, 256).
%% IP versions as stored in xdb header
-define(IP_VERSION_4, 4).
-define(IP_VERSION_6, 6).
%% Segment index sizes (bytes): start_ip + end_ip + data_len + data_ptr
-define(XDB_SEGMENT_INDEX_SIZE_V4, 14). %% 4 + 4 + 2 + 4
-define(XDB_SEGMENT_INDEX_SIZE_V6, 38). %% 16 + 16 + 2 + 4
%% Per-version ETS tables
-define(XDB_VECTOR_INDEX_V4, ets_xdb_vector_index_v4).
-define(XDB_VECTOR_INDEX_V6, ets_xdb_vector_index_v6).
-define(XDB_SEGMENT_INDEX_V4, ets_xdb_segment_index_v4).
-define(XDB_SEGMENT_INDEX_V6, ets_xdb_segment_index_v6).
-define(IP2REGION_CACHE_V4, ets_ip2region_cache_v4).
-define(IP2REGION_CACHE_V6, ets_ip2region_cache_v6).
%% Per-version pool names. ?IP2REGION_POOL is kept as the legacy v4 pool name.
-define(IP2REGION_POOL_V4, ip2region_pool_v4).
-define(IP2REGION_POOL_V6, ip2region_pool_v6).
-ifndef(IF). -ifndef(IF).
-define(IF(C, T, F), case (C) of true -> (T); false -> (F) end). -define(IF(C, T, F), case (C) of true -> (T); false -> (F) end).
-define(IF(C, T), ?IF(C, T, skip)). -define(IF(C, T), ?IF(C, T, skip)).