The DiMaWo framework eases the development of distributed applications based on a Master/Worker architecture. The framework provides common services (broadcasting, leader election, etc.) that are implemented in a mostly decentralized way.

DiMaWo applications are composed of agents interacting in an asynchronous way. The user must at least provide 2 types of agents: the {@link be.ulg.montefiore.dimawo.WorkerAgent Worker Agent} (WA) and the {@link be.ulg.montefiore.dimawo.MasterAgent Master Agent} (MA). He does so through a specific implementation of {@link be.ulg.montefiore.dimawo.MasterWorkerFactory Master/Worker Factory interface}. The WA implements the workers of the application and the MA the master. DiMaWo provides generic "executable" (i.e defining a static main method) classes that can be used to easily deploy a DiMaWo application (see {@link be.ulg.montefiore.dimawo.exec exec} package).

In addition to user provided agents, a DiMaWo application implies several core agents:

Each core agent is instantiated one time per computer running a DiMaWo application's process. Each computer therefore also runs a WA and, if the computer is the elected leader, the MA.

DiMaWo provides agents that implement a simple file transfer protocol that uses DiMaWo's COM. In particular, these agents are used by the FSA. For more details, see {@link be.ulg.montefiore.dimawo.fileTransfer fileTransfer} package.