pub struct VfdWorker<T: Write + Send + 'static = Box<dyn SerialPort>> { /* private fields */ }Expand description
Владеет фоновым потоком записи.
Предпочитайте явный VfdWorker::shutdown, чтобы дождаться завершения потока и
вернуть внутренний драйвер. Drop предназначен только для аварийного закрытия
забытых worker-ов и игнорирует ошибку завершения.
Implementations§
Source§impl VfdWorker<Box<dyn SerialPort>>
impl VfdWorker<Box<dyn SerialPort>>
Sourcepub fn start(cfg: VfdConfig) -> Result<Self>
pub fn start(cfg: VfdConfig) -> Result<Self>
Открывает дисплей и запускает поток последовательной обработки команд.
§Блокировка
Метод блокирует текущий поток на открытии serial-порта и init-записи, затем создаёт отдельный поток writer-а.
§Ошибки
Возвращает ошибки конфигурации, serial open или init I/O из crate::Vfd::open.
Source§impl<T: Write + Send + 'static> VfdWorker<T>
impl<T: Write + Send + 'static> VfdWorker<T>
Sourcepub fn from_vfd(vfd: Vfd<T>, queue_capacity: usize) -> Result<Self>
pub fn from_vfd(vfd: Vfd<T>, queue_capacity: usize) -> Result<Self>
Запускает worker поверх уже созданного драйвера.
Worker сначала очищает дисплей, затем начинает принимать команды. Ошибка первой
очистки завершит поток и вернётся ожидающему shutdown.
§Ошибки
Возвращает VfdError::Config, если queue_capacity = 0.
Sourcepub fn from_transport(
transport: T,
display: DisplaySettings,
queue_capacity: usize,
) -> Result<Self>
pub fn from_transport( transport: T, display: DisplaySettings, queue_capacity: usize, ) -> Result<Self>
Запускает worker поверх произвольного транспорта.
Метод удобен для тестов и интеграций с собственным транспортом. Init-команды записываются до запуска worker-потока.
§Ошибки
Возвращает ошибки crate::Vfd::from_transport или
VfdError::Config при queue_capacity = 0.
Sourcepub fn handle(&self) -> VfdHandle
pub fn handle(&self) -> VfdHandle
Возвращает новый клон интерфейса отправки команд.
Клон можно хранить отдельно от VfdWorker. Сам worker всё равно должен жить
дольше handle-ов, иначе команды начнут возвращать ошибки очереди.
Sourcepub fn shutdown(self) -> Result<Vfd<T>>
pub fn shutdown(self) -> Result<Vfd<T>>
Корректно останавливает worker и возвращает драйвер с транспортом.
Shutdown-команда обрабатывается после ранее принятых команд. После этого очередь больше не используется, а join result возвращает накопленную ошибку worker-а.
§Ошибки
Возвращает ошибку отправки shutdown, последнюю ошибку worker-а или
VfdError::WorkerPanicked, если поток завершился panic-ом.