Dokumentation zu: i3d(WL)

HR Image

	Intermud 3 Daemon

	This daemon gives your mud the ability to connect to the tcp
	and router based Intermud 3 network. You will find some
	implementation specific notes in this document. The protocol
	is described elsewhere (e.g. You should be
	quite familiar with the protocol layout prior reading this.

	The i3d connects via tcp to the router. LPmud does not support
	them within the driver - the (x)erq is used for this. Some
	implementations communicate directly with the erq wich makes
	them hard to maintain. And maybe you would like to have sockets
	for other things as well. So this implementation is based on a
	socketd implemented in LPC. See sockets(WL) for details.

	After loading the i3d it collects all present modules with their
	services. The function ServiceQuery() is therefor called in every
	object in the I3_TOOLDIR.

	The Modules answer with a call to RegisterService() in the i3d:
        RegisterService(string general, string type, closure cb, mixed* ass)
	'general' is the module's main name. It has to be specified only
	on the first call if the module wants to register multiple services.
	If the name is prependet with '!' it is not used externally, means
	it is not added to the 'supported services' mapping. This is for
	modules like the 'error' handler module. The type is the serviced
	service-id. Closure should point to a static function which handles
	the service request.

	'ass' specifies some type and size assertions about the handled
	packets. If an incoming packet does not match your expected format it
	is simply dropped. Your module does not need to check the types
	anymore. The assertion array consists of:
	({ ({ "Name Of Field",  Type [, Type 2 [, Type 3]] }),
	   ({ "2nd Field Name", Type, .. }), .. })

	Note that the mudlist and error module must exist for correct
	function of the daemon. If you do not handle the chanlist
	packages you also have to change the startup procedure, setting
	the i3d to *RUN* after the first mudlist packet (which ist not quite
	correct, you should at least have some chanlist dummy handler).

	If the router answers our connect with a different router package
	we disconnect und reconnect to the new router according to the
	specs (this happend only once). We connect based on the DNS Name
	of the router, so this should nearly never happen. If it happens
	don't forget to change the router's DNS name.

	An incoming packet will be type checked according to the packet's
	assertions and dispatched to the appropriate module.

	... to be continued and to be rewritten ;o)

	sockets(WL), intermud(C)

Start » Magierhandbuch » Docu » Konzepte » I3d Letzte Generierung: 16.04.2009, 21:44
Email an:
Valid HTML 4.01!