Module Net.Msg

Send and receive messages over stream sockets.

Using simple length-value frames.

Sending

val send : Connection.t -> string -> (unit, string) Stdlib.result

send c msg sends the bytes msg on c. The result is:

  • Ok () if the frame for msg was seemingly sent successfuly.
  • Error e if the peer unexpectedly closed the connection or another error occurs. In this case you should proceed to Connection.close_noerr the connection.
val send' : Connection.t -> string -> (unit, Unix.error) Stdlib.result

send' is like send but you get the unix error status on error, in case you want to try to (unreliably) reason on the peer closure.

Receiving

val recv : Connection.t -> (string option, string) Stdlib.result

recv c receives a message from c. The result is:

  • Ok (Some msg) if msg was received in a frame.
  • Ok None if the connection was closed gracefuly (0 bytes were read at the beginning of the frame).
  • Error e is the peer unexpectedly closed the connection, if a frame is truncated or invalid, or if any other error occurs. In this case you should proceed to Connection.close_noerr the connection.