Main Page   Namespace List   Class Hierarchy   Alphabetical List   Compound List   File List   Compound Members   File Members   Related Pages  

TransportLayerCommand.cpp

Go to the documentation of this file.
00001 #ifdef TEST
00002 
00003 #include "headers.h"
00004 
00005 const static string tlCommandString = "tl";
00006 const static string connectCommandString = "connect";
00007 const static string acceptCommandString = "accept";
00008 const static string sendDataCommandString = "senddata";
00009 const static string receiveDataCommandString = "receivedata";
00010 const static string disconnectCommandString = "disconnect";
00011 
00012 TransportLayerCommand::TransportLayerCommand() : Command() {
00013     m_tl = GlobalObjects::instance()->getTransportLayer();
00014 }
00015 
00016 
00017 void
00018 TransportLayerCommand::getHelp(std::ostream& s) {
00019     s << tlCommandString << "\n"
00020         << "  " << showCommandString << "\n"
00021         << "  " << connectCommandString << "\n"
00022         << "  " << acceptCommandString << "\n"
00023         << "  " << sendDataCommandString << " <data to send>\n"
00024         << "  " << receiveDataCommandString << "\n"
00025         << "  " << disconnectCommandString << "\n";
00026 }
00027 
00028 
00029 void
00030 TransportLayerCommand::getHtmlInterface(std::ostream& s) {
00031     s << "<h2>Transport Layer</h2>";
00032     beginUl(s);
00033     generateHtmlSubcmd(s, showCommandString, "Show");
00034     generateHtmlSubcmd(s, connectCommandString, "Connect");
00035     generateHtmlSubcmd(s, acceptCommandString, "Accept a connection (blocking)");
00036     generateHtmlSubcmdArg1(s, sendDataCommandString, "Send some data: ", "Send");
00037     generateHtmlSubcmd(s, receiveDataCommandString, "Receive some data");
00038     generateHtmlSubcmd(s, disconnectCommandString, "Disconnect");
00039     endUl(s);
00040 }
00041 
00042 
00043 
00044 void
00045 TransportLayerCommand::run(std::ostream& s) {
00046     if (m_args[1].empty()) {
00047         getHelp(s);
00048         return;
00049     }
00050 
00051     if (m_args[1] == showCommandString) {
00052         s << *m_tl->getServiceTable();
00053         s << *m_tl->getNetworkLayer();
00054     }
00055     else if (m_args[1] == connectCommandString) {
00056         if (!(m_serviceNumber = m_tl->connect())) {
00057             s << "Error";
00058         }
00059         s << "Connection made, service number: " << m_serviceNumber << "\n";
00060     }
00061     else if (m_args[1] == acceptCommandString) {
00062         if (!(m_serviceNumber = m_tl->listenAccept())) {
00063             s << "Error accepting connection\n";
00064         }
00065         else {
00066             s << "Got a connection on service " << m_serviceNumber << "\n";
00067         }
00068     }
00069     else if (m_args[1] == sendDataCommandString) {
00070         m_tl->send(m_serviceNumber, (unsigned char*)m_args[2].c_str(), m_args[2].size());
00071     }
00072     else if (m_args[1] == receiveDataCommandString) {
00073         const int bufSize = 8000;
00074         u_char* buf = new u_char[bufSize];
00075         MEMCHECK(buf);
00076         int size = m_tl->receive(m_serviceNumber, buf, bufSize);
00077         s << "Got " << size << " bytes" << "\n";
00078         
00079         for (int i=0; i < size; i++)
00080         {
00081             s << buf[i];
00082         }
00083         
00084         delete [] buf;
00085     }
00086     else if (m_args[1] == disconnectCommandString) {
00087         m_tl->disconnect(m_serviceNumber);
00088     }
00089 }
00090 
00091 
00092 string
00093 TransportLayerCommand::getCommandString() {
00094     return tlCommandString;
00095 }
00096 
00097 #endif
00098 

Generated at Thu Jul 11 13:31:52 2002 for Peekabooty by doxygen1.2.9 written by Dimitri van Heesch, © 1997-2001