From f0b7401ed75b55a8f29aa4a4ba1342d5981e111f Mon Sep 17 00:00:00 2001 From: Richard Date: Sun, 26 Nov 2023 21:19:00 +0100 Subject: [PATCH] pest initial setup --- main.go | 4 +++- pest.go | 58 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 61 insertions(+), 1 deletion(-) create mode 100644 pest.go diff --git a/main.go b/main.go index 96dca26..9ec21a2 100644 --- a/main.go +++ b/main.go @@ -12,7 +12,7 @@ type Server interface { func main() { var challenge int - flag.IntVar(&challenge, "challenge",10, "Challenge number") + flag.IntVar(&challenge, "challenge",11, "Challenge number") flag.Parse() var port uint16 @@ -41,6 +41,8 @@ func main() { server = NewJobServer(port); case 10: server = NewVcsServer(port); + case 11: + server = NewPestServer(port); default: fmt.Printf("Unknown challenge\n") os.Exit(1) diff --git a/pest.go b/pest.go new file mode 100644 index 0000000..642135e --- /dev/null +++ b/pest.go @@ -0,0 +1,58 @@ +package main + +import ( +"net" +"os" +"fmt" +) + + +type PestServer struct { + port uint16 +} + +func NewPestServer(port uint16) *PestServer { + return &PestServer{ + port, + } +} + +type PestSession struct{ + con net.Conn +} + +func NewPestSession(con net.Conn) *PestSession { + return &PestSession{ + con, + } +} + +func (s *PestServer) Run() { + addr := fmt.Sprintf("0.0.0.0:%d", s.port) + server, err := net.Listen("tcp", addr) + if err != nil { + fmt.Println("Error listening:", err.Error()) + os.Exit(1) + } + defer server.Close() + fmt.Println("PestServer waiting for client...") + for { + connection, err := server.Accept() + if err != nil { + fmt.Println("Error accepting: ", err.Error()) + os.Exit(1) + } + fmt.Println("client connected") + s.processClient(connection) + } +} + +func (s *PestServer) processClient(con net.Conn) { + session := NewPestSession(con) + go session.pestHandler() +} + +func (s *PestSession) pestHandler() { + +} +