StoreBackEnd/pkg/network/ServerUnicast.go
2022-03-12 15:57:27 +01:00

58 lines
1.1 KiB
Go

package network
import (
"StoreBackEnd/pkg/protocol/managers"
"bufio"
"fmt"
"net"
)
type ServerUnicast struct {
Network string
Port int
ReqManager *managers.RequestManager
}
func (server ServerUnicast) Run() {
listen, err := net.Listen(server.Network, fmt.Sprintf("0.0.0.0:%d", server.Port)) // "tcp", "0.0.0.0:58000"
if err != nil {
fmt.Printf("Can't start server : %s\n", err)
return
}
// Attente connexion du FileFrontEnd
con, err := listen.Accept()
print("connection ok")
if err != nil {
fmt.Printf("Error while accepting client : %s\n", err)
return
} else {
for { // TODO : Extraire cette partie de code
reader := bufio.NewReader(con)
line, err := reader.ReadString('\n')
println("[REQUEST] " + line)
if err != nil {
return
}
response := server.ReqManager.Execute(line, reader)
if response == nil {
break
} else {
println("[RESPONSE] : ", response.Cmd)
_, _ = con.Write([]byte(response.Cmd)) // TODO : ATTENTION laisser les \n
if response.Write != nil {
response.Write(bufio.NewWriter(con))
}
}
}
con.Close()
}
listen.Close()
}