Working on binary I/O

This commit is contained in:
Anthony Scemama 2022-01-11 14:47:04 +01:00
parent dfbbf8b329
commit ca7f0f0171
5 changed files with 29 additions and 17 deletions

View File

@ -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(

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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