There may be applications where the admin might not want a hard
coded 3 acks sent for every RX'd packet. This patch adds the
ability to change the number of acks sent per RX'd packet.
The default is still 3.
This does some cleanup with the stats collector and
usage of the stats. The patch adds a new optional
param to the collector's collect() method to tell
the object to provide serializable stats. This is
used for the webchat app that sends stats to the
browser.
refactored all logging of packets.
Packet class now doesn't do logging.
the format of the packet log now lives on a single line with
colors.
Created a new packet property called human_info, which
creates a string for the payload of each packet type
in a human readable format.
TODO: need to create a config option to allow showing the
older style of multiline logs for packets.
This patch replaces the ratelimiter library with rush for rate limiting
as the ratelimiter package doesn't work with python 3.11.
This patch also refactors the flask.pu to admin_web.py and
aprsd.py to main.py
This patch adds basic ratelimiting to sending out AckPackets
and non AckPackets. This provides a basic way to prevent
aprsd from sending out packets as fast as possible, which isn't
great for a bandwidth limited network.
This patch also adds some keepalive checks to all threads in the
threadslist as well as the network client objects (apris, kiss)
This patch decouples sending a message from the internals of
the Packet classes. This allows the rest of the code to use
Packet objects as type hints in methods to enforce Packets
in the plugins.
The send method was moved to a single place in the threads.tx.send()
This patch updates both the webchat and listen commands
to be able to use the new queue based packet RX processing.
APRSD used to start a thread for every packet received, now
packets are pushed into a queue for processing by other threads
already running.
This patch cleans up the Packet class attributes used to
keep track of how many times packets have been sent and
the last time they were sent. This is used by the PacketTracker
and the tx threads for transmitting packets
This patch reworks all the packet processing to use the new
Packets objects. Nuked all of the messaging classes.
backwards incompatible changes
all messaging.py classes are now gone and replaced by
packets.py classes