Subscribe to RSS Subscribe to Comments

entropical lukewarmity

U.S. forces seek to bring democracy and freedom to Iraq, the U.S. government is seeking to eliminate it here. - Irwin Schiff, author: 'The Federal Mafia'

networking

tirc is an IRC client with different goals than most clients. Its primary features are its light weight, and flexibility. The concept is a tiny framework around which plugins and other programs provide the functionality. tirc is supposed to simply be the backbone of an IRC connection. Binaries and source will be available soon. Anyone interested in helping out should email me: deep6 [at] clanpig [dot] com

Current features include:

  • tiny compiled size, 53.5KB
  • fully multithreaded DCC file/chat
  • small memory footprint, less than 2.5MB, even with multiple file sends
  • easily updated behavior via beautiful Object Pascal
  • intelligent prioritizing queues

Planned features:

  • reverse DCC connections (send through firewall)
  • admin console with full shell via DCC Chat
  • DLL plugin architecture

tirc is placed on hold while I focus on a robust Client/Server architecture to make it easy to implement multi-threaded Servers and Clients for any protocol.

This UML diagram is only as complete as the classes I’ve written so far, but it generally outlines the inheritance and linkage of the Client/Server Daemon model.
UML diagram of client/server daemon model

In most cases, 100% of the protocol can be implemented in a single Execute procedure, such as the very bottom classes, TTCPEchoClientThread and TTCPEchoServerThread, both inherit from their respective ForkThreads, as indiciated by the arrows. The ForkThreads are maintained by the ThreadMgr, which is a component of the Daemon. The Daemon is responsible for the lifecycle of the entire process, ie. connect/disconnect/reconnect. Therefore, rather than minding a loose collection of threads, only the TTCPDaemon-type object needs to be dealt with. Simply destroy it to close all connections and unload the object, it will automatically terminate all threads and wait for them to close, eliminating potential memory leaks.

No comments yet. Be the first.

Leave a reply

You must be logged in to post a comment.

Theme based on Fluidity, redesigned by Kaushal Sheth and minimized by deep6