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