This commit is contained in:
Bastian Gruber 2023-04-19 14:17:35 +02:00
parent 795dc9ae5c
commit 4d36de84f0
No known key found for this signature in database
GPG key ID: BE9F8C772B188CBF
6 changed files with 5 additions and 74 deletions

View file

@ -1 +0,0 @@
/target/

View file

@ -1 +0,0 @@
/target/

View file

@ -1,9 +1,8 @@
[package]
name = "problem_01"
name = "problem_02"
version = "0.1.0"
edition = "2021"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[dependencies]
env_logger = "0.9.0"
log = "0.4.0"
tokio = { version = "1.27.0", features = ["full"] }

View file

@ -1,11 +0,0 @@
FROM rust:latest as builder
RUN apt-get update && apt-get -y install ca-certificates cmake musl-tools libssl-dev && rm -rf /var/lib/apt/lists/*
COPY . .
RUN rustup default stable && rustup update
RUN rustup target add x86_64-unknown-linux-musl
ENV PKG_CONFIG_ALLOW_CROSS=1
RUN cargo build --target x86_64-unknown-linux-musl --release
FROM scratch
COPY --from=builder /target/x86_64-unknown-linux-musl/release/problem_01 .
EXPOSE 8080
CMD ["/problem_01"]

View file

@ -1,20 +0,0 @@
# fly.toml app configuration file generated for restless-bush-123 on 2023-04-19T13:36:26+02:00
#
# See https://fly.io/docs/reference/configuration/ for information about how to use this file.
#
app = "restless-bush-123"
primary_region = "ams"
[experimental]
auto_rollback = true
[env]
ECHO_PORT = "8080"
[[services]]
protocol = "tcp"
internal_port = 8080
[[services.ports]]
port = 8080

View file

@ -1,38 +1,3 @@
use tokio::io::{AsyncReadExt, AsyncWriteExt};
use tokio::net::TcpListener;
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
env_logger::init();
let listener = TcpListener::bind("0.0.0.0:8080").await?;
log::info!("Start TCP server");
loop {
let (mut socket, _) = listener.accept().await?;
tokio::spawn(async move {
let mut buf = [0; 1024];
loop {
let n = match socket.read(&mut buf).await {
Ok(n) if n == 0 => {
log::info!("Receiving echo: {}", n);
return;
}
Ok(n) => {
log::info!("Receiving echo: {}", n);
n
}
Err(e) => {
log::error!("failed to read from socket; err = {:?}", e);
return;
}
};
if let Err(e) = socket.write_all(&buf[0..n]).await {
log::error!("failed to write to socket; err = {:?}", e);
return;
}
}
});
}
fn main() {
println!("Hello, world!");
}