This commit is contained in:
Craig Everett 2017-11-22 21:00:43 +09:00
parent 684e4507fc
commit ccd1fd1095

38
zx
View File

@ -308,23 +308,37 @@ ensure_installed(PackageID = {Realm, Name, Version}) ->
ensure_installed(Realm, Name, Version) ->
Socket = connect_user(Realm),
{ok, LatestVersion} = query_latest(Socket, {Realm, Name, Version}),
case query_latest(Socket, {Realm, Name, Version}) of
{ok, LatestVersion} ->
LatestID = {Realm, Name, LatestVersion},
ok = ensure_dep(Socket, LatestID),
ok = disconnect(Socket),
{ok, LatestID}.
{ok, LatestID};
{error, bad_realm} ->
PackageString = package_string({Realm, Name, Version}),
ok = log(warning, "Bad realm: ~ts.", [PackageString]),
halt(1);
{error, bad_package} ->
PackageString = package_string({Realm, Name, Version}),
ok = log(warning, "Bad package: ~ts.", [PackageString]),
halt(1);
{error, bad_version} ->
PackageString = package_string({Realm, Name, Version}),
ok = log(warning, "Bad version: ~s.", [PackageString]),
halt(1)
end.
query_latest(Socket, {Realm, Name}) ->
ok = send(Socket, {latest, Realm, Name}),
receive
{tcp, Socket, Bin} -> binary_to_term(Bin, [safe])
{tcp, Socket, Bin} -> binary_to_term(Bin)
after 5000 -> {error, timeout}
end;
query_latest(Socket, {Realm, Name, Version}) ->
ok = send(Socket, {latest, Realm, Name, Version}),
receive
{tcp, Socket, Bin} -> binary_to_term(Bin, [safe])
{tcp, Socket, Bin} -> binary_to_term(Bin)
after 5000 -> {error, timeout}
end.
@ -779,7 +793,7 @@ submit(PackageFile) ->
ok =
receive
{tcp, Socket, Response1} ->
case binary_to_term(Response1, [safe]) of
case binary_to_term(Response1) of
ready ->
ok;
{error, Reason} ->
@ -834,7 +848,7 @@ connect_user(Realm) ->
connect_user(Realm, []) ->
{Host, Port} = get_prime(Realm),
ok = log(info, "Realm host at ~tp:~tp", [Host, Port]),
ok = log(info, "Realm host at ~ts:~tp", [inet:ntoa(Host), Port]),
case gen_tcp:connect(Host, Port, connect_options(), 5000) of
{ok, Socket} ->
confirm_user(Realm, Socket, []);
@ -865,9 +879,9 @@ confirm_user(Realm, Socket, Hosts) ->
ok = gen_tcp:send(Socket, <<"OTPR USER 1">>),
receive
{tcp, Socket, Bin} ->
case binary_to_term(Bin, [safe]) of
case binary_to_term(Bin) of
ok ->
ok = log(info, "Connected to ~s:~p", [Host, Port]),
ok = log(info, "Connected to ~ts:~p", [Host, Port]),
confirm_serial(Realm, Socket, Hosts);
{redirect, Next} ->
ok = log(info, "Redirected..."),
@ -875,7 +889,7 @@ confirm_user(Realm, Socket, Hosts) ->
connect_user(Realm, Next ++ Hosts)
end
after 5000 ->
ok = log(warning, "Host ~s:~p timed out.", [Host, Port]),
ok = log(warning, "Host ~ts:~p timed out.", [Host, Port]),
ok = disconnect(Socket),
connect_user(Realm, Hosts)
end.
@ -898,13 +912,13 @@ confirm_serial(Realm, Socket, Hosts) ->
end,
Serial =
case lists:keyfind(Realm, 1, Serials) of
false -> 1;
false -> 0;
{Realm, S} -> S
end,
ok = send(Socket, {latest, Realm}),
receive
{tcp, Socket, Bin} ->
case binary_to_term(Bin, [safe]) of
case binary_to_term(Bin) of
{ok, Serial} ->
ok = log(info, "Node's serial same as ours."),
Socket;
@ -1442,7 +1456,7 @@ request_zrp(Socket, PackageID) ->
ok = send(Socket, {fetch, PackageID}),
receive
{tcp, Socket, Bin} ->
case binary_to_term(Bin, [safe]) of
case binary_to_term(Bin) of
{sending, LatestID} ->
{ok, LatestID};
Error = {error, Reason} ->