/ src / client / client-main.go
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  }