Skip to content
Petr Bena edited this page Feb 27, 2019 · 7 revisions

General info

Building

Architecture

GrumpyChat components and how they work together

+--------------+                       +-----------------+
|GrumpyChat    <-----------+----------->Grumpyd          |
|Client (Qt UI)|           |           |Client (headless)|
+--^-----------+           |           +-------^---------+
   |                       |                   |
   |                       |                   |
+--+------------+     +----+-----+      +------+----+
|libirc2htmlcode|     |GrumpyCore<------+   libgp   |
+---------------+     +----^-----+      |GP protocol|
                           |            +-----------+
                           |
                     +-----+------+
                     |libircclient|
                     +-----^------+
                           |
                           |
                        +--+---+
                        |libirc|
                        +------+

GrumpyCore (libcore)

Contains common code for GrumpyChat, deals with

  • IRC and GP sessions
  • Scrollback concept and model
  • Configuration management
  • Command processing and autocompletion
  • Grumpyd client
  • SQLite interface

libirc

Very abstract base for IRC library that can be used as a base for IRC client or server library.

libircclient

Full featured IRC client library based on libirc

GrumpyChat (Qt UI)

Graphical frontend based on GrumpyCore, implements:

  • Graphical frontend for scrollbacks
  • Tree menu on side for scrollbacks
  • Text input box for commands
  • Graphical user menu

Grumpyd (Headless client)

Headless IRC client based on GrumpyCore that supports multiple user sessions, implements:

  • In-memory frontend for scrollbacks
  • Grumpyd server
  • User management

libgp

Low level binary protocol that is used for communication between GrumpyCore and Grumpyd

libirc2htmlcode

Library that converts IRC markup to html