summaryrefslogtreecommitdiff
path: root/src/types.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/types.rs')
-rw-r--r--src/types.rs43
1 files changed, 43 insertions, 0 deletions
diff --git a/src/types.rs b/src/types.rs
new file mode 100644
index 0000000..eed69dd
--- /dev/null
+++ b/src/types.rs
@@ -0,0 +1,43 @@
+use std::{
+ collections::HashMap,
+ net::SocketAddr,
+ sync::Arc,
+};
+use tokio::sync::RwLock;
+use hyper_tungstenite::tungstenite::Message;
+use hyper::{ Response, Body };
+use futures::channel::mpsc::UnboundedSender;
+use crate::minesweeper;
+
+#[derive(Debug, Clone)]
+pub struct Config {
+ pub cert_path: String,
+ pub pkey_path: String,
+ pub page_path: String,
+ pub socket_addr: SocketAddr,
+}
+
+#[derive(Debug, Clone)]
+pub struct State {
+ pub conf: Config,
+ pub peers: PeerMap,
+}
+
+#[derive(Debug)]
+pub enum MetaMove {
+ Move(minesweeper::Move,SocketAddr),
+ Dump,
+ Reset,
+}
+
+#[derive(Debug)]
+pub struct Peer {
+ pub tx: UnboundedSender<Message>,
+ pub seq_id: usize,
+ pub name: String,
+ pub position: (usize, usize),
+}
+
+pub type HtmlResult = Result<Response<Body>, Response<Body>>;
+pub type MovReqTx = futures::channel::mpsc::UnboundedSender<MetaMove>;
+pub type PeerMap = Arc<RwLock<HashMap<SocketAddr, Peer>>>;