The original synchronization behavior was troublesome for two reasons:
It had unpredictable behavior for updated values
It brought back to life deleted values
Instead of relying on the server to inform the client regarding reconnections,
the client keeps track of what values have been modified by user code on the
client. When the client connects to the server, the following occurs.
For entries that have been modified by user code on the client:
If the entry is not persistent, the server value is overwritten with the
client value
If the entry does not exist on the server, the client sends an assignment
to the server to recreate it on the server
For entries that have not been modified by user code on the client:
The client value is overwritten with the server value
If the entry does not exist on the server, the client deletes the entry
The original synchronization behavior was troublesome for two reasons:
Instead of relying on the server to inform the client regarding reconnections, the client keeps track of what values have been modified by user code on the client. When the client connects to the server, the following occurs.
For entries that have been modified by user code on the client:
For entries that have not been modified by user code on the client:
Fixes #8.