- serverM.c: It receives usernames the client entered and check if they are in either serverA or serverB. Then, it sends a reply to the client if any of usernames does not exist in either servers. If there are usernames existing in serverA or serverB, it sends only those names excluding not existing usernames to corresponding servers. Then, it receives the time intersections from serverA and serverB and find the intersection of both. Finally, it sends the final result(time intersections) to the client.
- serverA.c: First of all, it sends usernames that it has to the main server. Then, it receives usernames from the main server and find time intersections between received users, and then sends the time intersection of them to the main server.
- serverB.c: First of all, it sends usernames that it has to the main server. Then, it receives usernames from the main server and find time intersections between received users, and then sends the time intersection of them to the main server.
- client.c: The client enters usernames to know their common availability and receives usernames that do not exist in back-servers and also receives intersections of time availability between entered usernames.