# include <kernel/kernel.h> # include <kernel/user.h> inherit LIB_CONN; /* basic connection object */ object driver; /* driver object */ /* * NAME: create() * DESCRIPTION: initialize */ static void create(int clone) { if (clone) { ::create("telnet"); driver = find_object(DRIVER); } } /* * NAME: open() * DESCRIPTION: open the connection */ static int open() { ::open(allocate(driver->query_tls_size())); return FALSE; } /* * NAME: close() * DESCRIPTION: close the connection */ static void close(int dest) { ::close(allocate(driver->query_tls_size()), dest); } /* * NAME: receive_message() * DESCRIPTION: forward a message to listeners */ static void receive_message(string str) { ::receive_message(allocate(driver->query_tls_size()), str); } /* * NAME: set_mode() * DESCRIPTION: set the connection mode */ void set_mode(int newmode) { int mode; if (previous_program() == LIB_CONN || SYSTEM()) { mode = query_mode(); ::set_mode(newmode); if (newmode != mode && (newmode == MODE_NOECHO || newmode == MODE_ECHO)) { send_message(newmode - MODE_NOECHO); } } } /* * NAME: message_done() * DESCRIPTION: called when output is completed */ static void message_done() { ::message_done(allocate(driver->query_tls_size())); }