client-main.go
1 package main 2 3 import ( 4 "fmt" 5 "github.com/VasilisBebis/TCP-AM/pkg/client" 6 "github.com/VasilisBebis/TCP-AM/pkg/messages" 7 ) 8 9 func testMessage(operation byte, numberOutOfBounds bool, listLengthOutOfBounds bool) *messages.Query { 10 if operation == 0 { 11 if numberOutOfBounds { 12 msg := messages.NewQuery(operation, []int8{-5, 1, 4, 6}) 13 return msg 14 } 15 if listLengthOutOfBounds { 16 msg := messages.NewQuery(operation, []int8{1, 2, 3, 4, 5, 4, 3, 2, 1, 1}) 17 return msg 18 } 19 20 msg := messages.NewQuery(operation, []int8{3, 4, 1, -3, 5}) 21 return msg 22 23 } else if operation == 1 { 24 if numberOutOfBounds { 25 msg := messages.NewQuery(operation, []uint8{5, 1, 4, 5, 201}) 26 return msg 27 } 28 if listLengthOutOfBounds { 29 msg := messages.NewQuery(operation, []uint8{1, 1, 2, 3, 4, 5, 4, 3, 2, 1, 1, 2, 3, 4, 5, 4, 3, 2, 1, 1, 1}) 30 return msg 31 } 32 33 msg := messages.NewQuery(operation, []uint8{3, 4, 1, 3, 5}) 34 return msg 35 36 } else if operation == 2 { 37 if numberOutOfBounds { 38 set1 := []uint16{1, 2, 3, 60_001} 39 set2 := []uint16{0, 3, 5, 10_000} 40 msg := messages.NewQuery(operation, append(set1, set2...)) 41 return msg 42 } 43 if listLengthOutOfBounds { 44 set1 := []uint16{5, 1, 2, 3, 60_000, 1, 2, 3, 60_000, 2, 1} 45 set2 := []uint16{51, 0, 2, 3, 20_000, 1, 23, 3, 60_000, 2, 1} 46 msg := messages.NewQuery(operation, append(set1, set2...)) 47 return msg 48 } 49 set1 := []uint16{5, 1, 2, 3, 60_000} 50 set2 := []uint16{51, 0, 2, 3, 20_000} 51 msg := messages.NewQuery(operation, append(set1, set2...)) 52 return msg 53 } 54 return messages.NewQuery(operation, []int8{1, 1, 1}) 55 } 56 57 func main() { 58 operation := messages.A 59 number_out_of_bounds := false 60 list_length_out_of_bounds := false 61 mess := testMessage(operation, number_out_of_bounds, list_length_out_of_bounds) 62 if mess == nil { 63 return 64 } 65 66 server_ip := "127.0.0.1" 67 server_port := "12345" 68 69 c := client.NewClient() // Creates a new client 70 71 fmt.Println() 72 c.ConnectTo(server_ip, server_port) 73 c.SendQuery(*mess) 74 buf := make([]byte, 256) 75 76 for { 77 _, err := c.Conn.Read(buf) 78 if err == nil { 79 message := messages.DeserializeResponse(buf) 80 if message.Header.Response_code != messages.Ok { 81 fmt.Println(messages.Response_message[message.Header.Response_code]) 82 } else { 83 result := messages.DeserializeResult(message.Result, mess.Header.Op_code) 84 fmt.Println("The result of the operation is:", result) 85 } 86 break 87 } 88 } 89 90 defer c.CloseConn() 91 }