[MUD-Dev] Re: DevMUD: Inheritable modules
The Arrow
arrow at trelleborg.mail.telia.com
Sat Oct 31 01:14:20 CET 1998
Well, this DevMUD thing really got me started... ;)
So, at the end of this mail I have included the first (?) 'Official
Proposal' to the DevMUD and MUD-Dev community.
It is about module interfaces and inheritance of those interfaces.
Since this only is a proposal (and the first version of it), I doubt that
anything of this will ever make it to the release of DevMUD.
Anyway, let the discussion begin!
/ Joachim
======================================================================
The Arrow Email: arrow at trelleborg.mail.telia.com
Joachim Pileborg WWW: http://w1.410.telia.com/~u41003102/
======================================================================
"They say I don't give a shit about anything," -- Magnus Uggla
"but I don't give a shit about that." (translated from swedish)
---------------------------------------------------------------------
This file is the first version of a proposition for module interfaces for
DevMUD.
DevMUD modules must have one public C function named get_interfaces.
This functions returns a pointer to a NULL terminated array of pointers to
module_interface structures.
The module_interface structure contains the following fields:
o Interface type
o An array of functions
o Interface name
The function array is a NULL terminated array of pointers to
interface_function structures. The interface_function struture contains
the following fields:
o Funciton name
o Pointer to the function
The function name is a predefined constant that is interface specific.
For example: The Net basic module could have the following function
names: MOD_NET_CONNECTTO, MOD_NET_WRITETO, and MOD_NET_READFROM.
All modules must at least implement the Module interface.
MUDs must have at least the following interfaces to be DevMUD compliant:
o Module
The Module interface contains functions to get info about the
module and configuring the module.
o Net
The Net module is an abstract interface, containing just dummy net
functions. Modules inheriting this interface must provide real
implementations for these functions.
The following interfaces are considered standard, and should either come
with the DevMUD package, or be easily found and added:
o TCPIP
A module for TCP/IP networks. Inherits from the Net interface.
o Telnet
A fully telnet compliant module. Inherits from the TCPIP interface.
o Command Parser
A basic command parser. The basic Command Parser module read
commands from the Telnet module.
o DB
Generic and abstract interface to databases. Modules inheriting
this interface must provide real implementation of theinterface.
o Compilation
Abstract interface for all MUD-language compilers. Modules
inheriting this interface must provide real implementation of the
interface.
o Virtual Machine
Abstract interface for all MUD-language interpreters. Modules
inheriting this interface must provide real implementation of the
interface.
The Module interface have functions for:
o Fetching name of the module
o Module instanciation
o Fetching what interface this module inherits
o Intermodule messaging
o Driver messaging
If the interface(s) this module provides is not recognised by the DevMUD
driver, the driver should store the interface(s) in a private database.
This database is not defined by this standard, and it is up to each DevMUD
implenetation on how to implement this database. The minimum requirement
for this database, is that it should store interface name and a complete
path to the loadable module.
Modules may be compiled in together with the driver (internal modules).
In this case, they need not be in the module database.
If a module inherits an interface not in the interface database, the
module is unloaded and an error message should be logged on the console
and sent as a message to all loaded modules.
More information about the mud-dev-archive
mailing list