diff options
Diffstat (limited to 'juge/protocol.ml')
-rw-r--r-- | juge/protocol.ml | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/juge/protocol.ml b/juge/protocol.ml new file mode 100644 index 0000000..3f6d548 --- /dev/null +++ b/juge/protocol.ml @@ -0,0 +1,41 @@ + +exception Invalid_message of string + +type msg = + | Hello of string (* nom du jeu *) + | YourTurn of float (* nombre secondes pour jouer *) + | Play of string (* description textuelle du coup *) + | OK (* coup accepté *) + | YouWin + | YouLose + | Tie + | Eliminated + | FairEnough + +let decode = function + | "OK" -> OK + | "You win" -> YouWin + | "You lose" -> YouLose + | "Tie" -> Tie + | "Eliminated" -> Eliminated + | "Fair enough" -> FairEnough + | s when String.sub s 0 6 = "Hello " -> + Hello (String.sub s 6 (String.length s - 6)) + | s when String.sub s 0 10 = "Your turn " -> + YourTurn (float_of_string (String.sub s 10 (String.length s - 10))) + | s when String.sub s 0 5 = "Play " -> + Play (String.sub s 5 (String.length s - 5)) + | s -> raise (Invalid_message s) + +let encode = function + | Hello x -> "Hello " ^ x + | YourTurn n -> "Your turn " ^ (string_of_float n) + | Play x -> "Play " ^ x + | OK -> "OK" + | YouWin -> "You win" + | YouLose -> "You lose" + | Tie -> "Tie" + | Eliminated -> "Eliminated" + | FairEnough -> "Fair enough" + + |