/* ....[@@@..[@@@..............[@.................. MUD++ is a written from ....[@..[@..[@..[@..[@..[@@@@@....[@......[@.... scratch multi-user swords and ....[@..[@..[@..[@..[@..[@..[@..[@@@@@..[@@@@@.. sorcery game written in C++. ....[@......[@..[@..[@..[@..[@....[@......[@.... This server is an ongoing ....[@......[@..[@@@@@..[@@@@@.................. development project. All ................................................ contributions are welcome. ....Copyright(C).1995.Melvin.Smith.............. Enjoy. ------------------------------------------------------------------------------ Melvin Smith (aka Fusion) msmith@falcon.mercer.peachnet.edu MUD++ development mailing list mudpp-list@spice.com ------------------------------------------------------------------------------ node.h */ #include "socket.h" class Node { protected: char name[ 64 ]; char passwd[ 64 ]; char host[ 128 ]; int port; int tries; int maxtries; // how many times should we try connection time_t last; // last connect attempt time_t timeout; // time in between tries Socket * socket; // set if connected otherwise null public: Node() : port(0), tries(0), maxtries(0), timeout(0), socket(0) { *name = *passwd = *host = '\0'; } Node( char *n, char *p, char *h, int p, int t, int secs ) : port(p), tries(t), socket(0) { strcpy( name, n ); strcpy( passwd, p ); strcpy( host, h ); timeout.tv_sec = secs; timeout.tv_usec = 0; } char *getName(); char *getPasswd(); char *getHost(); int getPort(); int connect(); Socket * connected() { return socket; } int write( char * str ); }; inline int Node::connect() { socket = new Socket( host, port ); if( socket->error() ) { delete socket; socket = 0; tries++; last = time( 0 ); return; } socket->connect(); if( socket->error() ) { delete socket; socket = 0; tries++; last = time( 0 ); return; } socket->write( name ); socket->write( "\n\r" ); socket->write( passwd ); socket->write( "\n\r" ); } inline int Node::write( const char * str ) { if( socket ) return socket->write( str, strlen( str ) ); return -1; }