Handle monitor clients

This commit is contained in:
Ulf Wiger 2025-03-20 22:48:27 +01:00
parent d2880b475b
commit 68064b1469

View File

@ -60,6 +60,7 @@ validate(#{ connect := #{ pubkey := PK
, versions := Versions
, pool_id := PoolId
, extra_pubkeys := Extra
, type := Type
, nonces := Nonces
}} = Msg, _Vsn) ->
valid({list, protocol}, Protocols),
@ -68,6 +69,7 @@ validate(#{ connect := #{ pubkey := PK
valid(contract, PoolId),
valid(pubkey, PK),
valid({list, pubkey}, Extra),
valid(type, Type),
valid(pos_int, Nonces),
Msg;
validate(#{ connect_ack := #{ protocol := Protocol
@ -113,11 +115,13 @@ validate(#{ no_solution := #{ seq := Seq
validate(#{ stop_mining := #{} } = Msg, _Vsn) ->
Msg.
encode_connect(#{ protocols := _Protocols
, versions := _Versions
, pool_id := _PoolId
, pubkey := _Pubkey
, signature := _Sig } = Params, Id) ->
encode_connect(#{ protocols := _Protocols
, versions := _Versions
, pool_id := _PoolId
, pubkey := _Pubkey
, extra_pubkeys := _Extra
, type := _Type
, signature := _Sig } = Params, Id) ->
encode_request(#{connect => Params}, Id, connect_protocol(), connect_version()).
decode_connect(MsgBin) ->
@ -241,12 +245,14 @@ decode_msg_(<<"connect">>, #{ <<"protocols">> := Protos
, <<"pool_id">> := PoolId
, <<"pubkey">> := PK
, <<"extra_pubkeys">> := Extra
, <<"type">> := Type
, <<"nonces">> := Nonces }) ->
#{connect => #{ protocols => Protos
, versions => Vsns
, pool_id => PoolId
, pubkey => PK
, extra_pubkeys => Extra
, type => Type
, nonces => Nonces
}};
decode_msg_(<<"get_nonces">>, #{ <<"seq">> := Seq
@ -291,6 +297,7 @@ valid_(target, T) -> pos_integer(T);
valid_(edge_bits, E) -> pos_integer(E);
valid_(pos_int, I) -> pos_integer(I);
valid_(contract, Id) -> ok_tuple(gmser_api_encoder:safe_defode(contract_pubkey, Id));
valid_(type, T) -> lists:member(T, [miner, monitor]);
valid_(nonces, Ns) ->
case Ns of
[N] -> pos_integer(N);