From 50000666467276d2a86753f76a5940d6a6b18c06 Mon Sep 17 00:00:00 2001 From: Dennis Schwerdel Date: Mon, 21 Dec 2020 00:13:32 +0100 Subject: [PATCH] Template --- src/engine/device_thread.rs | 33 +++++++++++++++++++++++++++++++++ src/engine/mod.rs | 4 ++++ src/engine/shared.rs | 1 + src/engine/socket_thread.rs | 32 ++++++++++++++++++++++++++++++++ 4 files changed, 70 insertions(+) create mode 100644 src/engine/device_thread.rs create mode 100644 src/engine/shared.rs create mode 100644 src/engine/socket_thread.rs diff --git a/src/engine/device_thread.rs b/src/engine/device_thread.rs new file mode 100644 index 0000000..d643dff --- /dev/null +++ b/src/engine/device_thread.rs @@ -0,0 +1,33 @@ +use std::{marker::PhantomData, sync::Arc}; + +use super::shared::SharedData; +use crate::{ + device::Device, + util::{Time, TimeSource} +}; + + +const SYNC_INTERVAL: Time = 1; + +pub struct DeviceThread { + shared: Arc, + device: D, + next_sync: Time, + _dummy: PhantomData +} + +impl DeviceThread { + fn sync(&mut self) { + // TODO sync + } + + pub fn run(mut self) { + loop { + let now = T::now(); + if self.next_sync < now { + self.sync(); + self.next_sync = now + SYNC_INTERVAL + } + } + } +} diff --git a/src/engine/mod.rs b/src/engine/mod.rs index 1a3533a..2af44a8 100644 --- a/src/engine/mod.rs +++ b/src/engine/mod.rs @@ -2,6 +2,10 @@ // Copyright (C) 2015-2020 Dennis Schwerdel // This software is licensed under GPL-3 or newer (see LICENSE.md) +mod device_thread; +mod socket_thread; +mod shared; + use std::{ cmp::{max, min}, collections::HashMap, diff --git a/src/engine/shared.rs b/src/engine/shared.rs new file mode 100644 index 0000000..b015690 --- /dev/null +++ b/src/engine/shared.rs @@ -0,0 +1 @@ +pub struct SharedData {} diff --git a/src/engine/socket_thread.rs b/src/engine/socket_thread.rs new file mode 100644 index 0000000..4939993 --- /dev/null +++ b/src/engine/socket_thread.rs @@ -0,0 +1,32 @@ +use std::marker::PhantomData; +use std::sync::Arc; + +use super::shared::SharedData; +use crate::net::Socket; +use crate::util::{Time, TimeSource}; + + +const SYNC_INTERVAL: Time = 1; + +pub struct SocketThread { + shared: Arc, + socket: S, + next_sync: Time, + _dummy: PhantomData +} + +impl SocketThread { + fn sync(&mut self) { + //TODO sync + } + + pub fn run(mut self) { + loop { + let now = T::now(); + if self.next_sync < now { + self.sync(); + self.next_sync = now + SYNC_INTERVAL + } + } + } +} \ No newline at end of file