misc: more generic set & gets
This commit is contained in:
37
src/main.rs
37
src/main.rs
@@ -187,39 +187,32 @@ async fn handle_connection(
|
|||||||
error!("handle_tournament_cancel: {}", e);
|
error!("handle_tournament_cancel: {}", e);
|
||||||
let _ = send(&tx, e.to_string().as_str());
|
let _ = send(&tx, e.to_string().as_str());
|
||||||
}
|
}
|
||||||
} else if parts.get(1) == Some(&"WAIT") && parts.len() > 2 {
|
|
||||||
match parts[2].parse::<f64>() {
|
|
||||||
Ok(new_timeout) => {
|
|
||||||
if let Err(e) =
|
|
||||||
sd.handle_tournament_wait(addr, new_timeout).await
|
|
||||||
{
|
|
||||||
error!("handle_tournament_wait: {}", e);
|
|
||||||
let _ = send(&tx, e.to_string().as_str());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Err(_) => {
|
|
||||||
let _ = send(&tx, "ERROR:INVALID:TOURNAMENT");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
let _ = send(&tx, "ERROR:INVALID:TOURNAMENT");
|
let _ = send(&tx, "ERROR:INVALID:TOURNAMENT");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
"GET" => {
|
"GET" => {
|
||||||
if parts.get(1) == Some(&"MOVE_WAIT") {
|
if let Some(data_id) = parts.get(1) {
|
||||||
if let Err(e) = sd.handle_get_move_wait(tx.clone()).await {
|
if let Err(e) = sd.handle_get_data(tx.clone(), data_id.to_string()).await {
|
||||||
error!("handle_get_move_wait: {}", e);
|
error!("handle_get_data: {}", e);
|
||||||
let _ = send(&tx, e.to_string().as_str());
|
|
||||||
}
|
|
||||||
} else if parts.get(1) == Some(&"TOURNAMENT_STATUS") {
|
|
||||||
if let Err(e) = sd.handle_get_tournament_status(tx.clone()).await {
|
|
||||||
error!("handle_get_tournament_status: {}", e);
|
|
||||||
let _ = send(&tx, e.to_string().as_str());
|
let _ = send(&tx, e.to_string().as_str());
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
let _ = send(&tx, "ERROR:INVALID:GET");
|
let _ = send(&tx, "ERROR:INVALID:GET");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
"SET" => {
|
||||||
|
if parts.len() > 2 {
|
||||||
|
let data_id = parts[1].to_string();
|
||||||
|
let data_value = parts[2].to_string();
|
||||||
|
if let Err(e) = sd.handle_set_data(tx.clone(), addr, data_id, data_value).await {
|
||||||
|
error!("handle_set_data: {}", e);
|
||||||
|
let _ = send(&tx, e.to_string().as_str());
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
let _ = send(&tx, "ERROR:INVALID:SET");
|
||||||
|
}
|
||||||
|
}
|
||||||
_ => {
|
_ => {
|
||||||
let _ = send(&tx, "ERROR:UNKNOWN");
|
let _ = send(&tx, "ERROR:UNKNOWN");
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -604,71 +604,66 @@ impl Server {
|
|||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
pub async fn handle_tournament_wait(
|
pub async fn handle_get_data(
|
||||||
&self,
|
|
||||||
addr: SocketAddr,
|
|
||||||
new_timeout: f64,
|
|
||||||
) -> Result<(), anyhow::Error> {
|
|
||||||
if !self.auth_check(addr).await {
|
|
||||||
return Err(anyhow::anyhow!("ERROR:INVALID:AUTH"));
|
|
||||||
}
|
|
||||||
|
|
||||||
*self.waiting_timeout.write().await = (new_timeout * 1000.0) as u64;
|
|
||||||
Ok(())
|
|
||||||
}
|
|
||||||
|
|
||||||
pub async fn handle_get_move_wait(
|
|
||||||
&self,
|
&self,
|
||||||
tx: UnboundedSender<Message>,
|
tx: UnboundedSender<Message>,
|
||||||
|
data_id: String,
|
||||||
) -> Result<(), anyhow::Error> {
|
) -> Result<(), anyhow::Error> {
|
||||||
let mut msg = "GET:MOVE_WAIT:".to_string();
|
let mut msg = format!("GET:{}:", data_id);
|
||||||
msg += &(*self.waiting_timeout.read().await as f64 / 1000f64).to_string();
|
match data_id.as_str() {
|
||||||
let _ = send(&tx, &msg);
|
"TOURNAMENT_STATUS" => {
|
||||||
Ok(())
|
let tournament = self.tournament.read().await.clone();
|
||||||
}
|
if tournament.is_some() {
|
||||||
|
msg += tournament.as_ref().unwrap().read().await.get_type().as_str();
|
||||||
pub async fn handle_get_tournament_status(
|
|
||||||
&self,
|
|
||||||
tx: UnboundedSender<Message>,
|
|
||||||
) -> Result<(), anyhow::Error> {
|
|
||||||
let status = self.tournament.read().await.is_some();
|
|
||||||
let mut msg = "GET:TOURNAMENT_STATUS:".to_string();
|
|
||||||
if status {
|
|
||||||
msg += self.tournament.read().await.as_ref().unwrap().read().await.get_type().as_str();
|
|
||||||
} else {
|
} else {
|
||||||
msg += status.to_string().as_str();
|
msg += "false";
|
||||||
}
|
}
|
||||||
let _ = send(&tx, &msg);
|
|
||||||
Ok(())
|
|
||||||
}
|
}
|
||||||
|
"MOVE_WAIT" => {
|
||||||
pub async fn handle_get_demo_mode(
|
let wait_time = *self.waiting_timeout.read().await as f64 / 1000f64;
|
||||||
&self,
|
msg += wait_time.to_string().as_str();
|
||||||
tx: UnboundedSender<Message>,
|
}
|
||||||
) -> Result<(), anyhow::Error> {
|
"DEMO_MODE" => {
|
||||||
let demo_mode = *self.demo_mode.read().await;
|
let demo_mode = *self.demo_mode.read().await;
|
||||||
let mut msg = "GET:DEMO_MODE:".to_string();
|
|
||||||
msg += demo_mode.to_string().as_str();
|
msg += demo_mode.to_string().as_str();
|
||||||
|
}
|
||||||
|
&_ => return Err(anyhow::anyhow!("ERROR:INVALID:GET")),
|
||||||
|
}
|
||||||
|
|
||||||
let _ = send(&tx, &msg);
|
let _ = send(&tx, &msg);
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
pub async fn handle_set_demo_mode(
|
pub async fn handle_set_data(
|
||||||
&self,
|
&self,
|
||||||
tx: UnboundedSender<Message>,
|
tx: UnboundedSender<Message>,
|
||||||
addr: SocketAddr,
|
addr: SocketAddr,
|
||||||
demo_mode: bool,
|
data_id: String,
|
||||||
|
data_value: String,
|
||||||
) -> Result<(), anyhow::Error> {
|
) -> Result<(), anyhow::Error> {
|
||||||
if !self.auth_check(addr).await {
|
if !self.auth_check(addr).await {
|
||||||
return Err(anyhow::anyhow!("ERROR:INVALID:AUTH"));
|
return Err(anyhow::anyhow!("ERROR:INVALID:AUTH"));
|
||||||
}
|
}
|
||||||
|
|
||||||
if self.tournament.read().await.is_some() {
|
match data_id.as_str() {
|
||||||
return Err(anyhow::anyhow!("ERROR:INVALID:TOURNAMENT"));
|
"DEMO_MODE" => {
|
||||||
|
let demo_mode = data_value.parse::<bool>();
|
||||||
|
if demo_mode.is_err() {
|
||||||
|
return Err(anyhow::anyhow!("ERROR:INVALID:SET"));
|
||||||
|
}
|
||||||
|
*self.demo_mode.write().await = demo_mode.unwrap();
|
||||||
|
}
|
||||||
|
"MOVE_WAIT" => {
|
||||||
|
let wait_time = data_value.parse::<f64>();
|
||||||
|
if wait_time.is_err() {
|
||||||
|
return Err(anyhow::anyhow!("ERROR:INVALID:SET"));
|
||||||
|
}
|
||||||
|
*self.waiting_timeout.write().await = (wait_time.unwrap() * 1000.0) as u64;
|
||||||
|
}
|
||||||
|
&_ => return Err(anyhow::anyhow!("ERROR:INVALID:SET")),
|
||||||
}
|
}
|
||||||
|
|
||||||
*self.demo_mode.write().await = demo_mode;
|
let _ = send(&tx, &format!("SET:{}:ACK", data_id));
|
||||||
let _ = send(&tx, "SET:DEMO_MODE:ACK");
|
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user