mirror of
https://github.com/mii443/encrypt.git
synced 2025-08-22 15:05:33 +00:00
add server and client value passing
This commit is contained in:
4
client.gpsl
Normal file
4
client.gpsl
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
fn main() {
|
||||||
|
send("test");
|
||||||
|
println(receive());
|
||||||
|
}
|
3
server.gpsl
Normal file
3
server.gpsl
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
fn main() {
|
||||||
|
send(receive());
|
||||||
|
}
|
@ -2,7 +2,7 @@ use serde::Deserializer;
|
|||||||
|
|
||||||
use crate::gpsl::{permission::Permission, variable::Variable};
|
use crate::gpsl::{permission::Permission, variable::Variable};
|
||||||
use std::{
|
use std::{
|
||||||
io::Read,
|
io::{BufRead, BufReader, Read, Write},
|
||||||
net::TcpStream,
|
net::TcpStream,
|
||||||
sync::{Arc, Mutex},
|
sync::{Arc, Mutex},
|
||||||
};
|
};
|
||||||
@ -71,6 +71,7 @@ pub const STD_FUNC: fn(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
"receive" => {
|
"receive" => {
|
||||||
|
println!("Waiting for client...");
|
||||||
let mut buffer = String::default();
|
let mut buffer = String::default();
|
||||||
let data = data.unwrap();
|
let data = data.unwrap();
|
||||||
let mut stream = data.stream.lock().unwrap();
|
let mut stream = data.stream.lock().unwrap();
|
||||||
@ -79,12 +80,31 @@ pub const STD_FUNC: fn(
|
|||||||
Some(stream) => stream,
|
Some(stream) => stream,
|
||||||
None => panic!("Cannot access to tcp stream"),
|
None => panic!("Cannot access to tcp stream"),
|
||||||
};
|
};
|
||||||
stream.read_to_string(&mut buffer).unwrap();
|
let mut reader = BufReader::new(stream);
|
||||||
|
reader.read_line(&mut buffer).unwrap();
|
||||||
ExternalFuncReturn {
|
ExternalFuncReturn {
|
||||||
status: ExternalFuncStatus::SUCCESS,
|
status: ExternalFuncStatus::SUCCESS,
|
||||||
value: Some(serde_json::from_str(&buffer).unwrap()),
|
value: Some(serde_json::from_str(&buffer).unwrap()),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
"send" => {
|
||||||
|
let data = data.unwrap();
|
||||||
|
let mut stream = data.stream.lock().unwrap();
|
||||||
|
|
||||||
|
let stream = match &mut *stream {
|
||||||
|
Some(stream) => stream,
|
||||||
|
None => panic!("Cannot access to tcp stream"),
|
||||||
|
};
|
||||||
|
|
||||||
|
let value = serde_json::to_string(&args[0]).unwrap();
|
||||||
|
|
||||||
|
stream.write_fmt(format_args!("{}\n", value)).unwrap();
|
||||||
|
|
||||||
|
ExternalFuncReturn {
|
||||||
|
status: ExternalFuncStatus::SUCCESS,
|
||||||
|
value: None,
|
||||||
|
}
|
||||||
|
}
|
||||||
_ => ExternalFuncReturn {
|
_ => ExternalFuncReturn {
|
||||||
status: ExternalFuncStatus::NOTFOUND,
|
status: ExternalFuncStatus::NOTFOUND,
|
||||||
value: None,
|
value: None,
|
||||||
|
21
src/main.rs
21
src/main.rs
@ -56,6 +56,9 @@ struct Args {
|
|||||||
|
|
||||||
#[clap(short, long, value_parser)]
|
#[clap(short, long, value_parser)]
|
||||||
file: String,
|
file: String,
|
||||||
|
|
||||||
|
#[clap(short, long, value_parser)]
|
||||||
|
ip: Option<String>,
|
||||||
}
|
}
|
||||||
|
|
||||||
fn listen_tcp_server(port: u16) -> TcpStream {
|
fn listen_tcp_server(port: u16) -> TcpStream {
|
||||||
@ -63,7 +66,6 @@ fn listen_tcp_server(port: u16) -> TcpStream {
|
|||||||
for stream in listener.incoming() {
|
for stream in listener.incoming() {
|
||||||
match stream {
|
match stream {
|
||||||
Ok(stream) => {
|
Ok(stream) => {
|
||||||
println!("New connection: {}", stream.peer_addr().unwrap());
|
|
||||||
return stream;
|
return stream;
|
||||||
}
|
}
|
||||||
Err(e) => {
|
Err(e) => {
|
||||||
@ -76,13 +78,8 @@ fn listen_tcp_server(port: u16) -> TcpStream {
|
|||||||
|
|
||||||
fn main() {
|
fn main() {
|
||||||
let args = Args::parse();
|
let args = Args::parse();
|
||||||
let s = serde_json::to_string(&Variable::Number { value: 0 });
|
|
||||||
println!("{}", s.unwrap());
|
|
||||||
|
|
||||||
match &*args.mode {
|
let mut source = Source::new(fs::read_to_string(&(args.file)).expect("Cannot read file."));
|
||||||
"gpsl" => {
|
|
||||||
let mut source =
|
|
||||||
Source::new(fs::read_to_string(&(args.file)).expect("Cannot read file."));
|
|
||||||
|
|
||||||
let mut tokenizer = Tokenizer::new();
|
let mut tokenizer = Tokenizer::new();
|
||||||
tokenizer.tokenize(&mut source).unwrap();
|
tokenizer.tokenize(&mut source).unwrap();
|
||||||
@ -92,7 +89,12 @@ fn main() {
|
|||||||
local_vars: HashMap::new(),
|
local_vars: HashMap::new(),
|
||||||
};
|
};
|
||||||
|
|
||||||
let stream = listen_tcp_server(8080);
|
let stream = match &*args.mode {
|
||||||
|
"server" => listen_tcp_server(8080),
|
||||||
|
"client" => TcpStream::connect(args.ip.unwrap()).unwrap(),
|
||||||
|
_ => panic!("Cannot start tcp stream."),
|
||||||
|
};
|
||||||
|
|
||||||
let mut gpsl = GPSL::new(
|
let mut gpsl = GPSL::new(
|
||||||
source,
|
source,
|
||||||
Some(parser.functions().unwrap()),
|
Some(parser.functions().unwrap()),
|
||||||
@ -103,7 +105,4 @@ fn main() {
|
|||||||
if let Err(err) = res {
|
if let Err(err) = res {
|
||||||
println!("Error: {:?}", err);
|
println!("Error: {:?}", err);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
_ => {}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user