RageIRCd v2.0 (bluemoon): Module Objects
----------------------------------------

$Id: module-objects.txt,v 1.4.2.1 2005/02/21 02:32:45 amcwilliam Exp $
(C) 2000-2005 the RageIRCd Development Team, all rights reserved.

RageIRCd v2.0 provides a dynamic framework for server admins and developers 
alike, to extend the functionality of ircd. (See doc/dynamic-modules.txt 
for more information.)

This framework extends further into the core of ircd, to provide even more 
flexibility to server admins. Modules can now create new Commands, Events, 
Hooks, and Hook Events. However, a method of keeping track of new objects 
created by modules was needed. As a result, Module Objects were integrated.

Originally, modules interacted with the APIs to create new objects (i.e., 
command structures) directly, during their MOD_LOAD function. What's more, 
ircd relied on the MOD_UNLOAD function to tidy up (i.e., free any memory 
allocated by the module). MOD_UNLOAD also had to handle any errors that 
could occur.

Since module objects have been integrated, modules now just "register" 
their objects. IRCd no longer relies on the module to keep track of it's 
objects, nor memory freeing and error handling in MOD_UNLOAD. It's all 
done automatically.

Each dynamic object (Command, Event, Hook, Hook Event, Usermode) has its own API
for registering objects within ircd. These are documented within their own 
technical reference documents.

For information on the Module APIs (MOD_HEADER, MOD_LOAD, MOD_UNLOAD, 
MOD_SUCCESS & MOD_FAILURE), please refer to the Module API technical 
reference (module-api.txt).

End of document.
