···139139 user_communication_specifiers: DashMap<String, Vec<ProtocolCommunicationSpecifier>>,
140140 /// Device definitions from the user device config. Loaded at session start, may change over life
141141 /// of session.
142142+ #[getset(get = "pub")]
142143 user_device_definitions: DashMap<UserDeviceIdentifier, ServerDeviceDefinition>,
143144}
144145···186187 .cloned()
187188 .collect();
188189 }
190190+ }
191191+192192+ pub fn add_user_device_definition(&self, identifier: &UserDeviceIdentifier, definition: &ServerDeviceDefinition) {
193193+ // TODO we should actually check validity of the definition we're adding here, i.e. does it have
194194+ // a base id, is that ID in our base selections, etc...
195195+ self.user_device_definitions.insert(identifier.clone(), definition.clone());
189196 }
190197191198 pub fn remove_user_device_definition(&self, identifier: &UserDeviceIdentifier) {