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.

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.



