Deinen Lösungsweg 6 kann ich aber nicht ganz nachvollziehen. L2 würde doch bereits das Check-out/-in über dieses ach so kompliziert ausgedachte Flag-System lösen, oder doch nicht?
Nein, denn ein Client setzt am Server normalerweise keine Flags, das macht ein Programm das auf dem Server zugreift und den Client bedient.
Ok, meine Idee wäre jetzt gewesen in der XML-Datei (bzw. über eine 2. XML-Datei) das ganze zu steuern. Also in dem Fall dann doch Clientseitig um eben die Installation von Software auf dem Server zu umgehen.
Die 2. XML-Datei könnte dann z.B. so aussehen:
<access client="1" dataset="1" state="reading">
<access client="2" dataset="1" state="reading">
Step 2:
<access client="1" dataset="1" state="reading">
<access client="2" dataset="1" state="waiting"> <- will schreiben
Step 4:
<access client="1" dataset="1" state="granting"> <- erlaubt Schreiben
<access client="2" dataset="1" state="waiting">
Step 5:
<access client="1" dataset="1" state="waiting"> <- will schreiben
<access client="2" dataset="1" state="writing"> <- schreibt gerade
Step 6:
<access client="1" dataset="1" state="waiting"> <- will schreiben
<- Schreiben fertig und liest nicht mehr
Step 7:
<access client="1" dataset="1" state="writing"> <- schreibt gerade
Step 8:
<- fertig