Skip to main content

RuntimeService

Trait RuntimeService 

Source
pub trait RuntimeService: Send + Sync {
Show 23 methods // Required methods fn start<'life0, 'async_trait>( &'life0 self, ) -> Pin<Box<dyn Future<Output = ServiceResult<()>> + Send + 'async_trait>> where Self: 'async_trait, 'life0: 'async_trait; fn stop<'life0, 'async_trait>( &'life0 self, ) -> Pin<Box<dyn Future<Output = ServiceResult<()>> + Send + 'async_trait>> where Self: 'async_trait, 'life0: 'async_trait; fn pause<'life0, 'async_trait>( &'life0 self, ) -> Pin<Box<dyn Future<Output = ServiceResult<()>> + Send + 'async_trait>> where Self: 'async_trait, 'life0: 'async_trait; fn resume<'life0, 'async_trait>( &'life0 self, ) -> Pin<Box<dyn Future<Output = ServiceResult<()>> + Send + 'async_trait>> where Self: 'async_trait, 'life0: 'async_trait; fn step<'life0, 'async_trait>( &'life0 self, ) -> Pin<Box<dyn Future<Output = ServiceResult<()>> + Send + 'async_trait>> where Self: 'async_trait, 'life0: 'async_trait; fn get_status<'life0, 'async_trait>( &'life0 self, ) -> Pin<Box<dyn Future<Output = ServiceResult<RuntimeStatus>> + Send + 'async_trait>> where Self: 'async_trait, 'life0: 'async_trait; fn set_frequency<'life0, 'async_trait>( &'life0 self, frequency_hz: f64, ) -> Pin<Box<dyn Future<Output = ServiceResult<()>> + Send + 'async_trait>> where Self: 'async_trait, 'life0: 'async_trait; fn get_burst_count<'life0, 'async_trait>( &'life0 self, ) -> Pin<Box<dyn Future<Output = ServiceResult<u64>> + Send + 'async_trait>> where Self: 'async_trait, 'life0: 'async_trait; fn reset_burst_count<'life0, 'async_trait>( &'life0 self, ) -> Pin<Box<dyn Future<Output = ServiceResult<()>> + Send + 'async_trait>> where Self: 'async_trait, 'life0: 'async_trait; fn get_fcl_snapshot<'life0, 'async_trait>( &'life0 self, ) -> Pin<Box<dyn Future<Output = ServiceResult<Vec<(u64, f32)>>> + Send + 'async_trait>> where Self: 'async_trait, 'life0: 'async_trait; fn get_fcl_snapshot_with_cortical_idx<'life0, 'async_trait>( &'life0 self, ) -> Pin<Box<dyn Future<Output = ServiceResult<Vec<(u64, u32, f32)>>> + Send + 'async_trait>> where Self: 'async_trait, 'life0: 'async_trait; fn get_fire_queue_sample<'life0, 'async_trait>( &'life0 self, ) -> Pin<Box<dyn Future<Output = ServiceResult<HashMap<u32, (Vec<u32>, Vec<u32>, Vec<u32>, Vec<u32>, Vec<f32>)>>> + Send + 'async_trait>> where Self: 'async_trait, 'life0: 'async_trait; fn get_fire_ledger_configs<'life0, 'async_trait>( &'life0 self, ) -> Pin<Box<dyn Future<Output = ServiceResult<Vec<(u32, usize)>>> + Send + 'async_trait>> where Self: 'async_trait, 'life0: 'async_trait; fn configure_fire_ledger_window<'life0, 'async_trait>( &'life0 self, cortical_idx: u32, window_size: usize, ) -> Pin<Box<dyn Future<Output = ServiceResult<()>> + Send + 'async_trait>> where Self: 'async_trait, 'life0: 'async_trait; fn get_fcl_sampler_config<'life0, 'async_trait>( &'life0 self, ) -> Pin<Box<dyn Future<Output = ServiceResult<(f64, u32)>> + Send + 'async_trait>> where Self: 'async_trait, 'life0: 'async_trait; fn set_fcl_sampler_config<'life0, 'async_trait>( &'life0 self, frequency: Option<f64>, consumer: Option<u32>, ) -> Pin<Box<dyn Future<Output = ServiceResult<()>> + Send + 'async_trait>> where Self: 'async_trait, 'life0: 'async_trait; fn get_area_fcl_sample_rate<'life0, 'async_trait>( &'life0 self, area_id: u32, ) -> Pin<Box<dyn Future<Output = ServiceResult<f64>> + Send + 'async_trait>> where Self: 'async_trait, 'life0: 'async_trait; fn set_area_fcl_sample_rate<'life0, 'async_trait>( &'life0 self, area_id: u32, sample_rate: f64, ) -> Pin<Box<dyn Future<Output = ServiceResult<()>> + Send + 'async_trait>> where Self: 'async_trait, 'life0: 'async_trait; fn inject_sensory_by_coordinates<'life0, 'life1, 'life2, 'async_trait>( &'life0 self, cortical_id: &'life1 str, xyzp_data: &'life2 [(u32, u32, u32, f32)], mode: ManualStimulationMode, ) -> Pin<Box<dyn Future<Output = ServiceResult<usize>> + Send + 'async_trait>> where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait; fn register_motor_subscriptions<'life0, 'life1, 'async_trait>( &'life0 self, agent_id: &'life1 str, cortical_ids: Vec<String>, rate_hz: f64, ) -> Pin<Box<dyn Future<Output = ServiceResult<()>> + Send + 'async_trait>> where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait; fn register_visualization_subscriptions<'life0, 'life1, 'async_trait>( &'life0 self, agent_id: &'life1 str, rate_hz: f64, ) -> Pin<Box<dyn Future<Output = ServiceResult<()>> + Send + 'async_trait>> where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait; fn unregister_motor_subscriptions(&self, agent_id: &str); fn unregister_visualization_subscriptions(&self, agent_id: &str);
}
Expand description

Runtime control service (transport-agnostic)

Required Methods§

Source

fn start<'life0, 'async_trait>( &'life0 self, ) -> Pin<Box<dyn Future<Output = ServiceResult<()>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Start the burst engine

Begins executing neural bursts at the configured frequency.

§Errors
  • ServiceError::InvalidState - Already running
  • ServiceError::Backend - Failed to start burst engine
Source

fn stop<'life0, 'async_trait>( &'life0 self, ) -> Pin<Box<dyn Future<Output = ServiceResult<()>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Stop the burst engine

Gracefully stops burst execution.

§Errors
  • ServiceError::Backend - Failed to stop burst engine
Source

fn pause<'life0, 'async_trait>( &'life0 self, ) -> Pin<Box<dyn Future<Output = ServiceResult<()>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Pause the burst engine

Temporarily pauses burst execution without stopping the thread.

§Errors
  • ServiceError::InvalidState - Not running
  • ServiceError::Backend - Failed to pause
Source

fn resume<'life0, 'async_trait>( &'life0 self, ) -> Pin<Box<dyn Future<Output = ServiceResult<()>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Resume the burst engine

Resumes burst execution after pause.

§Errors
  • ServiceError::InvalidState - Not paused
  • ServiceError::Backend - Failed to resume
Source

fn step<'life0, 'async_trait>( &'life0 self, ) -> Pin<Box<dyn Future<Output = ServiceResult<()>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Execute a single burst step

Executes one burst cycle and then pauses. Useful for debugging and step-by-step execution.

§Errors
  • ServiceError::InvalidState - Already running in continuous mode
  • ServiceError::Backend - Failed to execute step
Source

fn get_status<'life0, 'async_trait>( &'life0 self, ) -> Pin<Box<dyn Future<Output = ServiceResult<RuntimeStatus>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Get runtime status

Returns the current state of the burst engine.

§Returns
  • RuntimeStatus - Current runtime status
Source

fn set_frequency<'life0, 'async_trait>( &'life0 self, frequency_hz: f64, ) -> Pin<Box<dyn Future<Output = ServiceResult<()>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Set burst frequency

Changes the burst execution frequency (Hz).

§Arguments
  • frequency_hz - New frequency in Hz (e.g., 30.0)
§Errors
  • ServiceError::InvalidInput - Invalid frequency (must be > 0)
Source

fn get_burst_count<'life0, 'async_trait>( &'life0 self, ) -> Pin<Box<dyn Future<Output = ServiceResult<u64>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Get current burst count

Returns the total number of bursts executed since start.

§Returns
  • u64 - Total burst count
Source

fn reset_burst_count<'life0, 'async_trait>( &'life0 self, ) -> Pin<Box<dyn Future<Output = ServiceResult<()>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Reset burst count

Resets the burst counter to zero.

Source

fn get_fcl_snapshot<'life0, 'async_trait>( &'life0 self, ) -> Pin<Box<dyn Future<Output = ServiceResult<Vec<(u64, f32)>>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Get FCL (Fire Candidate List) snapshot for monitoring

Returns vector of (neuron_id, potential) pairs from last burst

§Returns
  • Vec<(u64, f32)> - Neuron IDs and their membrane potentials
Source

fn get_fcl_snapshot_with_cortical_idx<'life0, 'async_trait>( &'life0 self, ) -> Pin<Box<dyn Future<Output = ServiceResult<Vec<(u64, u32, f32)>>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Get Fire Candidate List snapshot with cortical area information

Returns the last FCL snapshot with cortical_idx for each neuron. This avoids the need to query cortical_area for each neuron separately.

§Returns
  • Vec<(u64, u32, f32)> - (neuron_id, cortical_idx, membrane_potential) tuples
Source

fn get_fire_queue_sample<'life0, 'async_trait>( &'life0 self, ) -> Pin<Box<dyn Future<Output = ServiceResult<HashMap<u32, (Vec<u32>, Vec<u32>, Vec<u32>, Vec<u32>, Vec<f32>)>>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Get Fire Queue sample for monitoring

Returns neurons that actually fired in the last burst, organized by cortical area

§Returns
  • HashMap<u32, (Vec<u32>, Vec<u32>, Vec<u32>, Vec<u32>, Vec<f32>)> - Area data
Source

fn get_fire_ledger_configs<'life0, 'async_trait>( &'life0 self, ) -> Pin<Box<dyn Future<Output = ServiceResult<Vec<(u32, usize)>>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Get Fire Ledger window configurations for all cortical areas

§Returns
  • Vec<(u32, usize)> - (cortical_idx, window_size) pairs
Source

fn configure_fire_ledger_window<'life0, 'async_trait>( &'life0 self, cortical_idx: u32, window_size: usize, ) -> Pin<Box<dyn Future<Output = ServiceResult<()>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Configure Fire Ledger window size for a cortical area

§Arguments
  • cortical_idx - Cortical area index
  • window_size - Number of bursts to retain in history
Source

fn get_fcl_sampler_config<'life0, 'async_trait>( &'life0 self, ) -> Pin<Box<dyn Future<Output = ServiceResult<(f64, u32)>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Get FCL/FQ sampler configuration

§Returns
  • (f64, u32) - (frequency_hz, consumer_type) where consumer: 1=viz, 2=motor, 3=both
Source

fn set_fcl_sampler_config<'life0, 'async_trait>( &'life0 self, frequency: Option<f64>, consumer: Option<u32>, ) -> Pin<Box<dyn Future<Output = ServiceResult<()>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Set FCL/FQ sampler configuration

§Arguments
  • frequency - Optional sampling frequency in Hz
  • consumer - Optional consumer type (1=viz, 2=motor, 3=both)
Source

fn get_area_fcl_sample_rate<'life0, 'async_trait>( &'life0 self, area_id: u32, ) -> Pin<Box<dyn Future<Output = ServiceResult<f64>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Get FCL sample rate for a specific cortical area

§Arguments
  • area_id - Cortical area ID (cortical_idx)
§Returns
  • f64 - Sample rate in Hz
Source

fn set_area_fcl_sample_rate<'life0, 'async_trait>( &'life0 self, area_id: u32, sample_rate: f64, ) -> Pin<Box<dyn Future<Output = ServiceResult<()>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Set FCL sample rate for a specific cortical area

§Arguments
  • area_id - Cortical area ID (cortical_idx)
  • sample_rate - Sample rate in Hz
Source

fn inject_sensory_by_coordinates<'life0, 'life1, 'life2, 'async_trait>( &'life0 self, cortical_id: &'life1 str, xyzp_data: &'life2 [(u32, u32, u32, f32)], mode: ManualStimulationMode, ) -> Pin<Box<dyn Future<Output = ServiceResult<usize>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait,

Inject sensory data by cortical area ID and coordinates

Takes cortical ID (base64 string) and coordinates with potential values, converts coordinates to neuron IDs, and injects them into FCL.

§Arguments
  • cortical_id - Base64 encoded cortical area ID
  • xyzp_data - Vector of (x, y, z, potential) tuples
§Returns
  • Number of neurons successfully injected
§Errors
  • ServiceError::NotFound - Cortical area not found
  • ServiceError::InvalidInput - Invalid cortical ID format
Source

fn register_motor_subscriptions<'life0, 'life1, 'async_trait>( &'life0 self, agent_id: &'life1 str, cortical_ids: Vec<String>, rate_hz: f64, ) -> Pin<Box<dyn Future<Output = ServiceResult<()>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

Register motor subscriptions with per-agent rate limits.

§Arguments
  • agent_id - Unique agent identifier
  • cortical_ids - List of cortical IDs to subscribe to
  • rate_hz - Motor publish rate (Hz)
Source

fn register_visualization_subscriptions<'life0, 'life1, 'async_trait>( &'life0 self, agent_id: &'life1 str, rate_hz: f64, ) -> Pin<Box<dyn Future<Output = ServiceResult<()>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

Register visualization subscriptions with per-agent rate limits.

§Arguments
  • agent_id - Unique agent identifier
  • rate_hz - Visualization publish rate (Hz)
Source

fn unregister_motor_subscriptions(&self, agent_id: &str)

Unregister motor subscriptions for a disconnected agent.

Called when an agent is deregistered (e.g. descriptor replacement, timeout).

Source

fn unregister_visualization_subscriptions(&self, agent_id: &str)

Unregister visualization subscriptions for a disconnected agent.

Called when an agent is deregistered (e.g. descriptor replacement, timeout).

Implementors§