Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Room Service

This component is an internal service that implements all the various Room-related actions defined in the Matrix Room Version specifications.

Code Organization

crates/libs/arminius-lib-rooms/
├── src
│   ├── create_room.rs
│   ├── event_ordering.rs
│   ├── events.rs
│   ├── lib.rs
│   └── state.rs
crates/servers/arminius-server-rooms/
├── build.rs
├── Cargo.toml
├── src
│   ├── handlers
│   │   ├── create_room.rs
│   │   ├── get_member_events.rs
│   │   └── send_state_event_handler.rs
│   ├── lib.rs
│   └── main.rs
└── tests
    └── room_creation.rs

The logic for the roomserver is split up into these two crates:

  • arminius-lib-rooms contains basic functions for modifying the room DAG. It is used by arminius-server-rooms to implement the API that it exposes to other services, and by the tests of arminius-lib-db-sync to set up its test cases. This can only be depended on by arminius-server-rooms, which is enforced by forbidden_deps.sh

  • arminius-server-rooms is the actual room service, which implements an API that lets other services modify the room DAG.