aboutsummaryrefslogtreecommitdiff
path: root/juge/protocol.ml
diff options
context:
space:
mode:
Diffstat (limited to 'juge/protocol.ml')
-rw-r--r--juge/protocol.ml41
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"
+
+