mirror of
https://github.com/markqvist/LXMF.git
synced 2025-12-17 09:24:15 -05:00
Improved outbound message processing speed
This commit is contained in:
parent
f4c805ea35
commit
a6f5a56a38
2 changed files with 198 additions and 198 deletions
|
|
@ -13,17 +13,6 @@ class LXMFDeliveryAnnounceHandler:
|
|||
self.lxmrouter = lxmrouter
|
||||
|
||||
def received_announce(self, destination_hash, announced_identity, app_data):
|
||||
for lxmessage in self.lxmrouter.pending_outbound:
|
||||
if destination_hash == lxmessage.destination_hash:
|
||||
if lxmessage.method == LXMessage.DIRECT or lxmessage.method == LXMessage.OPPORTUNISTIC:
|
||||
lxmessage.next_delivery_attempt = time.time()
|
||||
|
||||
def outbound_trigger():
|
||||
while self.lxmrouter.processing_outbound: time.sleep(0.1)
|
||||
self.lxmrouter.process_outbound()
|
||||
|
||||
threading.Thread(target=outbound_trigger, daemon=True).start()
|
||||
|
||||
try:
|
||||
stamp_cost = stamp_cost_from_app_data(app_data)
|
||||
self.lxmrouter.update_stamp_cost(destination_hash, stamp_cost)
|
||||
|
|
@ -31,6 +20,17 @@ class LXMFDeliveryAnnounceHandler:
|
|||
except Exception as e:
|
||||
RNS.log(f"An error occurred while trying to decode announced stamp cost. The contained exception was: {e}", RNS.LOG_ERROR)
|
||||
|
||||
for lxmessage in self.lxmrouter.pending_outbound:
|
||||
if destination_hash == lxmessage.destination_hash:
|
||||
if lxmessage.method == LXMessage.DIRECT or lxmessage.method == LXMessage.OPPORTUNISTIC:
|
||||
lxmessage.next_delivery_attempt = time.time()
|
||||
|
||||
def outbound_trigger():
|
||||
while self.lxmrouter.outbound_processing_lock.locked(): time.sleep(0.1)
|
||||
self.lxmrouter.process_outbound()
|
||||
|
||||
threading.Thread(target=outbound_trigger, daemon=True).start()
|
||||
|
||||
|
||||
class LXMFPropagationAnnounceHandler:
|
||||
def __init__(self, lxmrouter):
|
||||
|
|
|
|||
|
|
@ -109,7 +109,6 @@ class LXMRouter:
|
|||
self.retain_synced_on_node = False
|
||||
|
||||
self.default_sync_strategy = sync_strategy
|
||||
self.processing_outbound = False
|
||||
self.processing_inbound = False
|
||||
self.processing_count = 0
|
||||
self.name = name
|
||||
|
|
@ -160,6 +159,7 @@ class LXMRouter:
|
|||
self.outbound_stamp_costs = {}
|
||||
self.available_tickets = {"outbound": {}, "inbound": {}, "last_deliveries": {}}
|
||||
|
||||
self.outbound_processing_lock = threading.Lock()
|
||||
self.cost_file_lock = threading.Lock()
|
||||
self.ticket_file_lock = threading.Lock()
|
||||
self.stamp_gen_lock = threading.Lock()
|
||||
|
|
@ -1664,10 +1664,10 @@ class LXMRouter:
|
|||
lxmessage.defer_stamp = False
|
||||
|
||||
if not lxmessage.defer_stamp and not (lxmessage.desired_method == LXMessage.PROPAGATED and lxmessage.defer_propagation_stamp):
|
||||
while not unknown_path_requested and self.processing_outbound: time.sleep(0.05)
|
||||
while not unknown_path_requested and self.outbound_processing_lock.locked(): time.sleep(0.05)
|
||||
|
||||
self.pending_outbound.append(lxmessage)
|
||||
if not unknown_path_requested: self.process_outbound()
|
||||
if not unknown_path_requested: threading.Thread(target=self.process_outbound, daemon=True).start()
|
||||
|
||||
else: self.pending_deferred_stamps[lxmessage.message_id] = lxmessage
|
||||
|
||||
|
|
@ -2373,6 +2373,7 @@ class LXMRouter:
|
|||
def fail_message(self, lxmessage):
|
||||
RNS.log(str(lxmessage)+" failed to send", RNS.LOG_DEBUG)
|
||||
|
||||
lxmessage.progress = 0.0
|
||||
if lxmessage in self.pending_outbound:
|
||||
self.pending_outbound.remove(lxmessage)
|
||||
|
||||
|
|
@ -2494,9 +2495,8 @@ class LXMRouter:
|
|||
RNS.log(f"An error occurred while processing propagation transfer signalling. The contained exception was: {e}", RNS.LOG_ERROR)
|
||||
|
||||
def process_outbound(self, sender = None):
|
||||
if self.processing_outbound:
|
||||
return
|
||||
|
||||
if self.outbound_processing_lock.locked(): return
|
||||
with self.outbound_processing_lock:
|
||||
for lxmessage in self.pending_outbound:
|
||||
if lxmessage.state == LXMessage.DELIVERED:
|
||||
RNS.log("Delivery has occurred for "+str(lxmessage)+", removing from outbound queue", RNS.LOG_DEBUG)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue