An application layer protocol for simultaneous file editing by two or more users design and implementation - Aduana, Arlene Dayco (1997)
The main objective of this study was to design an application layer protocol for group communication operations, specifically simultaneous editing of a single file by two or more remore users. Two alternative approaches to the current concurrency control techniques were provided. The first approach subscribed to the First-Come, First-Served (FCFS) discipline, while the second followed a priority algorithm. The Simeditor provided a way for two or more users to edit the same file simultaneously using an FCFS discipline or interactively using a priority scheme. The prototype editor was implemented using Tool Command Language - Distributed Processing extension (Tcl-DP), an offshoot of Tcl which was designed and crafted by Prof. John Ousterhout of U.C. Berkeley, running on the Sun Open Windows environment. The simultaneous editor (Simeditor) was devised using a Client-Server solution. Only one server editor was required, but many client editors could connect to the single server. The server was ran at a certain host machine and was assigned an unused port. The server then listened to this port for client connections. Several client editors were then connected to this server. Each client submitted a username and a priority number and was assigned a file handler. Users on each client editor are able to edit a single file simultaneously. Depending on the mode, the changes made in the client-editor buffers are reflected to the server text buffer by lines or by characters. The two modes are referred to as Normal Mode and Interactive Mode. The Normal Mode subscribed to the FCFS discipline, while the Interactive Mode to the priority algorithm. Significantly tradeoffs were made regarding flexibility and ease of use for the clients at the expense of speed and efficiency of performance of the Simeditor. As far as cleint-server communications are concerned, several measures were taken so as to insure the prevention of deadlocks. Timeouts and error handlers were used for this purpose.