package requetes import ( "ConspiracyDecoder/binary" "fmt" "os" ) func ReadRequete(bytes []byte) { bytesEntete := bytes[:20] // Lecture de l'en-tête. entete, err := ReadEntete(bytesEntete) if (err != nil) { fmt.Println(err) os.Exit(1) } fmt.Printf("%+v\n", entete) switch entete.NumReq { case NUMREQ_REQUET_MES_PARTIES: fmt.Println("Requête : Mes parties.") // Lecture d'une requête connectée basique. reqConnectee := ReadRequeteConnectee(bytes[20:28]) fmt.Printf("ID de connexion : %d\n", reqConnectee.IdConnexion) if len(bytes) > 28 { fmt.Println("\nLecture de la réponse.") fmt.Println("\n === \n") ReadRequete(bytes[28:]) // Lecture de la réponse, directement après dans le buffer. } break case NUMREQ_RESULT_INFO_INSCRIPTION_PARTIE: fmt.Println("Réponse : Informations inscriptions / parties.") parties, err := ReadResultatInfoInscriptionPartie(bytes[20:]) if err != nil { fmt.Println(err) os.Exit(1) } for index, partie := range parties { fmt.Printf("%d: %+v\n", index, partie) } break case NUMREQ_RESULT_EXCEPTION: fmt.Println("Réponse : Exception.") fmt.Printf("CodeException : %d\n", binary.BinaryGetInt(bytes, 20, 4)) break case NUMREQ_RESULT_REQUETE: fmt.Println("Réponse : RésultatRequête.") fmt.Printf("Message acquité : %d\nCode erreur : %d\n", binary.BinaryGetInt(bytes, 20, 4), binary.BinaryGetInt(bytes, 24, 4)) break default: fmt.Println("Type de requête non géré.") } } func CreateRequetteConnecteeBasique(typeRequete int) []byte { return append(WriteEntete(Entete{ Preambule: PREAMBULES[0], Version: VERSION, NumReq: int32(typeRequete), TailleReq: 8, }), WriteRequeteConnectee(RequeteConnectee{ IdConnexion: -1614038591215924784, })...) }