Skip to main content

EventHandler

Trait EventHandler 

Source
pub trait EventHandler: Send + Sync {
Show 76 methods // Provided methods fn on_device_config_changed(&self, device: DeviceUid) { ... } fn on_device_config_complete(&self, device: DeviceUid) { ... } fn on_device_online_changed(&self, device: DeviceUid, online: bool) { ... } fn on_device_temperature_changed( &self, device: DeviceUid, temperatures: Vec<u8>, ) { ... } fn on_firmware_version_changed( &self, device: DeviceUid, version: FirmwareVersion, ) { ... } fn on_system_status_changed( &self, device: DeviceUid, status: u16, message: String, ) { ... } fn on_network_status_changed( &self, device: DeviceUid, status: NetworkPortStatus, ) { ... } fn on_v2ip_stats_changed(&self, device: DeviceUid, stats: V2ipDeviceStats) { ... } fn on_v2ip_sources_changed( &self, device: DeviceUid, sources: Vec<V2ipStreamSources>, ) { ... } fn on_v2ip_details_changed( &self, device: DeviceUid, details: DeviceV2ipDetails, ) { ... } fn on_v2ip_sink_changed(&self, device: DeviceUid, sink: DeviceV2ipSink) { ... } fn on_multiviewer_status_changed( &self, device: DeviceUid, status: MultiviewerStatus, ) { ... } fn on_audio_endpoints_changed( &self, device: DeviceUid, endpoints: AudioEndpoints, ) { ... } fn on_mesh_master_changed(&self, device: DeviceUid, master: DeviceUid) { ... } fn on_topology_changed( &self, device: DeviceUid, topology: Vec<TopologyEntry>, ) { ... } fn on_amp_dolby_settings_changed( &self, device: DeviceUid, settings: AmpDolbySettings, ) { ... } fn on_pdu_state_changed(&self, device: DeviceUid, state: PduState) { ... } fn on_setup_status_changed(&self, device: DeviceUid, completed: bool) { ... } fn on_installer_id_changed(&self, device: DeviceUid, installer_id: u16) { ... } fn on_tiling_changed(&self, device: DeviceUid, tiling: V2ipTilingConfig) { ... } fn on_rc_settings_changed(&self, device: DeviceUid, settings: RcSettings) { ... } fn on_v2ip_link_changed(&self, device: DeviceUid, target: DeviceUid) { ... } fn on_multiviewer_command( &self, device: DeviceUid, command: MultiviewerCommand, ) { ... } fn on_audio_select_input( &self, device: DeviceUid, change: AudioChangeSource, ) { ... } fn on_audio_endpoint_mute( &self, device: DeviceUid, endpoint: u16, muted: bool, ) { ... } fn on_audio_endpoint_trigger( &self, device: DeviceUid, endpoint: u16, active: bool, ) { ... } fn on_audio_endpoint_volume( &self, device: DeviceUid, endpoint: u16, volume: u32, ) { ... } fn on_discover_request(&self, device: DeviceUid) { ... } fn on_set_route_requested( &self, device: DeviceUid, request: SetRouteRequest, ) { ... } fn on_edid_requested(&self, device: DeviceUid, request: EdidRequest) { ... } fn on_edid_received(&self, device: DeviceUid, edid: EdidRecord) { ... } fn on_bay_name_change_requested( &self, device: DeviceUid, change: BayNameChange, ) { ... } fn on_edid_profile_change_requested( &self, device: DeviceUid, change: EdidProfileChange, ) { ... } fn on_reboot_requested(&self, device: DeviceUid, request: RebootRequest) { ... } fn on_factory_reset_requested( &self, device: DeviceUid, request: FactoryResetRequest, ) { ... } fn on_monitoring_pulse(&self, device: DeviceUid) { ... } fn on_upgrade_fpga_requested(&self, device: DeviceUid) { ... } fn on_detect_bays_requested(&self, device: DeviceUid) { ... } fn on_power_save_requested( &self, device: DeviceUid, request: V2ipPowerSaveRequest, ) { ... } fn on_key_transmit_requested( &self, device: DeviceUid, request: KeyTransmitRequest, ) { ... } fn on_action_transmit_requested( &self, device: DeviceUid, request: ActionTransmitRequest, ) { ... } fn on_ir_transmit_requested( &self, device: DeviceUid, request: IrTransmitRequest, ) { ... } fn on_blacklist_changed( &self, device: DeviceUid, change: V2ipBlacklistChange, ) { ... } fn on_video_wall_command( &self, device: DeviceUid, command: VideoWallCommand, ) { ... } fn on_bay_registered(&self, bay: BayUid) { ... } fn on_video_source_changed(&self, bay: BayUid, source: Option<BayUid>) { ... } fn on_audio_source_changed(&self, bay: BayUid, source: Option<BayUid>) { ... } fn on_volume_changed(&self, bay: BayUid, volume: VolumeMuteStatus) { ... } fn on_power_changed(&self, bay: BayUid, power: PowerStatus) { ... } fn on_name_changed(&self, bay: BayUid, name: String) { ... } fn on_signal_detected_changed(&self, bay: BayUid, detected: bool) { ... } fn on_faulty_changed(&self, bay: BayUid, faulty: bool) { ... } fn on_hidden_changed(&self, bay: BayUid, hidden: bool) { ... } fn on_poe_powered_changed(&self, bay: BayUid, powered: bool) { ... } fn on_hdbt_connected_changed(&self, bay: BayUid, connected: bool) { ... } fn on_signal_type_changed(&self, bay: BayUid, signal_type: String) { ... } fn on_hpd_detected_changed(&self, bay: BayUid, detected: bool) { ... } fn on_cec_detected_changed(&self, bay: BayUid, detected: bool) { ... } fn on_arc_changed(&self, bay: BayUid, arc: ArcStatus) { ... } fn on_edid_profile_changed(&self, bay: BayUid, profile: EdidProfile) { ... } fn on_rc_type_changed(&self, bay: BayUid, rc_type: RcType) { ... } fn on_key_pressed(&self, bay: BayUid, key: RcKey) { ... } fn on_action_received(&self, bay: BayUid, action: RcAction) { ... } fn on_mirror_status_changed(&self, bay: BayUid, mirror: BayMirrorStatus) { ... } fn on_amp_zone_settings_changed( &self, bay: BayUid, settings: AmpZoneSettings, ) { ... } fn on_volume_step(&self, bay: BayUid, up: bool) { ... } fn on_audio_clip(&self, bay: BayUid, clip: AudioClip) { ... } fn on_ir_captured(&self, bay: BayUid, capture: IrCapture) { ... } fn on_filtered_devices_changed(&self, bay: BayUid, filtered: Vec<DeviceUid>) { ... } fn on_audio_endpoint_changed(&self, bay: BayUid, endpoint: u8) { ... } fn on_encoder_disabled_changed(&self, bay: BayUid, disabled: bool) { ... } fn on_decoder_disabled_changed(&self, bay: BayUid, disabled: bool) { ... } fn on_bay_linked( &self, bay: BayUid, linked_serial: String, bay_name: String, features: LinkFeature, ) { ... } fn on_bay_unlinked( &self, bay: BayUid, linked_serial: String, bay_name: String, ) { ... } fn on_device_update(&self, device: DeviceUid) { ... } fn on_bay_update(&self, bay: BayUid) { ... }
}
Expand description

Receives events.

Every method has a no-op default, so an implementation names only the events it cares about. Handlers run one at a time from the thread that produced the event, with no lock held: calling back into the library from one is safe, but blocking for long stalls the receive path.

Provided Methods§

Source

fn on_device_config_changed(&self, device: DeviceUid)

The device’s configuration changed.

Source

fn on_device_config_complete(&self, device: DeviceUid)

The device has reported every part of its configuration.

Source

fn on_device_online_changed(&self, device: DeviceUid, online: bool)

The device started or stopped answering.

Source

fn on_device_temperature_changed( &self, device: DeviceUid, temperatures: Vec<u8>, )

The device reported new temperatures.

Source

fn on_firmware_version_changed( &self, device: DeviceUid, version: FirmwareVersion, )

A firmware component reported its version.

Source

fn on_system_status_changed( &self, device: DeviceUid, status: u16, message: String, )

The device reported a system status.

Source

fn on_network_status_changed( &self, device: DeviceUid, status: NetworkPortStatus, )

A network port reported its link state.

Source

fn on_v2ip_stats_changed(&self, device: DeviceUid, stats: V2ipDeviceStats)

The device reported V2IP statistics.

Source

fn on_v2ip_sources_changed( &self, device: DeviceUid, sources: Vec<V2ipStreamSources>, )

The streams the device’s source bays advertise changed.

Source

fn on_v2ip_details_changed(&self, device: DeviceUid, details: DeviceV2ipDetails)

The device’s V2IP encoder configuration changed.

Source

fn on_v2ip_sink_changed(&self, device: DeviceUid, sink: DeviceV2ipSink)

The streams the device’s sink is subscribed to changed.

Source

fn on_multiviewer_status_changed( &self, device: DeviceUid, status: MultiviewerStatus, )

A multiviewer reported its state.

Source

fn on_audio_endpoints_changed( &self, device: DeviceUid, endpoints: AudioEndpoints, )

The device reported its audio endpoint tree.

Source

fn on_mesh_master_changed(&self, device: DeviceUid, master: DeviceUid)

The device reported its mesh master.

Source

fn on_topology_changed(&self, device: DeviceUid, topology: Vec<TopologyEntry>)

The device reported its view of the mesh topology.

Source

fn on_amp_dolby_settings_changed( &self, device: DeviceUid, settings: AmpDolbySettings, )

A ProAmp8 reported its Dolby settings.

Source

fn on_pdu_state_changed(&self, device: DeviceUid, state: PduState)

A PDU reported its electrical state.

Source

fn on_setup_status_changed(&self, device: DeviceUid, completed: bool)

Installer setup was completed or cleared.

Source

fn on_installer_id_changed(&self, device: DeviceUid, installer_id: u16)

The installer id changed.

Source

fn on_tiling_changed(&self, device: DeviceUid, tiling: V2ipTilingConfig)

The sink was told to show a window.

Source

fn on_rc_settings_changed(&self, device: DeviceUid, settings: RcSettings)

A source bay’s remote-control configuration changed.

A V2IP device was linked to a remote peer.

Source

fn on_multiviewer_command(&self, device: DeviceUid, command: MultiviewerCommand)

A multiviewer command arrived.

Source

fn on_audio_select_input(&self, device: DeviceUid, change: AudioChangeSource)

An audio endpoint was switched to a new source.

Source

fn on_audio_endpoint_mute(&self, device: DeviceUid, endpoint: u16, muted: bool)

An audio endpoint was muted or unmuted.

Source

fn on_audio_endpoint_trigger( &self, device: DeviceUid, endpoint: u16, active: bool, )

An audio endpoint’s trigger changed.

Source

fn on_audio_endpoint_volume( &self, device: DeviceUid, endpoint: u16, volume: u32, )

An audio endpoint’s volume changed.

Source

fn on_discover_request(&self, device: DeviceUid)

A peer asked every device to announce itself.

Source

fn on_set_route_requested(&self, device: DeviceUid, request: SetRouteRequest)

A peer asked a device to switch a sink.

Source

fn on_edid_requested(&self, device: DeviceUid, request: EdidRequest)

A peer asked a device for its EDID.

Source

fn on_edid_received(&self, device: DeviceUid, edid: EdidRecord)

A device answered with its EDID.

Source

fn on_bay_name_change_requested(&self, device: DeviceUid, change: BayNameChange)

A peer asked a device to rename a bay.

Source

fn on_edid_profile_change_requested( &self, device: DeviceUid, change: EdidProfileChange, )

A peer asked a device to switch its EDID profile.

Source

fn on_reboot_requested(&self, device: DeviceUid, request: RebootRequest)

A peer asked a device to reboot.

Source

fn on_factory_reset_requested( &self, device: DeviceUid, request: FactoryResetRequest, )

A peer asked devices to factory-reset.

Source

fn on_monitoring_pulse(&self, device: DeviceUid)

A device sent its monitoring pulse.

Source

fn on_upgrade_fpga_requested(&self, device: DeviceUid)

A peer asked a device to upgrade its FPGA.

Source

fn on_detect_bays_requested(&self, device: DeviceUid)

A peer asked a device to re-detect its bays.

Source

fn on_power_save_requested( &self, device: DeviceUid, request: V2ipPowerSaveRequest, )

A peer asked a sink to enter or leave power save.

Source

fn on_key_transmit_requested( &self, device: DeviceUid, request: KeyTransmitRequest, )

A peer asked a device to send a remote-control key.

Source

fn on_action_transmit_requested( &self, device: DeviceUid, request: ActionTransmitRequest, )

A peer asked a device to perform a remote-control action.

Source

fn on_ir_transmit_requested( &self, device: DeviceUid, request: IrTransmitRequest, )

A peer asked a device to blast raw infrared.

Source

fn on_blacklist_changed(&self, device: DeviceUid, change: V2ipBlacklistChange)

A device was added to or removed from the source blacklist.

Source

fn on_video_wall_command(&self, device: DeviceUid, command: VideoWallCommand)

A video wall command arrived.

Source

fn on_bay_registered(&self, bay: BayUid)

A bay was seen for the first time.

Source

fn on_video_source_changed(&self, bay: BayUid, source: Option<BayUid>)

The bay’s routed video source changed.

Source

fn on_audio_source_changed(&self, bay: BayUid, source: Option<BayUid>)

The bay’s routed audio source changed.

Source

fn on_volume_changed(&self, bay: BayUid, volume: VolumeMuteStatus)

The bay’s volume or mute state changed.

Source

fn on_power_changed(&self, bay: BayUid, power: PowerStatus)

The attached device’s power state changed.

Source

fn on_name_changed(&self, bay: BayUid, name: String)

The bay was renamed.

Source

fn on_signal_detected_changed(&self, bay: BayUid, detected: bool)

A signal appeared or disappeared.

Source

fn on_faulty_changed(&self, bay: BayUid, faulty: bool)

The bay started or stopped reporting a fault.

Source

fn on_hidden_changed(&self, bay: BayUid, hidden: bool)

The bay was hidden or shown.

Source

fn on_poe_powered_changed(&self, bay: BayUid, powered: bool)

Power over Ethernet started or stopped supplying the bay.

Source

fn on_hdbt_connected_changed(&self, bay: BayUid, connected: bool)

The HDBaseT link came up or went down.

Source

fn on_signal_type_changed(&self, bay: BayUid, signal_type: String)

The signal format description changed.

Source

fn on_hpd_detected_changed(&self, bay: BayUid, detected: bool)

Hot-plug detect was asserted or released.

Source

fn on_cec_detected_changed(&self, bay: BayUid, detected: bool)

A CEC device answered or stopped answering.

Source

fn on_arc_changed(&self, bay: BayUid, arc: ArcStatus)

The audio return channel changed.

Source

fn on_edid_profile_changed(&self, bay: BayUid, profile: EdidProfile)

The input’s EDID profile changed.

Source

fn on_rc_type_changed(&self, bay: BayUid, rc_type: RcType)

The input’s remote-control type changed.

Source

fn on_key_pressed(&self, bay: BayUid, key: RcKey)

A remote-control key was pressed on the bay.

Source

fn on_action_received(&self, bay: BayUid, action: RcAction)

A remote-control action was received on the bay.

Source

fn on_mirror_status_changed(&self, bay: BayUid, mirror: BayMirrorStatus)

The bay started or stopped mirroring another output.

Source

fn on_amp_zone_settings_changed(&self, bay: BayUid, settings: AmpZoneSettings)

A ProAmp8 zone’s settings changed.

Source

fn on_volume_step(&self, bay: BayUid, up: bool)

A volume step was requested on the bay.

Source

fn on_audio_clip(&self, bay: BayUid, clip: AudioClip)

The bay detected audio clipping.

Source

fn on_ir_captured(&self, bay: BayUid, capture: IrCapture)

Raw infrared was captured on the bay.

Source

fn on_filtered_devices_changed(&self, bay: BayUid, filtered: Vec<DeviceUid>)

The devices filtered out of this sink’s picker changed.

Source

fn on_audio_endpoint_changed(&self, bay: BayUid, endpoint: u8)

The audio endpoint the bay carries changed.

Source

fn on_encoder_disabled_changed(&self, bay: BayUid, disabled: bool)

The bay’s V2IP encoder was enabled or disabled.

Source

fn on_decoder_disabled_changed(&self, bay: BayUid, disabled: bool)

The bay’s V2IP decoder was enabled or disabled.

Source

fn on_bay_linked( &self, bay: BayUid, linked_serial: String, bay_name: String, features: LinkFeature, )

The bay was linked to a bay on another device.

linked_serial is the serial of the device at the other end of the link, and bay_name the name of the bay whose link record changed: this bay on the device that reported the change, and the far bay on its peer. Both ends are told, so both fire.

Source

fn on_bay_unlinked(&self, bay: BayUid, linked_serial: String, bay_name: String)

The bay’s link to another device was removed.

The arguments describe the link that was removed, and mean what they do on Event::BayLinked.

Source

fn on_device_update(&self, device: DeviceUid)

Fired after every device-level event above.

Examples found in repository?
examples/discover.rs (line 86)
59fn main() -> std::io::Result<()> {
60    let mut config = Config::default();
61    config.name = Some("discover".to_owned());
62    if let Some(address) = std::env::args().nth(1) {
63        config.local_ip = Some(address.parse().map_err(|_| {
64            std::io::Error::new(std::io::ErrorKind::InvalidInput, "not an IPv4 address")
65        })?);
66    }
67
68    let remote = Arc::new(Remote::new(config, Arc::new(Printer))?);
69    let _ = CLIENT.set(Arc::clone(&remote));
70    remote.start()?;
71
72    if let Some(target) = remote.target() {
73        println!("listening, sending to {target}. Ctrl-C to stop.");
74    }
75
76    let running = Arc::new(AtomicBool::new(true));
77    let stop = Arc::clone(&running);
78    ctrl_c(move || stop.store(false, Ordering::Relaxed));
79    while running.load(Ordering::Relaxed) {
80        std::thread::sleep(Duration::from_millis(200));
81    }
82
83    let devices = remote.devices();
84    println!("\n{} device(s):", devices.len());
85    for device in devices {
86        Printer.on_device_update(device);
87    }
88
89    remote.close();
90    Ok(())
91}
Source

fn on_bay_update(&self, bay: BayUid)

Fired after every bay-level event above.

Dyn Compatibility§

This trait is dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety".

Implementations on Foreign Types§

Source§

impl EventHandler for ()

Ignores every event.

The handler a client that only reads state through Remote needs, since the trait is not optional and its methods all default to nothing.

Implementors§