diff options
author | Alex AUVOLAT <alex.auvolat@ens.fr> | 2014-05-24 23:25:07 +0200 |
---|---|---|
committer | Alex AUVOLAT <alex.auvolat@ens.fr> | 2014-05-24 23:25:07 +0200 |
commit | 6e750a757ef6fb1f41cf4c2fe39edba834b76858 (patch) | |
tree | f339630beb8a9a1a6f3544b40547ce9c83f23a91 /src/util.ml | |
parent | c5e69a904e79e807c5b075c08ce82183133e7b4c (diff) | |
download | SystemeReseaux-Projet-6e750a757ef6fb1f41cf4c2fe39edba834b76858.tar.gz SystemeReseaux-Projet-6e750a757ef6fb1f41cf4c2fe39edba834b76858.zip |
./manager -local-proc 4 ./example.native does what expected.
Diffstat (limited to 'src/util.ml')
-rw-r--r-- | src/util.ml | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/src/util.ml b/src/util.ml new file mode 100644 index 0000000..5502398 --- /dev/null +++ b/src/util.ml @@ -0,0 +1,20 @@ +open Unix + +type id = int * int +let new_id () : id = (Random.int 100000, Random.int 100000) +let id_str (a, b) = Format.sprintf "%d.%d" a b + +(* make_addr : string -> int -> sockaddr *) +let make_addr host port = + let host = gethostbyname host in + ADDR_INET(host.h_addr_list.(Random.int (Array.length host.h_addr_list)), port) + + +(* Unmarshal ONE message from a file descriptor, and DO NOT buffer more data *) +let read_one_msg fd = + let hdr = String.create Marshal.header_size in + assert (read fd hdr 0 Marshal.header_size = Marshal.header_size); + let dlen = Marshal.data_size hdr 0 in + let data = String.create dlen in + assert (read fd data 0 dlen = dlen); + Marshal.from_string (hdr ^ data) 0 |