Skip to content

CAIO — Client Addon IO for TrinityCore 3.3.5 - #183

Draft
Rochet2 wants to merge 25 commits into
3.3.5from
c_aio_new
Draft

CAIO — Client Addon IO for TrinityCore 3.3.5#183
Rochet2 wants to merge 25 commits into
3.3.5from
c_aio_new

Conversation

@Rochet2

@Rochet2 Rochet2 commented Jun 1, 2026

Copy link
Copy Markdown
Owner

Summary

CAIO adds C++ server-side handling for Rochet2/AIO (protocol 1.75) on TrinityCore 3.3.5.

Docs: doc/CAIO_README.md · message format · script example

Status

  • Merged current 3.3.5 (incl. new Linux/macOS/Windows workflows with submodules: recursive + WITH_CAIO_EXAMPLES).
  • AddOnInit is done (AddOnInit / init-hook parity with stock AIO).
  • Still marked draft until you are happy with CI + in-game smoke tests.

Fixes in this update

Lifecycle / ownership

  • Create AIOHandlers after SetScriptContext.
  • Registry owns AIOHandlers; unload no longer double-deletes.
  • Removed unused ScriptMgr scheduled-script counters (MapMgr already owns that).

Commands / path

  • .caio SQL help matches parser order (addaddon name "file" [perm], sendall "msg" [perm]).
  • Permission help now says exact RBAC match (not “and above”).
  • Guard empty AIO.ClientScriptPath before path.back().

Protocol

  • Stricter block n validation (finite, integer, range).
  • AIOMsg keeps middle nil args (stock arity); respects MAX_BLOCK_ARGS.
  • Reject outbound long messages that would overflow part-count encoding.

AIO PR #27 parity (keep protocol 1.75)

  • Extracted framing encode/split (AIOCodec) and stateful reassembler (AIOReassembler); wired Player / WorldSession.
  • Helpers: basename, ms expiry, IsValidBlockArgCount.
  • AIO.ForceReloadOnStartup (default on).
  • Catch2 coverage expanded (framing/reassembler/util; 18 [AIO] cases).
  • Docs: security notes; semver deferred until AIO client supports it — no Init version bump.

Examples / docs / license

  • Single ExampleWindow.cpp gated by WITH_CAIO_EXAMPLES (stub TU removed).
  • Example Lua /caioexample slash helper.
  • README moved to doc/CAIO_README.md (root pointer kept).
  • Kept CAIO LICENSE.txt (GPLv3). CAIO-owned units have no per-file TrinityCore GPLv2 banner (matches original SaiFi CAIO / AIOMsg); existing TC sources keep their headers. Documented in the README.
  • Stale SaiFi0102 / machine-local paths removed.

Out of scope (v1)

  • Compression / obfuscation
  • Per-subcommand RBAC ids
  • Semver Init handshake (client first)

Test plan

  • Ubuntu / Windows / macOS CI green on this branch
  • sql/CAIO applied; .caio version / addaddon / send smoke
  • Build with -DWITH_CAIO_EXAMPLES=ON; /caioexample + addon init
  • Oversized outbound / malformed block n rejected cleanly in logs
  • Local Catch2 [AIO] (18 cases) passed

SaiFi0102 and others added 8 commits August 22, 2015 02:17
This will be CAIO's permanent supported repository now.
-Now handling multi block AIO messages

Not tested, gonna test very soon.
Integrate upstream 3.3.5 (script modules, logging, RBAC, HotSwap) while
preserving CAIO/AIO addon messaging, LuaVal scripts, and 1.75 protocol settings.
@Rochet2 Rochet2 changed the title CAIO - WIP CAIO — Client Addon IO for TrinityCore 3.3.5 Jul 29, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants