diff --git a/ocaml/Block.ml b/ocaml/Block.ml index 29c9bf8..07f7030 100644 --- a/ocaml/Block.ml +++ b/ocaml/Block.ml @@ -120,13 +120,17 @@ let of_bytes b = let to_string b = - Printf.sprintf "%s %s # %s %s %s %d" - (Sample.to_string b.value ) - (Weight.to_float b.weight |> string_of_float) - (Property.to_string b.property) - (Compute_node.to_string b.compute_node) - (string_of_int b.pid) - (Block_id.to_int b.block_id) + if Qmcchem_config.binary_io then + to_bytes b + |> Bytes.to_string + else + Printf.sprintf "%s %s # %s %s %s %d" + (Sample.to_string b.value ) + (Weight.to_float b.weight |> string_of_float) + (Property.to_string b.property) + (Compute_node.to_string b.compute_node) + (string_of_int b.pid) + (Block_id.to_int b.block_id) let dir_name = lazy( diff --git a/ocaml/Qmcchem_config.ml b/ocaml/Qmcchem_config.ml index ac88031..98d6820 100644 --- a/ocaml/Qmcchem_config.ml +++ b/ocaml/Qmcchem_config.ml @@ -8,10 +8,10 @@ let root = lazy ( (* PATH environment variable as a list of strings *) let path = lazy ( - let p = + let p = try Sys.getenv "PATH" with | Not_found -> failwith "PATH environment variable is not set" - in + in String.split_on_char ':' p ) @@ -23,8 +23,8 @@ let full_path exe = | [] -> None | head :: tail -> begin - let fp = - Filename.concat head exe + let fp = + Filename.concat head exe in if Sys.file_exists fp then Some fp @@ -82,8 +82,8 @@ let hostname = lazy ( ) -external get_ipv4_address_for_interface : string -> string = - "get_ipv4_address_for_interface" +external get_ipv4_address_for_interface : string -> string = + "get_ipv4_address_for_interface" let ip_address = lazy ( @@ -106,7 +106,7 @@ let ip_address = lazy ( end | Some interface -> let result = get_ipv4_address_for_interface interface in - if String.sub result 0 5 = "error" then + if String.sub result 0 5 = "error" then Printf.sprintf "Unable to use network interface %s" interface |> failwith else @@ -115,3 +115,5 @@ let ip_address = lazy ( +let binary_io = false + diff --git a/ocaml/Qmcchem_dataserver.ml b/ocaml/Qmcchem_dataserver.ml index c189fee..46bb208 100644 --- a/ocaml/Qmcchem_dataserver.ml +++ b/ocaml/Qmcchem_dataserver.ml @@ -758,7 +758,8 @@ let run ?(daemon=true) ezfio_filename = | Some wall -> begin output_string !block_channel (Block.to_string wall); - output_char !block_channel '\n'; + if not Qmcchem_config.binary_io then + output_char !block_channel '\n'; end | _ -> () end @@ -767,7 +768,8 @@ let run ?(daemon=true) ezfio_filename = if (status = Status.Running) then touch_worker b.Block.compute_node b.Block.pid ; output_string !block_channel (Block.to_string b); - output_char !block_channel '\n'; + if not Qmcchem_config.binary_io then + output_char !block_channel '\n'; recv_log (Block.to_string b) end | Message.Test diff --git a/ocaml/qptypes_generator.ml b/ocaml/qptypes_generator.ml index c3d0565..3e93818 100644 --- a/ocaml/qptypes_generator.ml +++ b/ocaml/qptypes_generator.ml @@ -344,7 +344,7 @@ let create_ezfio_handler () = let lines = input_lines "ezfio.ml" (* /!\ Change when ezfio.ml changes *) - |> List.mapi (fun i l -> if i > 444 then Some l else None) + |> List.mapi (fun i l -> if i > 442 then Some l else None) |> List.filter (fun x -> x <> None) |> List.map (fun x -> match x with diff --git a/scripts/create_properties_ezfio.py b/scripts/create_properties_ezfio.py index 8b80107..e7fb388 100755 --- a/scripts/create_properties_ezfio.py +++ b/scripts/create_properties_ezfio.py @@ -146,6 +146,10 @@ for p in properties_qmcvar: print >>file, """| %(P)s -> "%(P)s" """%{'P':p[1].capitalize(), 'p':p[1]} print >>file, """;; +let of_bytes x = + Bytes.to_string x + |> of_string + let to_bytes x = to_string x |> Bytes.of_string