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-roomscontains basic functions for modifying the room DAG. It is used byarminius-server-roomsto implement the API that it exposes to other services, and by the tests ofarminius-lib-db-syncto set up its test cases. This can only be depended on byarminius-server-rooms, which is enforced byforbidden_deps.sh -
arminius-server-roomsis the actual room service, which implements an API that lets other services modify the room DAG.