PD for chapter 11

master
peshwar9 3 years ago
parent 12bab7f7bb
commit 99a76dd2df

BIN
chapter11/.DS_Store vendored

Binary file not shown.

Binary file not shown.

@ -0,0 +1,5 @@
# This file is automatically @generated by Cargo.
# It is not intended for manual editing.
[[package]]
name = "tcpproxy"
version = "0.1.0"

@ -0,0 +1,9 @@
[package]
name = "tcpproxy"
version = "0.1.0"
authors = ["peshwar9"]
edition = "2018"
[dependencies]

@ -0,0 +1,125 @@
use std::io::{Read, Write};
use std::net::TcpListener;
use std::net::{IpAddr, Ipv4Addr, SocketAddr};
use std::str;
use std::str::FromStr;
use std::string::ParseError;
#[derive(Debug)]
struct RequestLine {
method: Option<String>,
path: Option<String>,
protocol: Option<String>,
}
impl RequestLine {
fn method(&self) -> String {
if let Some(method) = &self.method {
method.to_string()
} else {
String::from("")
}
}
fn path(&self) -> String {
if let Some(path) = &self.path {
path.to_string()
} else {
String::from("")
}
}
fn get_order_number(&self) -> String {
let path = self.path();
let path_tokens: Vec<String> = path.split("/").map(|s| s.parse().unwrap()).collect();
path_tokens[path_tokens.len() - 1].clone()
}
}
impl FromStr for RequestLine {
type Err = ParseError;
fn from_str(msg: &str) -> Result<Self, Self::Err> {
let mut msg_tokens = msg.split_ascii_whitespace();
let method = match msg_tokens.next() {
Some(token) => Some(String::from(token)),
None => None,
};
let path = match msg_tokens.next() {
Some(token) => Some(String::from(token)),
None => None,
};
let protocol = match msg_tokens.next() {
Some(token) => Some(String::from(token)),
None => None,
};
Ok(Self {
method: method,
path: path,
protocol: protocol,
})
}
}
fn main() {
// Start the origin server
let port = 3000;
let socket_addr = SocketAddr::new(IpAddr::V4(Ipv4Addr::new(127, 0, 0, 1)), port);
let connection_listener = TcpListener::bind(socket_addr).unwrap();
println!("Running on port: {}", port);
for stream in connection_listener.incoming() {
// Read the first line of incoming HTTP request
// and convert it into RequestLine struct
let mut stream = stream.unwrap();
let mut buffer = [0; 200];
stream.read(&mut buffer).unwrap();
let req_line = "";
let string_request_line =
if let Some(line) = str::from_utf8(&buffer).unwrap().lines().next() {
line
} else {
println!("Invalid request line received");
req_line
};
let req_line = RequestLine::from_str(string_request_line).unwrap();
// Construct the HTTP response string and write it to the TCP stream
let html_response_string;
let order_status;
println!("len is {}", req_line.get_order_number().len());
if req_line.method() != "GET"
|| !req_line.path().starts_with("/order/status")
|| req_line.get_order_number().len() == 0
{
if req_line.get_order_number().len() == 0 {
order_status = format!("Please provide valid order number");
} else {
order_status = format!("Sorry,this page is not found");
}
html_response_string = format!(
"HTTP/1.1 404 Not Found\nContent-Type: text/html\nContent-Length:{}\n\n{}",
order_status.len(),
order_status
);
} else {
order_status = format!(
"Order status for order number {} is: Shipped\n",
req_line.get_order_number()
);
html_response_string = format!(
"HTTP/1.1 200 OK\nContent-Type: text/html\nContent-Length:{}\n\n{}",
order_status.len(),
order_status
);
}
println!(
"\nGoing to respond to client with:\n\n{}",
html_response_string
);
stream.write(html_response_string.as_bytes()).unwrap();
}
}

@ -0,0 +1,77 @@
use std::env;
use std::io::{Read, Write};
use std::net::{TcpListener, TcpStream};
use std::process::exit;
use std::thread;
fn main() {
// Accept commandline parameters for proxy_stream and origin_stream
let args: Vec<_> = env::args().collect();
if args.len() < 3 {
eprintln!("Please provide proxy-from and proxy-to addresses");
exit(0);
}
let proxy_server = &args[1];
let origin_server = &args[2];
// Start a socket server on proxy_stream
let proxy_listener;
if let Ok(proxy) = TcpListener::bind(proxy_server) {
proxy_listener = proxy;
let addr = proxy_listener.local_addr().unwrap().ip();
let port = proxy_listener.local_addr().unwrap().port();
if let Err(_err) = TcpStream::connect(origin_server) {
println!("Please re-start the origin server");
exit(0);
}
println!("Running on Addr:{}, Port:{}\n", addr, port);
} else {
eprintln!("Unable to bind to specified proxy port");
exit(0);
}
let mut thread_handles = Vec::new();
// Listen for incoming connections from proxy_server and read byte stream
for proxy_stream in proxy_listener.incoming() {
let mut proxy_stream = proxy_stream.expect("Error in incoming TCP connection");
// Establish a new TCP connection to origin_stream
let mut origin_stream =
TcpStream::connect(origin_server).expect("Please re-start the origin server");
let handle =
thread::spawn(move || handle_connection(&mut proxy_stream, &mut origin_stream));
thread_handles.push(handle);
}
for handle in thread_handles {
handle.join().expect("Unable to join child thread");
}
}
fn handle_connection(proxy_stream: &mut TcpStream, origin_stream: &mut TcpStream) {
let mut in_buffer: Vec<u8> = vec![0; 200];
let mut out_buffer: Vec<u8> = vec![0; 200];
// Read incoming request to proxy_stream
if let Err(err) = proxy_stream.read(&mut in_buffer) {
println!("Error in reading from incoming proxy stream: {}", err);
} else {
println!(
"1: Incoming client request: {}",
String::from_utf8_lossy(&in_buffer)
);
}
// Write the byte stream to origin_stream
let _ = origin_stream.write(&mut in_buffer).unwrap();
println!("2: Forwarding request to origin server\n");
// Read response from the backend server
let _ = origin_stream.read(&mut out_buffer).unwrap();
println!(
"3: Received response from origin server: {}",
String::from_utf8_lossy(&out_buffer)
);
// Write response back to the proxy client
let _ = proxy_stream.write(&mut out_buffer).unwrap();
println!("4: Forwarding response back to client");
}

@ -0,0 +1,3 @@
fn main() {
println!("Hello");
}

@ -0,0 +1 @@
{"rustc_fingerprint":4503571881771466578,"outputs":{"1164083562126845933":["rustc 1.43.0 (4fb7144ed 2020-04-20)\nbinary: rustc\ncommit-hash: 4fb7144ed159f94491249e86d5bbd033b5d60550\ncommit-date: 2020-04-20\nhost: x86_64-apple-darwin\nrelease: 1.43.0\nLLVM version: 9.0\n",""],"7064757342655340577":["___\nlib___.rlib\nlib___.dylib\nlib___.dylib\nlib___.a\nlib___.dylib\n/Users/prabhueshwarla/.rustup/toolchains/stable-x86_64-apple-darwin\ndebug_assertions\nproc_macro\ntarget_arch=\"x86_64\"\ntarget_endian=\"little\"\ntarget_env=\"\"\ntarget_family=\"unix\"\ntarget_feature=\"fxsr\"\ntarget_feature=\"sse\"\ntarget_feature=\"sse2\"\ntarget_feature=\"sse3\"\ntarget_feature=\"ssse3\"\ntarget_os=\"macos\"\ntarget_pointer_width=\"64\"\ntarget_vendor=\"apple\"\nunix\n",""]},"successes":{}}

@ -0,0 +1 @@
{"rustc_fingerprint":4503571881771466578,"outputs":{"4476964694761187371":["___\nlib___.rlib\nlib___.dylib\nlib___.dylib\nlib___.a\nlib___.dylib\n/Users/prabhueshwarla/.rustup/toolchains/stable-x86_64-apple-darwin\ndebug_assertions\nproc_macro\ntarget_arch=\"x86_64\"\ntarget_endian=\"little\"\ntarget_env=\"\"\ntarget_family=\"unix\"\ntarget_feature=\"fxsr\"\ntarget_feature=\"sse\"\ntarget_feature=\"sse2\"\ntarget_feature=\"sse3\"\ntarget_feature=\"ssse3\"\ntarget_os=\"macos\"\ntarget_pointer_width=\"64\"\ntarget_vendor=\"apple\"\nunix\n",""],"1164083562126845933":["rustc 1.43.0 (4fb7144ed 2020-04-20)\nbinary: rustc\ncommit-hash: 4fb7144ed159f94491249e86d5bbd033b5d60550\ncommit-date: 2020-04-20\nhost: x86_64-apple-darwin\nrelease: 1.43.0\nLLVM version: 9.0\n",""]},"successes":{}}

@ -0,0 +1 @@
{"rustc":12217307662193597186,"features":"[]","target":4144718664990317059,"profile":14891217944882224483,"path":1971126846978498487,"deps":[],"local":[{"CheckDepInfo":{"dep_info":"debug/.fingerprint/tcpproxy-07fe34c963205a5d/dep-bin-origin-07fe34c963205a5d"}}],"rustflags":[],"metadata":13779719443416291531}

@ -0,0 +1 @@
{"rustc":12217307662193597186,"features":"[]","target":4144718664990317059,"profile":1647870076477133176,"path":1971126846978498487,"deps":[],"local":[{"CheckDepInfo":{"dep_info":"debug/.fingerprint/tcpproxy-5c775a8d016ab106/dep-test-bin-origin-5c775a8d016ab106"}}],"rustflags":[],"metadata":13779719443416291531}

@ -0,0 +1 @@
{"rustc":12217307662193597186,"features":"[]","target":5317751864117190695,"profile":1647870076477133176,"path":1036222786711178230,"deps":[],"local":[{"CheckDepInfo":{"dep_info":"debug/.fingerprint/tcpproxy-bc5b79807d74c314/dep-test-bin-tcpproxy-bc5b79807d74c314"}}],"rustflags":[],"metadata":13779719443416291531}

@ -0,0 +1 @@
{"rustc":12217307662193597186,"features":"[]","target":14075220824509603138,"profile":1647870076477133176,"path":7826526257089709771,"deps":[],"local":[{"CheckDepInfo":{"dep_info":"debug/.fingerprint/tcpproxy-e2b40a5fbef4cfc6/dep-test-bin-proxy-e2b40a5fbef4cfc6"}}],"rustflags":[],"metadata":13779719443416291531}

@ -0,0 +1 @@
{"rustc":12217307662193597186,"features":"[]","target":14075220824509603138,"profile":14891217944882224483,"path":7826526257089709771,"deps":[],"local":[{"CheckDepInfo":{"dep_info":"debug/.fingerprint/tcpproxy-f38f9f2c2cdd137a/dep-bin-proxy-f38f9f2c2cdd137a"}}],"rustflags":[],"metadata":13779719443416291531}

@ -0,0 +1 @@
{"rustc":12217307662193597186,"features":"[]","target":5317751864117190695,"profile":14891217944882224483,"path":1036222786711178230,"deps":[],"local":[{"CheckDepInfo":{"dep_info":"debug/.fingerprint/tcpproxy-f6c45a41f08d6bd4/dep-bin-tcpproxy-f6c45a41f08d6bd4"}}],"rustflags":[],"metadata":13779719443416291531}

@ -0,0 +1,5 @@
/Users/prabhueshwarla/rust/author/packt/prod/chapter11/tcpproxy/target/rls/debug/deps/origin-07fe34c963205a5d.rmeta: src/bin/origin.rs
/Users/prabhueshwarla/rust/author/packt/prod/chapter11/tcpproxy/target/rls/debug/deps/origin-07fe34c963205a5d.d: src/bin/origin.rs
src/bin/origin.rs:

@ -0,0 +1,5 @@
/Users/prabhueshwarla/rust/author/packt/prod/chapter11/tcpproxy/target/rls/debug/deps/origin-5c775a8d016ab106.rmeta: src/bin/origin.rs
/Users/prabhueshwarla/rust/author/packt/prod/chapter11/tcpproxy/target/rls/debug/deps/origin-5c775a8d016ab106.d: src/bin/origin.rs
src/bin/origin.rs:

@ -0,0 +1,5 @@
/Users/prabhueshwarla/rust/author/packt/prod/chapter11/tcpproxy/target/rls/debug/deps/proxy-e2b40a5fbef4cfc6.rmeta: src/bin/proxy.rs
/Users/prabhueshwarla/rust/author/packt/prod/chapter11/tcpproxy/target/rls/debug/deps/proxy-e2b40a5fbef4cfc6.d: src/bin/proxy.rs
src/bin/proxy.rs:

@ -0,0 +1,5 @@
/Users/prabhueshwarla/rust/author/packt/prod/chapter11/tcpproxy/target/rls/debug/deps/proxy-f38f9f2c2cdd137a.rmeta: src/bin/proxy.rs
/Users/prabhueshwarla/rust/author/packt/prod/chapter11/tcpproxy/target/rls/debug/deps/proxy-f38f9f2c2cdd137a.d: src/bin/proxy.rs
src/bin/proxy.rs:

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

@ -0,0 +1 @@
{"config":{"output_file":null,"full_docs":false,"pub_only":false,"reachable_only":false,"distro_crate":false,"signatures":false,"borrow_data":false},"version":"0.19.0","compilation":{"directory":"/Users/prabhueshwarla/rust/author/packt/prod/chapter11/tcpproxy","program":"/Users/prabhueshwarla/.rustup/toolchains/stable-x86_64-apple-darwin/bin/rls","arguments":[],"output":"/Users/prabhueshwarla/rust/author/packt/prod/chapter11/tcpproxy/target/rls/debug/deps/libtcpproxy-f6c45a41f08d6bd4.rmeta"},"prelude":{"crate_id":{"name":"tcpproxy","disambiguator":[6847553993367729282,13235099617134863828]},"crate_root":"src","external_crates":[{"file_name":"/Users/prabhueshwarla/rust/author/packt/prod/chapter11/tcpproxy/src/main.rs","num":1,"id":{"name":"std","disambiguator":[9054049529852543209,5756799355281213394]}},{"file_name":"/Users/prabhueshwarla/rust/author/packt/prod/chapter11/tcpproxy/src/main.rs","num":2,"id":{"name":"core","disambiguator":[649336883146201894,3308516238322163950]}},{"file_name":"/Users/prabhueshwarla/rust/author/packt/prod/chapter11/tcpproxy/src/main.rs","num":3,"id":{"name":"compiler_builtins","disambiguator":[1154582834482060450,16344204990542480537]}},{"file_name":"/Users/prabhueshwarla/rust/author/packt/prod/chapter11/tcpproxy/src/main.rs","num":4,"id":{"name":"rustc_std_workspace_core","disambiguator":[9212379515936652129,17808485286264063370]}},{"file_name":"/Users/prabhueshwarla/rust/author/packt/prod/chapter11/tcpproxy/src/main.rs","num":5,"id":{"name":"alloc","disambiguator":[13327579764654116281,14306064291630426625]}},{"file_name":"/Users/prabhueshwarla/rust/author/packt/prod/chapter11/tcpproxy/src/main.rs","num":6,"id":{"name":"libc","disambiguator":[17773251733480933597,18239998491734583498]}},{"file_name":"/Users/prabhueshwarla/rust/author/packt/prod/chapter11/tcpproxy/src/main.rs","num":7,"id":{"name":"unwind","disambiguator":[8567743581675804787,15655200220621371766]}},{"file_name":"/Users/prabhueshwarla/rust/author/packt/prod/chapter11/tcpproxy/src/main.rs","num":8,"id":{"name":"cfg_if","disambiguator":[15115520782807859583,9813785573872252500]}},{"file_name":"/Users/prabhueshwarla/rust/author/packt/prod/chapter11/tcpproxy/src/main.rs","num":9,"id":{"name":"backtrace","disambiguator":[1572943810868196833,3902827232285166711]}},{"file_name":"/Users/prabhueshwarla/rust/author/packt/prod/chapter11/tcpproxy/src/main.rs","num":10,"id":{"name":"rustc_demangle","disambiguator":[6290371580101917419,15395902185345451181]}},{"file_name":"/Users/prabhueshwarla/rust/author/packt/prod/chapter11/tcpproxy/src/main.rs","num":11,"id":{"name":"backtrace_sys","disambiguator":[2934540361684350378,924291485644145262]}},{"file_name":"/Users/prabhueshwarla/rust/author/packt/prod/chapter11/tcpproxy/src/main.rs","num":12,"id":{"name":"hashbrown","disambiguator":[9277678418438935259,15657907931940784437]}},{"file_name":"/Users/prabhueshwarla/rust/author/packt/prod/chapter11/tcpproxy/src/main.rs","num":13,"id":{"name":"rustc_std_workspace_alloc","disambiguator":[5423566938548125357,18340948646597872466]}},{"file_name":"/Users/prabhueshwarla/rust/author/packt/prod/chapter11/tcpproxy/src/main.rs","num":14,"id":{"name":"panic_unwind","disambiguator":[489208416821938960,3305070343783546974]}}],"span":{"file_name":"src/main.rs","byte_start":0,"byte_end":36,"line_start":1,"line_end":3,"column_start":1,"column_end":2}},"imports":[],"defs":[{"kind":"Mod","id":{"krate":0,"index":0},"span":{"file_name":"src/main.rs","byte_start":0,"byte_end":36,"line_start":1,"line_end":3,"column_start":1,"column_end":2},"name":"","qualname":"::","value":"src/main.rs","parent":null,"children":[{"krate":0,"index":1},{"krate":0,"index":2},{"krate":0,"index":3}],"decl_id":null,"docs":"","sig":null,"attributes":[]},{"kind":"Function","id":{"krate":0,"index":3},"span":{"file_name":"src/main.rs","byte_start":3,"byte_end":7,"line_start":1,"line_end":1,"column_start":4,"column_end":8},"name":"main","qualname":"::main","value":"fn () -> ()","parent":null,"children":[],"decl_id":null,"docs":"","sig":null,"attributes":[]}],"impls":[],"refs":[],"macro_refs":[],"relations":[]}

@ -0,0 +1,5 @@
/Users/prabhueshwarla/rust/author/packt/prod/chapter11/tcpproxy/target/rls/debug/deps/tcpproxy-bc5b79807d74c314.rmeta: src/main.rs
/Users/prabhueshwarla/rust/author/packt/prod/chapter11/tcpproxy/target/rls/debug/deps/tcpproxy-bc5b79807d74c314.d: src/main.rs
src/main.rs:

@ -0,0 +1,5 @@
/Users/prabhueshwarla/rust/author/packt/prod/chapter11/tcpproxy/target/rls/debug/deps/tcpproxy-f6c45a41f08d6bd4.rmeta: src/main.rs
/Users/prabhueshwarla/rust/author/packt/prod/chapter11/tcpproxy/target/rls/debug/deps/tcpproxy-f6c45a41f08d6bd4.d: src/main.rs
src/main.rs:

@ -0,0 +1,5 @@
# This file is automatically @generated by Cargo.
# It is not intended for manual editing.
[[package]]
name = "tcpudp"
version = "0.1.0"

@ -0,0 +1,8 @@
[package]
name = "tcpudp"
version = "0.1.0"
authors = ["peshwar9"]
edition = "2018"
[dependencies]

@ -0,0 +1,11 @@
use std::io::{Read, Write};
use std::net::TcpStream;
use std::str;
fn main() {
let mut stream = TcpStream::connect("localhost:3000").unwrap();
let msg_to_send = "Hello from TCP client";
stream.write(msg_to_send.as_bytes()).unwrap();
let mut buffer = [0; 200];
stream.read(&mut buffer).unwrap();
println!("Got echo back from server:{:?}", str::from_utf8(&buffer));
}

@ -0,0 +1,14 @@
use std::io::{Read, Write};
use std::net::TcpListener;
fn main() {
let connection_listener = TcpListener::bind("127.0.0.1:3000").unwrap();
println!("Running on port 3000");
for stream in connection_listener.incoming() {
let mut stream = stream.unwrap();
println!("Connection established");
let mut buffer = [0; 100];
stream.read(&mut buffer).unwrap();
println!("Received from client {}", String::from_utf8_lossy(&buffer));
stream.write(&mut buffer).unwrap();
}
}

@ -0,0 +1,16 @@
use std::net::UdpSocket;
fn main() {
// Create a local UDP socket
let socket = UdpSocket::bind("0.0.0.0:0").expect("Unable to bind to socket");
// Connect the socket to a remote socket
socket
.connect("127.0.0.1:3000")
.expect("Could not connect to UDP server");
println!("socket peer addr is {:?}", socket.peer_addr());
// Send a datagram to the remote socket
socket
.send("Hello: sent using send() call".as_bytes())
.expect("Unable to send bytes");
}

@ -0,0 +1,30 @@
use std::net::UdpSocket;
use std::str;
use std::thread;
fn main() {
let socket = UdpSocket::bind("127.0.0.1:3000").expect("Unable to bind to port");
let mut buffer = [0; 1024];
loop {
let socket_new = socket.try_clone().expect("Unable to clone socket");
match socket_new.recv_from(&mut buffer) {
Ok((num_bytes, src_addr)) => {
thread::spawn(move || {
let send_buffer = &mut buffer[..num_bytes];
println!(
"Received from client:{}",
str::from_utf8(send_buffer).unwrap()
);
let response_string =
format!("Received this: {}", String::from_utf8_lossy(send_buffer));
socket_new
.send_to(&response_string.as_bytes(), &src_addr)
.expect("error in sending datagram to remote socket");
});
}
Err(err) => {
println!("Error in receiving datagrams over UDP: {}", err);
}
}
}
}

@ -0,0 +1,5 @@
fn main() {
}

@ -0,0 +1 @@
{"rustc_fingerprint":4503571881771466578,"outputs":{"7064757342655340577":["___\nlib___.rlib\nlib___.dylib\nlib___.dylib\nlib___.a\nlib___.dylib\n/Users/prabhueshwarla/.rustup/toolchains/stable-x86_64-apple-darwin\ndebug_assertions\nproc_macro\ntarget_arch=\"x86_64\"\ntarget_endian=\"little\"\ntarget_env=\"\"\ntarget_family=\"unix\"\ntarget_feature=\"fxsr\"\ntarget_feature=\"sse\"\ntarget_feature=\"sse2\"\ntarget_feature=\"sse3\"\ntarget_feature=\"ssse3\"\ntarget_os=\"macos\"\ntarget_pointer_width=\"64\"\ntarget_vendor=\"apple\"\nunix\n",""],"1164083562126845933":["rustc 1.43.0 (4fb7144ed 2020-04-20)\nbinary: rustc\ncommit-hash: 4fb7144ed159f94491249e86d5bbd033b5d60550\ncommit-date: 2020-04-20\nhost: x86_64-apple-darwin\nrelease: 1.43.0\nLLVM version: 9.0\n",""]},"successes":{}}

@ -0,0 +1 @@
{"rustc_fingerprint":4503571881771466578,"outputs":{"1164083562126845933":["rustc 1.43.0 (4fb7144ed 2020-04-20)\nbinary: rustc\ncommit-hash: 4fb7144ed159f94491249e86d5bbd033b5d60550\ncommit-date: 2020-04-20\nhost: x86_64-apple-darwin\nrelease: 1.43.0\nLLVM version: 9.0\n",""],"4476964694761187371":["___\nlib___.rlib\nlib___.dylib\nlib___.dylib\nlib___.a\nlib___.dylib\n/Users/prabhueshwarla/.rustup/toolchains/stable-x86_64-apple-darwin\ndebug_assertions\nproc_macro\ntarget_arch=\"x86_64\"\ntarget_endian=\"little\"\ntarget_env=\"\"\ntarget_family=\"unix\"\ntarget_feature=\"fxsr\"\ntarget_feature=\"sse\"\ntarget_feature=\"sse2\"\ntarget_feature=\"sse3\"\ntarget_feature=\"ssse3\"\ntarget_os=\"macos\"\ntarget_pointer_width=\"64\"\ntarget_vendor=\"apple\"\nunix\n",""]},"successes":{}}

@ -0,0 +1 @@
{"rustc":12217307662193597186,"features":"[]","target":16947274266887903966,"profile":1647870076477133176,"path":1036222786711178230,"deps":[],"local":[{"CheckDepInfo":{"dep_info":"debug/.fingerprint/tcpudp-1018172d1283bb75/dep-test-bin-tcpudp-1018172d1283bb75"}}],"rustflags":[],"metadata":13779719443416291531}

@ -0,0 +1 @@
{"rustc":12217307662193597186,"features":"[]","target":5468234331131689689,"profile":1647870076477133176,"path":14924045246866494915,"deps":[],"local":[{"CheckDepInfo":{"dep_info":"debug/.fingerprint/tcpudp-14afba0cad5e53ac/dep-test-bin-tcp_server-14afba0cad5e53ac"}}],"rustflags":[],"metadata":13779719443416291531}

@ -0,0 +1 @@
{"rustc":12217307662193597186,"features":"[]","target":5468234331131689689,"profile":14891217944882224483,"path":14924045246866494915,"deps":[],"local":[{"CheckDepInfo":{"dep_info":"debug/.fingerprint/tcpudp-461e46e3a0bf0909/dep-bin-tcp_server-461e46e3a0bf0909"}}],"rustflags":[],"metadata":13779719443416291531}

@ -0,0 +1 @@
{"rustc":12217307662193597186,"features":"[]","target":8566956652886722598,"profile":14891217944882224483,"path":7054289101709424826,"deps":[],"local":[{"CheckDepInfo":{"dep_info":"debug/.fingerprint/tcpudp-6e238a625ecea237/dep-bin-udp_client-6e238a625ecea237"}}],"rustflags":[],"metadata":13779719443416291531}

Some files were not shown because too many files have changed in this diff Show More

Loading…
Cancel
Save