remoteRF-server 1.1.0.dev44__py3-none-any.whl → 1.1.0.dev46__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -687,9 +687,21 @@ def _sync_contract(party: dict, peer: str, directory: list[dict]) -> str:
687
687
  return store.show(party["contract_id"], 1)["state"]
688
688
 
689
689
 
690
+ def _event_order(signed_event: str) -> tuple:
691
+ """(occurred_at, actor, actor_sequence) from the unverified payload -- for
692
+ ordering only; the store verifies every event before it counts."""
693
+ try:
694
+ payload = signed_event.split(".")[1]
695
+ claims = json.loads(base64.urlsafe_b64decode(payload + "=" * (-len(payload) % 4)))
696
+ return (int(claims["occurred_at"]), str(claims["iss"]), int(claims["actor_sequence"]))
697
+ except Exception: # noqa: BLE001 - malformed: let the store reject it, last
698
+ return (2**62, "", 0)
699
+
700
+
690
701
  def _import(store: ContractStore, terms: dict, events: list) -> str:
691
702
  """Import a directory entry; a contract already revoked here (an earlier
692
703
  cluster between the same labs) is simply reported as such."""
704
+ events = sorted(events, key=_event_order) # the relay's order is not the actors' order
693
705
  try:
694
706
  store.import_bundle(canonical_json({"protocol_version": "2", "terms": terms, "events": events}))
695
707
  except ContractError as exc:
@@ -933,7 +933,7 @@ class Tunnel:
933
933
  # Background agent
934
934
  # -----------------------------
935
935
 
936
- POLL_PENDING_SECONDS = 600
936
+ POLL_PENDING_SECONDS = 30 # approval shows up within a tick, not ten minutes
937
937
  POLL_ACTIVE_SECONDS = 3600
938
938
  LIVENESS_SECONDS = 300
939
939
  STATUS_SECONDS = 3600
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: remoteRF-server
3
- Version: 1.1.0.dev44
3
+ Version: 1.1.0.dev46
4
4
  Summary: RemoteRF server-side control package
5
5
  License: GPL-3.0-or-later
6
6
  Classifier: Programming Language :: Python :: 3
@@ -58,7 +58,7 @@ remoteRF_server/server/control.py,sha256=Uq1Fk0zIoHHX_EXfz3OuNle8urvO_UhAiB5Lk5c
58
58
  remoteRF_server/server/device_manager.py,sha256=PPuCwlPSmjfVpCqy_hCaOr9WvFgE8mqtLMhWOAgXNDA,39281
59
59
  remoteRF_server/server/direct_path.py,sha256=CQs0uPTANJq6Bn-TzsV0APmD3hYKH8xYvczXZZk1OXk,15229
60
60
  remoteRF_server/server/dynamic_v2.py,sha256=AMhQEFhNAvCNcF-PdfCCQQLmeoaR7s1Os8et1KFGn_8,70814
61
- remoteRF_server/server/global_onboarding.py,sha256=boLAKXCKvcsIY3TDiFwduMaHdDMB9Cr104MyWJYZ-BA,39891
61
+ remoteRF_server/server/global_onboarding.py,sha256=NcKG8TYhCJEiaCtdXL1jEgVm-R_xWpOIj5KI4bWfkr0,39942
62
62
  remoteRF_server/server/grpc_server.py,sha256=91FpJubzN_Wfuk6fW_owIEzNCukd333sAGW68FUU8pk,46787
63
63
  remoteRF_server/server/host_dynamic_v2.py,sha256=1rJQwP4knSd0EXkByrSn_ryjLx81f6sp6SNYr_aEass,8105
64
64
  remoteRF_server/server/reservation.py,sha256=BQJLGNVAdKMZu2Lg4DGO9UhuJ0b1GSF8K1DgIOFrYUg,67816
@@ -71,7 +71,7 @@ remoteRF_server/server/deployment/capabilities.py,sha256=20RxmGG03VoQQZnV3jGhc-3
71
71
  remoteRF_server/server/federation/__init__.py,sha256=auqdGiGnEGIKQiXX2jFVt8iWmfyZ-V3w4dUmtWDKAZE,735
72
72
  remoteRF_server/server/federation/admin.py,sha256=t3F17FIytekzclPICmaFJEA4-F5OuWcDx3rgmFga17A,9187
73
73
  remoteRF_server/server/federation/cli.py,sha256=TIPfOdYxYDok7pR5g6COf_jUlcTFcj9o728kkLKcDqs,16351
74
- remoteRF_server/server/federation/cluster.py,sha256=7hFtUPJ6r3ldar2ExaoVKRCguWfnH4yZFKYDG4yyHPo,37828
74
+ remoteRF_server/server/federation/cluster.py,sha256=LunLUF5tk-kOjKV3DIxPTaeGow2zvOZsae2fs1XBSQE,38469
75
75
  remoteRF_server/server/federation/contracts.py,sha256=NYh7lb_9etJHFfzXwevjC4HfSBUypLxg5xGeBgydLF4,29305
76
76
  remoteRF_server/server/federation/destination.py,sha256=XawmGCiVbL_MfNNn8xwV9_bYxUDW1L7efCpL11K2JAc,35909
77
77
  remoteRF_server/server/federation/devices.py,sha256=n5MvnD0UZyl4sFpiekG9ProanWXTYizYq6YchCflLgY,18061
@@ -90,9 +90,9 @@ remoteRF_server/tools/gen_certs.py,sha256=Vbyu8JjRu__UYPVmyCRXt5SOw0Za1HV7g1md3G
90
90
  remoteRF_server/tools/gist_status.py,sha256=SFv2iQgQrIKT9gxKrU-_Dr7S0p0rE4wQM6J3OC6FcoM,4649
91
91
  remoteRF_server/tools/gist_status_testing.py,sha256=IYw7UkPjAUpKDTtIlnYGb5g6SJkwz4TRGUfJJ6f4LhQ,2690
92
92
  remoteRF_server/tools/introspect_uhd.py,sha256=vUpPb0rM9tsHPxWadS3EfMDE-gMd-TvNV0TjrZOQqBY,4531
93
- remoterf_server-1.1.0.dev44.dist-info/licenses/LICENSE,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
94
- remoterf_server-1.1.0.dev44.dist-info/METADATA,sha256=v4lIwkMg8LduMZz8viNG9zwyCnTmkJVBlmX2vixAPJw,42069
95
- remoterf_server-1.1.0.dev44.dist-info/WHEEL,sha256=YVMoNqKzERt-wjUZwJ33xBGAwnFl-4cqbYkTtWa4itE,91
96
- remoterf_server-1.1.0.dev44.dist-info/entry_points.txt,sha256=_bbKk65PfYi-n6zUjqOiOwcalf_Ws1TCGATIe1TukxE,136
97
- remoterf_server-1.1.0.dev44.dist-info/top_level.txt,sha256=NuYWe8dSx3qdbxshWBwOgx68EHmJ9I8Zvxam4ARsQ_I,30
98
- remoterf_server-1.1.0.dev44.dist-info/RECORD,,
93
+ remoterf_server-1.1.0.dev46.dist-info/licenses/LICENSE,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
94
+ remoterf_server-1.1.0.dev46.dist-info/METADATA,sha256=OJ9-jeWed-pV98PI7BGqFv7mQBw5cw7yWCIuXvTG2Qg,42069
95
+ remoterf_server-1.1.0.dev46.dist-info/WHEEL,sha256=YVMoNqKzERt-wjUZwJ33xBGAwnFl-4cqbYkTtWa4itE,91
96
+ remoterf_server-1.1.0.dev46.dist-info/entry_points.txt,sha256=_bbKk65PfYi-n6zUjqOiOwcalf_Ws1TCGATIe1TukxE,136
97
+ remoterf_server-1.1.0.dev46.dist-info/top_level.txt,sha256=NuYWe8dSx3qdbxshWBwOgx68EHmJ9I8Zvxam4ARsQ_I,30
98
+ remoterf_server-1.1.0.dev46.dist-info/RECORD,,