SourceForge Logo

Go to the SourceForge project home page








The HeavyMole architecture

Go to documentation index

Table of contents

General architecture

The general architecture of HeavyMole is as follows:

General architecture

  • Basics: objects not specific to HeavyMole
  • HeavyMole API: main objects composing a HeavyMole node
  • GUI: a graphical user interface

The two lowest layers can be reused if you want to write a new user interface, and they should thus be portable on all platforms.

Detailed architecture

Detailed architecture


  • LibThread: a simple multi-platorm thread package with synchronisation primitives
  • LibUtils: some useful basic objects
  • LibTCP: TCP server and client
  • LibUDP: UDP node

HeavyMole API:

  • LibHMBase: basic heavymole objects
  • LibHMD: connection with central servers
  • hmd: central servers
  • LibHMCP: heavymole communication protocol (search engine)
  • LibHMFTP: heavymole file transfer protocol
  • LibHMChat: heavymole chat protocol
  • LibHM: upper layer, containing one manager for each functionnality
    • QueryManager (search)
    • ChatManager (chat)
    • FTPManager (explorer)
    • TransferManager (downloads & uploads)

The libraries LibHMBase, LibHMD, LibHMCP, LibHMFTP and LibHMChat compose the core HeavyMole protocol and could be reused for all HeavyMole implementations.

Graphical User Interface:

  • HM_GUI: written with Gtkmm, a C++ wrapper over GTK+. - This page was last updated on November, 5th 2003