mirror of
https://github.com/craigerl/aprsd.git
synced 2024-11-25 09:28:38 -05:00
Compare commits
4 Commits
026dc6e376
...
66e4850353
Author | SHA1 | Date | |
---|---|---|---|
66e4850353 | |||
40c028c844 | |||
4c2a40b7a7 | |||
f682890ef0 |
@ -105,6 +105,11 @@ aprsd_opts = [
|
|||||||
"'multiline' will use multiple lines for each packet and is the traditional format."
|
"'multiline' will use multiple lines for each packet and is the traditional format."
|
||||||
"both will log both compact and multiline.",
|
"both will log both compact and multiline.",
|
||||||
),
|
),
|
||||||
|
cfg.IntOpt(
|
||||||
|
"default_ack_send_count",
|
||||||
|
default=3,
|
||||||
|
help="The number of times to send an ack packet in response to recieving a packet.",
|
||||||
|
),
|
||||||
]
|
]
|
||||||
|
|
||||||
watch_list_opts = [
|
watch_list_opts = [
|
||||||
|
@ -22,7 +22,7 @@ class PacketList(objectstore.ObjectStoreMixin):
|
|||||||
def __new__(cls, *args, **kwargs):
|
def __new__(cls, *args, **kwargs):
|
||||||
if cls._instance is None:
|
if cls._instance is None:
|
||||||
cls._instance = super().__new__(cls)
|
cls._instance = super().__new__(cls)
|
||||||
cls._maxlen = 100
|
cls._maxlen = 50
|
||||||
cls.data = {
|
cls.data = {
|
||||||
"types": {},
|
"types": {},
|
||||||
"packets": OrderedDict(),
|
"packets": OrderedDict(),
|
||||||
|
@ -77,8 +77,9 @@ class APRSDThreadList:
|
|||||||
age = th.loop_age()
|
age = th.loop_age()
|
||||||
if serializable:
|
if serializable:
|
||||||
age = str(age)
|
age = str(age)
|
||||||
stats[th.__class__.__name__] = {
|
stats[th.name] = {
|
||||||
"name": th.name,
|
"name": th.name,
|
||||||
|
"class": th.__class__.__name__,
|
||||||
"alive": th.is_alive(),
|
"alive": th.is_alive(),
|
||||||
"age": th.loop_age(),
|
"age": th.loop_age(),
|
||||||
"loop_count": th.loop_count,
|
"loop_count": th.loop_count,
|
||||||
|
@ -127,8 +127,7 @@ class SendPacketThread(aprsd_threads.APRSDThread):
|
|||||||
"Message Send Complete. Max attempts reached"
|
"Message Send Complete. Max attempts reached"
|
||||||
f" {packet.retry_count}",
|
f" {packet.retry_count}",
|
||||||
)
|
)
|
||||||
if not packet.allow_delay:
|
pkt_tracker.remove(packet.msgNo)
|
||||||
pkt_tracker.remove(packet.msgNo)
|
|
||||||
return False
|
return False
|
||||||
|
|
||||||
# Message is still outstanding and needs to be acked.
|
# Message is still outstanding and needs to be acked.
|
||||||
@ -158,22 +157,24 @@ class SendPacketThread(aprsd_threads.APRSDThread):
|
|||||||
|
|
||||||
class SendAckThread(aprsd_threads.APRSDThread):
|
class SendAckThread(aprsd_threads.APRSDThread):
|
||||||
loop_count: int = 1
|
loop_count: int = 1
|
||||||
|
max_retries = 3
|
||||||
|
|
||||||
def __init__(self, packet):
|
def __init__(self, packet):
|
||||||
self.packet = packet
|
self.packet = packet
|
||||||
super().__init__(f"SendAck-{self.packet.msgNo}")
|
super().__init__(f"SendAck-{self.packet.msgNo}")
|
||||||
|
self.max_retries = CONF.default_ack_send_count
|
||||||
|
|
||||||
def loop(self):
|
def loop(self):
|
||||||
"""Separate thread to send acks with retries."""
|
"""Separate thread to send acks with retries."""
|
||||||
send_now = False
|
send_now = False
|
||||||
if self.packet.send_count == self.packet.retry_count:
|
if self.packet.send_count == self.max_retries:
|
||||||
# we reached the send limit, don't send again
|
# we reached the send limit, don't send again
|
||||||
# TODO(hemna) - Need to put this in a delayed queue?
|
# TODO(hemna) - Need to put this in a delayed queue?
|
||||||
LOG.debug(
|
LOG.debug(
|
||||||
f"{self.packet.__class__.__name__}"
|
f"{self.packet.__class__.__name__}"
|
||||||
f"({self.packet.msgNo}) "
|
f"({self.packet.msgNo}) "
|
||||||
"Send Complete. Max attempts reached"
|
"Send Complete. Max attempts reached"
|
||||||
f" {self.packet.retry_count}",
|
f" {self.max_retries}",
|
||||||
)
|
)
|
||||||
return False
|
return False
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user