1type request = {
2	tid: int;
3	rid: int;
4	ty: Xenbus.Xb.Op.operation;
5	data: string;
6}
7
8type response =
9	| Ack of (unit -> unit)  (* function is the action to execute after sending the ack *)
10	| Reply of string
11	| Error of string
12
13let response_equal a b =
14	match (a, b) with
15	| (Ack _, Ack _) -> true (* just consider the response, not the post-response action *)
16	| (x, y) -> x = y
17