With the new DAT Table Binding, can we get a better Touch In/Out DAT System?

Specifically for Table DATs, for an easier implementation of a Main and Backup system in regard to UI Bindings.

It could be called a Touch DAT.
It works exactly like a Table DAT on both ends (for the purpose of editing/binding/scripting etc)
It can be configured as a Server or a Client. Clients connect to the Server.
It can be configured as a Master or a Receiver.

A Master can be bound/scripted etc. and will work exactly like a Table DAT. It will then send this to the Receiver
A Receiver can be bound/scripted etc, but wont actually update anything (The TCP connection to the Master is the only thing that can change the data). Any bound value changes are changed back (ie, it wont break binding, but clicking a bound button wont be clicked. or its clicked, but the table isnt updated for any other bindings)

If a Client looses connection to a Server, it reconfigures to a Master (this could be done through callbacks) so that local bindings “work” again.
When a Client connects to a Server, it reconfigures to a Receiver (this could be done through callbacks, so that it can be kept as a master if desired)

If a Master and a Receiver are connected to each other, and a Receiver is manually configured to be a Master (ie, a ‘Take Over Control’ type scenario, or through a script) then the current Master is reconfigured to be a Receiver (again, this can be done through callbacks).
If a Master and a Receiver are connected to each other, and a Master is manually configured to be a Receiver (ie a ‘Give Up Control’ type scenario, or through a script), then the current Receiver is reconfigured to be a Master (again, this can be done through callbacks)

I feel like this could go hand-in-hand with the new Widget UI system, and the emphasis on bindings.
The core video part of a project can be deterministic from its inputs and UI.
This new DAT op would allow for easier synchronisation of UIs for when you need a Main and a Backup system.

I currently accomplish this with a Touch In and a Touch Out DATs, a Table DAT, and DAT Execute DATs to send local updates out the Touch Out DAT, and update the Table DAT for any changes from the Touch In DAT.
Its a bit clunky, and is not reliable for both UIs being used at the same time (which the new OP wouldn’t solve, but it would prevent)

Here is what I currently use that kinda shows the behaviour (except from the client connecting/disconnecting). Its fairly untested, as I am still developing my project.

Ports are use in pairs, so if its configured with port 9000, ports 9000 and 9001 are used.

The Server toggle changes whether the In/Out DATs are on the port/port+1 or port+1/port. So both instances of the .tox should be set to the same port. One should be server, one should not.

The Master toggle changes which one is configured to send.

The DAT field is for the table to be synchronised.

So you can start a project, drop in 2 of these bad boys, add 2 tables and reference them in the respective DAT params.
Edit the one attached to the master, and the receiver updates. Edit the one attached to the receiver, and it changes back.
Toggle the master out of master (and into receiver), or toggle the receiver into master, and it behaves as expected.

DATTableSync.tox (1.5 KB)