The idea of having throwaway drivers didn’t work out as well as I had
hoped. There were too many things going on in flight to make it really
effective. The Data Engine now instantiates a copy of every driver at
init time and keeps them around. These drivers bind and hold on to
their sockets, only changing where they’re connected as they switch to
different reflectors. This should prevent some problems with trying to
bind to an already bound socket because of timing issues. This should
also make some of the persistent data more efficient.
Also implemented a serial queue to handle link/unlink requests. This
way you can’t have them crossing over in flight. The queue is created
on the Data Engine and fed to the link drivers.
The idea of having throwaway drivers didn’t work out as well as I had hoped. There were too many things going on in flight to make it really effective. The Data Engine now instantiates a copy of every driver at init time and keeps them around. These drivers bind and hold on to their sockets, only changing where they’re connected as they switch to different reflectors. This should prevent some problems with trying to bind to an already bound socket because of timing issues. This should also make some of the persistent data more efficient.
Also implemented a serial queue to handle link/unlink requests. This way you can’t have them crossing over in flight. The queue is created on the Data Engine and fed to the link drivers.
Fixes #1