Files
MetaCrate/docs/vivox.md
Chili Palmer da4afec708
Some checks failed
Native code generation / deterministic (push) Failing after 2m19s
Imaging and meshing gate / native (push) Failing after 4m24s
JPEG 2000 feature / linux (push) Successful in 2m50s
Native Rust workspace compile / compile (push) Failing after 15m31s
Skia feature / linux (push) Successful in 31m51s
Implement native VivoxTest validation (#95)
2026-08-11 14:09:51 +00:00

36 lines
1.8 KiB
Markdown

# Native Vivox validation
MetaCrate's Vivox support is a cross-platform Rust implementation of the SDK
control protocol. `VivoxControlClient` connects to a caller-supplied TCP socket,
writes bounded XML requests terminated by the Vivox three-newline delimiter,
correlates responses by request ID and action, and queues asynchronous login,
session, and participant events. It does not start or ship proprietary code.
The client owns connector, account, and session state. Invalid ordering is
rejected locally. `shutdown()` is idempotent and reverses active state in this
order: sessions, account, connector, TCP writer. Response failures preserve the
action and numeric return/status codes while passwords, handles, and URIs remain
opaque. XML is escaped on output; input is capped at 1 MiB and rejects DTD or
entity declarations.
`vivox-test --fake-script FILE` launches a deterministic fake control service on
IPv4 loopback. It validates the same wire requests used with a real daemon,
scripts device responses and participant events, and waits for both client and
server teardown. Live mode additionally logs into a grid, waits for the event
queue, requests `ProvisionVoiceAccountRequest` and `ParcelVoiceInfoRequest`, and
then exercises the control service. Live login requires both
`--allow-live-login` and `--confirm-live-login LOGIN`; joining audio also requires
`--allow-session-audio`.
Use environment variables for live credentials so they are not copied into a
shell history or process argument list:
```sh
GRID_FIRST_NAME=... GRID_LAST_NAME=... GRID_PASSWORD=... \
cargo run -p libremetaverse-programs --bin vivox-test -- \
--allow-live-login --confirm-live-login LOGIN
```
The Vivox daemon/SDK is proprietary and must be installed, configured, and
started independently. MetaCrate never discovers or invokes it.