open Swim.Types let hex_of_string s = String.to_seq s |> Seq.map (fun c -> Printf.sprintf "%02x" (Char.code c)) |> List.of_seq |> String.concat "" let () = let node = make_node_info ~id:(node_id_of_string "test-node") ~addr:(`Udp (Eio.Net.Ipaddr.of_raw "\127\000\000\001", 7947)) ~meta:"" in let ping = Ping { seq = 1; target = node_id_of_string "go-node"; sender = node } in let wire_msg = msg_to_wire ~self_name:"ocaml-node" ~self_port:7947 ping in Printf.printf "Wire message type: %s\n" (match wire_msg with | Wire.Ping _ -> "Ping" | Wire.Indirect_ping _ -> "Indirect_ping" | Wire.Ack _ -> "Ack" | Wire.Nack _ -> "Nack" | Wire.Suspect _ -> "Suspect" | Wire.Alive _ -> "Alive" | Wire.Dead _ -> "Dead" | Wire.User_data _ -> "User_data" | Wire.Compound _ -> "Compound" | Wire.Compressed _ -> "Compressed" | Wire.Err _ -> "Err"); let encoded = Swim.Codec.encode_internal_msg ~self_name:"ocaml-node" ~self_port:7947 ping in Printf.printf "Encoded length: %d bytes\n" (String.length encoded); Printf.printf "Encoded hex: %s\n" (hex_of_string encoded); Printf.printf "First byte (msg type): %d\n" (Char.code encoded.[0])