diff options
Diffstat (limited to 'protohackers/0-smoke-test')
-rw-r--r-- | protohackers/0-smoke-test/flake.lock | 25 | ||||
-rw-r--r-- | protohackers/0-smoke-test/flake.nix | 24 | ||||
-rw-r--r-- | protohackers/0-smoke-test/go.mod | 3 | ||||
-rw-r--r-- | protohackers/0-smoke-test/main.go | 42 |
4 files changed, 94 insertions, 0 deletions
diff --git a/protohackers/0-smoke-test/flake.lock b/protohackers/0-smoke-test/flake.lock new file mode 100644 index 0000000..6d89d83 --- /dev/null +++ b/protohackers/0-smoke-test/flake.lock @@ -0,0 +1,25 @@ +{ + "nodes": { + "nixpkgs": { + "locked": { + "lastModified": 1661353537, + "narHash": "sha256-1E2IGPajOsrkR49mM5h55OtYnU0dGyre6gl60NXKITE=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "0e304ff0d9db453a4b230e9386418fd974d5804a", + "type": "github" + }, + "original": { + "id": "nixpkgs", + "type": "indirect" + } + }, + "root": { + "inputs": { + "nixpkgs": "nixpkgs" + } + } + }, + "root": "root", + "version": 7 +} diff --git a/protohackers/0-smoke-test/flake.nix b/protohackers/0-smoke-test/flake.nix new file mode 100644 index 0000000..76a6f25 --- /dev/null +++ b/protohackers/0-smoke-test/flake.nix @@ -0,0 +1,24 @@ +{ + description = "Protohackers 0: Smoke test"; + + outputs = { self, nixpkgs }: + let + system = "x86_64-linux"; + pkgs = import nixpkgs { inherit system; }; + in rec + { + packages.x86_64-linux.docker-image = pkgs.dockerTools.buildImage { + name = "smoke-test"; + config = { + Cmd = [ "${packages.x86_64-linux.smoke-test}/bin/0-smoke-test" ]; + }; + }; + packages.x86_64-linux.binary = pkgs.buildGoModule { + pname = "smoke-test"; + version = "0.0.1"; + src = self; + + vendorSha256 = "pQpattmS9VmO3ZIQUFn66az8GSmB4IvYhTTCFn6SUmo="; + }; + }; +} diff --git a/protohackers/0-smoke-test/go.mod b/protohackers/0-smoke-test/go.mod new file mode 100644 index 0000000..7010dd8 --- /dev/null +++ b/protohackers/0-smoke-test/go.mod @@ -0,0 +1,3 @@ +module 0-smoke-test + +go 1.18 diff --git a/protohackers/0-smoke-test/main.go b/protohackers/0-smoke-test/main.go new file mode 100644 index 0000000..213d111 --- /dev/null +++ b/protohackers/0-smoke-test/main.go @@ -0,0 +1,42 @@ +package main + +import ( + "io" + "log" + "net" +) + +func main() { + listener, err := net.Listen("tcp", "0.0.0.0:7000") + if err != nil { + panic(err) + } + + for { + go handle(listener.Accept()) + } +} + +func handle(conn net.Conn, err error) { + if err != nil { + log.Println(err) + return + } + defer conn.Close() + + var buf [1024]byte + for { + n, readErr := conn.Read(buf[:]) + log.Println("writing ", string(buf[:n])) + _, writeErr := conn.Write(buf[:n]) + if writeErr != nil { + log.Println("error when writing", err) + } + if readErr != nil { + if readErr != io.EOF { + log.Println("error when reading", err) + } + return + } + } +} |