MCPcopy Create free account
hub / github.com/NativeScript/SimDeck / new

Method new

packages/server/src/simulators/session.rs:96–146  ·  view source on GitHub ↗
(
        bridge: &NativeBridge,
        udid: String,
        metrics: Arc<Metrics>,
    )

Source from the content-addressed store, hash-verified

94 }
95
96 pub fn new(
97 bridge: &NativeBridge,
98 udid: String,
99 metrics: Arc<Metrics>,
100 ) -> Result<Self, AppError> {
101 let native = bridge.create_session(&udid)?;
102 let simulator = bridge.simulator(&udid).ok().flatten();
103 let is_tvos = simulator.as_ref().map(simulator_is_tvos).unwrap_or(false);
104 let is_watchos = simulator
105 .as_ref()
106 .map(simulator_is_watchos)
107 .unwrap_or(false);
108 let has_fixed_orientation = simulator
109 .as_ref()
110 .map(simulator_has_fixed_orientation)
111 .unwrap_or(false);
112 let (sender, _) = broadcast::channel(FRAME_BROADCAST_CAPACITY);
113 let inner = Arc::new(SimulatorSessionInner {
114 udid,
115 native,
116 is_tvos,
117 is_watchos,
118 has_fixed_orientation,
119 metrics,
120 sender,
121 latest_keyframe: RwLock::new(None),
122 state: Mutex::new(SessionState::Detached),
123 start_condvar: Condvar::new(),
124 display_ready: AtomicBool::new(false),
125 display_width: AtomicU64::new(0),
126 display_height: AtomicU64::new(0),
127 frame_sequence: AtomicU64::new(0),
128 last_frame_ms: AtomicU64::new(0),
129 last_refresh_us: AtomicU64::new(0),
130 last_keyframe_ms: AtomicU64::new(0),
131 active_frame_subscribers: AtomicU64::new(0),
132 refresh_pump_running: AtomicBool::new(false),
133 });
134
135 let user_data = Weak::into_raw(Arc::downgrade(&inner)) as *mut c_void;
136 unsafe {
137 inner
138 .native
139 .set_frame_callback(Some(native_frame_callback), user_data);
140 }
141
142 Ok(Self {
143 inner,
144 callback_user_data: user_data as usize,
145 })
146 }
147
148 pub fn ensure_started(&self) -> Result<(), AppError> {
149 loop {

Callers

nothing calls this directly

Calls 3

create_sessionMethod · 0.80
simulatorMethod · 0.80
set_frame_callbackMethod · 0.80

Tested by

no test coverage detected