MCPcopy Create free account
hub / github.com/buttplugio/buttplug / setup_buttplug_server

Function setup_buttplug_server

crates/intiface_engine/src/buttplug_server.rs:108–162  ·  view source on GitHub ↗
(
  options: &EngineOptions,
  backdoor_server: &OnceCell<Arc<BackdoorServer>>,
  dcm: &Option<Arc<DeviceConfigurationManager>>,
)

Source from the content-addressed store, hash-verified

106}
107
108pub async fn setup_buttplug_server(
109 options: &EngineOptions,
110 backdoor_server: &OnceCell<Arc<BackdoorServer>>,
111 dcm: &Option<Arc<DeviceConfigurationManager>>,
112) -> Result<ButtplugServer, IntifaceEngineError> {
113 let mut dm_builder = if let Some(dcm) = dcm {
114 ServerDeviceManagerBuilder::new_with_arc(dcm.clone())
115 } else {
116 let mut dcm_builder = load_protocol_configs(
117 options.device_config_json(),
118 options.user_device_config_json(),
119 false,
120 )
121 .map_err(|e| IntifaceEngineError::ButtplugError(e.into()))?;
122
123 ServerDeviceManagerBuilder::new(
124 dcm_builder
125 .finish()
126 .map_err(|e| IntifaceEngineError::ButtplugError(e.into()))?,
127 )
128 };
129
130 setup_server_device_comm_managers(options, &mut dm_builder);
131 if options.emit_output_observations() {
132 dm_builder.emit_output_observations(true);
133 }
134 let mut server_builder = ButtplugServerBuilder::new(
135 dm_builder
136 .finish()
137 .map_err(IntifaceEngineError::ButtplugServerError)?,
138 );
139
140 server_builder
141 .name(options.server_name())
142 .max_ping_time(options.max_ping_time());
143
144 let core_server = match server_builder.finish() {
145 Ok(server) => server,
146 Err(e) => {
147 error!("Error starting server: {:?}", e);
148 return Err(IntifaceEngineError::ButtplugServerError(e));
149 }
150 };
151 if backdoor_server
152 .set(Arc::new(BackdoorServer::new(core_server.device_manager())))
153 .is_err()
154 {
155 Err(
156 IntifaceError::new("BackdoorServer already initialized somehow! This should never happen!")
157 .into(),
158 )
159 } else {
160 Ok(core_server)
161 }
162}
163
164pub async fn run_server(
165 server: &ButtplugRemoteServer,

Callers 1

runMethod · 0.85

Calls 14

load_protocol_configsFunction · 0.85
ButtplugErrorEnum · 0.85
OkClass · 0.85
cloneMethod · 0.80
device_config_jsonMethod · 0.80
device_managerMethod · 0.80
finishMethod · 0.45
max_ping_timeMethod · 0.45

Tested by

no test coverage detected