Wrap the data into a request type
This commit is contained in:
@ -76,14 +76,7 @@ impl ws2::Handler for Server {
|
||||
|
||||
info!("on message: {msg}, {ws}");
|
||||
|
||||
let worker_message: WorkerMessages = match serde_json::from_str(msg.as_str()) {
|
||||
Ok(worker_message) => worker_message,
|
||||
Err(err) => {
|
||||
error!("Unable to understand: {msg}, {ws}: {err}");
|
||||
// Unable to understand, close the connection
|
||||
return ws.close();
|
||||
}
|
||||
};
|
||||
let worker_message: WorkerMessages = msg.clone().into();
|
||||
|
||||
match worker_message {
|
||||
WorkerMessages::AuthenticateRequest { login } => {
|
||||
@ -94,20 +87,23 @@ impl ws2::Handler for Server {
|
||||
return Ok(n?);*/
|
||||
return Ok(());
|
||||
} else {
|
||||
error!("Already authenticated: {msg}, {ws}");
|
||||
error!("Already authenticated: {ws}");
|
||||
return Ok(());
|
||||
}
|
||||
}
|
||||
WorkerMessages::FooRequest { username } => {
|
||||
let echo = format!("echo: {msg}");
|
||||
WorkerMessages::GetWorkRequest {} => {
|
||||
let echo = format!("wr");
|
||||
let n = ws.send(echo);
|
||||
Ok(n?)
|
||||
}
|
||||
WorkerMessages::String => {
|
||||
WorkerMessages::Invalid => {
|
||||
error!("Unable to understand: {msg}, {ws}");
|
||||
// Unable to understand, close the connection
|
||||
return ws.close();
|
||||
}
|
||||
} /*msg => {
|
||||
error!("No implemented: {:#?}", msg);
|
||||
Ok(())
|
||||
}*/
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1,9 +1,31 @@
|
||||
use serde::{Deserialize, Serialize};
|
||||
|
||||
#[derive(Debug, Serialize, Deserialize)]
|
||||
#[serde(untagged)]
|
||||
#[derive(Debug, Serialize, Deserialize, Clone)]
|
||||
#[serde(tag = "type", content = "request")]
|
||||
pub enum WorkerMessages {
|
||||
#[serde(rename = "auth_request")]
|
||||
AuthenticateRequest { login: String },
|
||||
FooRequest { username: String },
|
||||
String,
|
||||
#[serde(rename = "get_work")]
|
||||
GetWorkRequest {},
|
||||
#[serde(rename = "do_work")]
|
||||
DoWorkRequest {},
|
||||
#[serde(rename = "")]
|
||||
Invalid,
|
||||
}
|
||||
|
||||
impl ToString for WorkerMessages {
|
||||
fn to_string(&self) -> String {
|
||||
serde_json::to_string(&self).expect("To serialize").into()
|
||||
}
|
||||
}
|
||||
|
||||
impl Into<WorkerMessages> for String {
|
||||
fn into(self) -> WorkerMessages {
|
||||
let req: Result<WorkerMessages, serde_json::Error> =
|
||||
serde_json::from_str(self.as_str());
|
||||
match req {
|
||||
Ok(d) => d,
|
||||
Err(_) => WorkerMessages::Invalid,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -85,10 +85,17 @@ fn main() -> () {
|
||||
let msg: WorkerMessages = WorkerMessages::AuthenticateRequest {
|
||||
login: "williamdes".to_string(),
|
||||
};
|
||||
let msg: String = serde_json::to_string(&msg).expect("To serialize").into();
|
||||
match ws_client.send(msg) {
|
||||
let msg_string: String = msg.to_string();
|
||||
match ws_client.send(msg_string) {
|
||||
Ok(_) => {
|
||||
worker.authenticated = true;
|
||||
match msg {
|
||||
WorkerMessages::AuthenticateRequest { login } => {
|
||||
worker.authenticated = true; // Anyway, it will kick us if this is not success
|
||||
info!("Logged in as: {login}")
|
||||
}
|
||||
WorkerMessages::GetWorkRequest {} => {}
|
||||
msg => error!("No implemented: {:#?}", msg),
|
||||
}
|
||||
}
|
||||
Err(err) => error!("Unable to connect to {url}: {err}"),
|
||||
}
|
||||
|
Reference in New Issue
Block a user