|
|
2dec62e72d
|
Phase 4: ETS cache, event coverage, gateway send budget, member chunking
- Dexcord.Cache GenServer: creates 8 public ETS tables (me/guilds/channels/
users sets; members/roles/presences/voice_states ordered_set keyed {guild_id,x}).
Writes only via handle_dispatch/3 (single writer = Dispatcher, gateway-ordered);
reads are direct ETS. Full event coverage incl. GUILD_DELETE cascade purge and
cache_presences toggle. Read API + bang variants.
- Dispatcher: inline Cache.handle_dispatch before handler task; op-8 chunk request
on real GUILD_CREATE when request_guild_members and :guild_members intent set.
- Gateway: send-budget token bucket (default 115/60s, heartbeats bypass); op-3/op-8
consume tokens, queue when empty (bounded, drop+warn), drain on :send_refill ticks.
- Supervisor: Cache child after Session, before Finch.
- Config: validate cache_presences / request_guild_members are booleans.
|
2026-07-04 00:52:58 -03:00 |
|