You should develop a system consisting of an application acting as a broker and several agents that need to communicate between them. The agents can only communicate in pairs (i.e. each agent can only communicate with one agent at the time). At any given time, several agents should be able to communicate in pairs. Each agent is controlled by a user. Each agent takes a message from the user and sends it to another agent or displays the message it receives to the user. The broker will keep an updated list of agents who have registered themselves as available for connection. The broker will also keep a list of agents that are connected and their status (i.e. are they available for communication? are they already busy communicating and then temporary unavailable for communication?, etc). If requested, the broker should make this information available to the agents. In this way, an agent can specify another agent it wishes to communicate with. Each agent can run on a different machine. Once two agents have agreed to communicate, messages should be routed directly from one agent to the other without using the broker as intermediary. Each agent should allow the user to:
In your report you should outline the major issues involved in this application pertaining to distributed systems (such as possible communication protocols that will be used in the system, concurrency control a justified selection of the architecture on which a prototype system may be based, the application you have built (design, implementation, evaluation etc).
Your program must be based on the case study scenario listed above and any assumptions you had to make. Please clearly state your assumptions.