/*
* NAME: listener.c
* DESCRIPTION: a generic port listener
*/
# define DEBUG 1
# include <objects.h>
private string prototype;
private object listener;
/*
* NAME: open()
* DESCRIPTION: called by DGD when the network port is opened
*/
static
void open(void)
{ /* do nothing */ }
/*
* NAME: destruct()
* DESCRIPTION: called to destroy this object
*/
static
void destruct(void)
{ destruct_object(this_object()); }
/*
* NAME: close()
* DESCRIPTION: called by DGD when the network port is closed
*/
static
void close(void)
{ call_out("destruct", 1); }
/*
* NAME: configure()
* DESCRIPTION: set how to yield a connection object
*/
varargs
void configure(string nprototype, object nlistener)
{
prototype = nprototype;
listener = nlistener;
}
/*
* NAME: connection()
* DESCRIPTION: called by DGD when a connection is established
*/
static
object connection(string host, int port)
{ return DRIVER->init_connection(clone_object(prototype), listener, port); }