Todo: update

This commit is contained in:
2025-11-15 00:08:35 -04:00
parent 16b51a3b66
commit 475f67d36e
-18
View File
@@ -9,14 +9,6 @@
a ref and not by-value. Propagate this upward into a ref and not by-value. Propagate this upward into
SerializedAsyncContin and into all derived classes' SerializedAsyncContin and into all derived classes'
constructors. constructors.
* In classes like udpCommandDemuxer and possibly other such background tasks,
use a spinlock to ensure that the stop() function doesn't deallocate the
data to be used by the daemon task while the daemon task is executing.
* Alternatively we could re-emqueue the message;
* Alternatively, if select/poll don't consume the read-data-rdy flag,
we can just return and let the next timer invocation run instead.
* Alternatively, we can use an xchg'd flag between the udp listener
and the timed enforcer.
* In livoxProto1/device.cpp, migrate the registerUdpCommandHandler() calls * In livoxProto1/device.cpp, migrate the registerUdpCommandHandler() calls
from using the inProgress collection to the per-device collections. from using the inProgress collection to the per-device collections.
* In cases where we use boost deadline_timers and pass in an async * In cases where we use boost deadline_timers and pass in an async
@@ -25,16 +17,6 @@
after they expire just in case boost doesn't clean up the internal after they expire just in case boost doesn't clean up the internal
callable that we passed it. Or else we'll have circular sh_ptr callable that we passed it. Or else we'll have circular sh_ptr
references in our continuations. references in our continuations.
* Think of a unified mechanism or a design pattern which will ensure that
timeouts will always either expire or be canceled before program
finalization.
Or more generically, before their lifetime ends.
* One good mechanism is to use synchronous waits on the timeout
events. This is fine during program shutdown because we don't
need to care about responsiveness during program shutdown.
* We can use asynchronous bridging to ensure that asynchronous
events are executed in the meantime while we wait for the sync
timeout to complete.
* UdpCommandDemuxer::registerUdpCommandHandler should accept a pointer * UdpCommandDemuxer::registerUdpCommandHandler should accept a pointer
to the io_context of the thread it should post its callbacks to, and to the io_context of the thread it should post its callbacks to, and
then post callbacks to those io_contexts when UDP cmd responses then post callbacks to those io_contexts when UDP cmd responses