This commit is contained in:
parent
aa2ff7b2f0
commit
2f3113f55d
11742 changed files with 1223940 additions and 0 deletions
60
unikernel/duniverse/ocaml-uri/etc/uri_services_raw.ml
Normal file
60
unikernel/duniverse/ocaml-uri/etc/uri_services_raw.ml
Normal file
|
|
@ -0,0 +1,60 @@
|
|||
let search_string keys k =
|
||||
let rec loop keys k low high =
|
||||
if low > high then (-1)
|
||||
else begin
|
||||
let mid = (high + low) / 2 in
|
||||
let diff = String.compare k keys.(mid) in
|
||||
if diff < 0 then loop keys k low (mid - 1)
|
||||
else if diff > 0 then loop keys k (mid + 1) high
|
||||
else mid
|
||||
end
|
||||
in loop keys k 0 (Array.length keys - 1)
|
||||
|
||||
let search_int keys k =
|
||||
let rec loop keys k low high =
|
||||
if low > high then (-1)
|
||||
else begin
|
||||
let mid = (high + low) / 2 in
|
||||
let diff = k - keys.(mid) in
|
||||
if diff < 0 then loop keys k low (mid - 1)
|
||||
else if diff > 0 then loop keys k (mid + 1) high
|
||||
else mid
|
||||
end
|
||||
in loop keys k 0 (Array.length keys - 1)
|
||||
|
||||
let lookup search (keys, values) k =
|
||||
let i = search keys k in
|
||||
if i < 0 then []
|
||||
else values.(i)
|
||||
|
||||
let service_of_tcp_port p =
|
||||
lookup search_int service_of_tcp_port_tables p
|
||||
|
||||
let service_of_udp_port p =
|
||||
lookup search_int service_of_udp_port_tables p
|
||||
|
||||
let tcp_port_of_service s =
|
||||
lookup search_string tcp_port_of_service_tables s
|
||||
|
||||
let udp_port_of_service s =
|
||||
lookup search_string udp_port_of_service_tables s
|
||||
|
||||
let port_of_uri ?default lookupfn uri =
|
||||
match Uri.port uri with
|
||||
|Some _port as x -> x
|
||||
|None -> begin
|
||||
match Uri.scheme uri, default with
|
||||
|None, None -> None
|
||||
|None, Some scheme
|
||||
|Some scheme, _ -> begin
|
||||
match lookupfn scheme with
|
||||
|[] -> None
|
||||
|hd::_ -> Some hd
|
||||
end
|
||||
end
|
||||
|
||||
let tcp_port_of_uri ?default uri =
|
||||
port_of_uri ?default tcp_port_of_service uri
|
||||
|
||||
let udp_port_of_uri ?default uri =
|
||||
port_of_uri ?default udp_port_of_service uri
|
||||
Loading…
Add table
Add a link
Reference in a new issue