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

Node.cpp

Go to the documentation of this file.
00001 #include "headers.h"
00002 
00008 
00009 string Node::beginTag="<Node>";
00010 string Node::endTag="</Node>";
00011 string Node::TRUSTED_TAG="isTrusted";
00012 string Node::FIREWALL_TAG="isFirewalled";
00013 string Node::NAT_TAG="isNatted";
00014 string Node::SOCKET_ADDRESS_TAG="socketAddress";
00015 string Node::RTT_TAG="rtt";
00016 string Node::VERSION_TAG="version";
00017 
00021 Node::Node() {
00022     setIsTrusted(false);
00023     setIsNatted(true);
00024     setIsFirewalled(false);
00025     setVersionNumber(VERSION_NUMBER);
00026     m_rtt = TimeValue(1,0); // must initialize to something other than zero
00027     m_isConnected = false;
00028     m_cantConnect = false;
00029 } // ctor
00030 
00031 
00032 Node::Node(const Node& src) {
00033     m_socketAddress = src.m_socketAddress;
00034     m_isTrusted = src.m_isTrusted;
00035     m_isFirewalled = src.m_isFirewalled;
00036     m_isNatted = src.m_isNatted;
00037     m_versionNumber = src.m_versionNumber;
00038     m_isConnected = src.m_isConnected;
00039 } // copy ctor
00040 
00041 
00045 Node::~Node() {
00046 } // dtor
00047 
00048 
00049 SocketAddress*
00050 Node::getSocketAddress() {
00051     return &m_socketAddress;
00052 } // fn getSocketAddress
00053 
00054 
00058 bool 
00059 Node::isConnected() {
00060     return m_isConnected;
00061 } // fn isConnected
00062 
00063 
00067 int
00068 Node::getVersionNumber() {
00069     return m_versionNumber;
00070 } // fn getVersionNumber
00071 
00072 
00076 void
00077 Node::setVersionNumber(int value) {
00078     m_versionNumber = value;
00079 } // fn setVersionNumber
00080 
00081 
00085 bool 
00086 Node::isNatted() {
00087     return m_isNatted;
00088 } // fn isNatted
00089 
00090 
00094 bool 
00095 Node::isTrusted() {
00096     return m_isTrusted;
00097 } // fn isTrusted
00098 
00099 
00103 bool 
00104 Node::isFirewalled() {
00105     return m_isFirewalled;
00106 } // fn isFirewalled
00107 
00108 
00112 void
00113 Node::setSocketAddress(SocketAddress* socketAddress) {
00114     m_socketAddress = *socketAddress;
00115 }
00116 
00117 
00118 void 
00119 Node::setIsNatted(bool val) {
00120     m_isNatted = val;
00121 } // fn setIsNatted
00122 
00123 
00124 void 
00125 Node::setIsTrusted(bool val) {
00126     m_isTrusted = val;
00127 } // fn setIsTrusted
00128 
00129 
00130 void 
00131 Node::setIsFirewalled(bool val) {
00132     m_isFirewalled = val;
00133 } // fn setIsFirewalled
00134 
00135 
00136 bool
00137 Node::cantConnect() {
00138     return m_cantConnect;
00139 } // fn cantConnect
00140 
00141 
00142 void
00143 Node::setCantConnect(bool value) {
00144     m_cantConnect = value;
00145 } // fn setCantConnect
00146 
00147 
00151 void 
00152 Node::handleEvent(ObservableInterface* connection, int eventType, void* object) {
00153     if (eventType == ConnectionInterface::CONNECTION_CLOSED) {
00154         m_isConnected = false;
00155     }
00156     else if (eventType == ConnectionInterface::CONNECTION_OPENED) {
00157         m_isConnected = true;
00158     }
00159 } // fn handleEvent
00160 
00161 
00165 TimeValue 
00166 Node::getRtt() {
00167     return m_rtt;
00168 } // fn getRtt
00169 
00170 
00174 void
00175 Node::setRtt(TimeValue value) {
00176     m_rtt = value;
00177 } // fn setRtt
00178 
00179 
00183 std::istream& operator >>(std::istream& in, Node& node) {
00184     string buf;
00185     getline(in, buf, '\n');
00186 
00187     while (!in.eof() && (buf.find(Node::endTag) == string::npos)) {
00188         if (Config::matchTag(buf, Node::SOCKET_ADDRESS_TAG)) {
00189             SocketAddress socketAddress;
00190             socketAddress.read(buf.substr(Node::SOCKET_ADDRESS_TAG.length() + 1));
00191             node.setSocketAddress(&socketAddress);
00192         }
00193         else if (Config::matchTag(buf, Node::NAT_TAG)) {
00194             node.setIsNatted(Config::readBool(buf, Node::NAT_TAG));
00195         }
00196         else if (Config::matchTag(buf, Node::FIREWALL_TAG)) {
00197             node.setIsFirewalled(Config::readBool(buf, Node::FIREWALL_TAG));
00198         }
00199         else if (Config::matchTag(buf, Node::TRUSTED_TAG)) {
00200             node.setIsTrusted(Config::readBool(buf, Node::TRUSTED_TAG));
00201         }
00202         else if (Config::matchTag(buf, Node::RTT_TAG)) {
00203 
00204         }
00205         else if (Config::matchTag(buf, Node::VERSION_TAG)) {
00206             node.setVersionNumber(Config::readInt(buf, Node::VERSION_TAG));
00207         }
00208         getline(in, buf, '\n');   
00209     }    
00210     return in;
00211 }// fn >>
00212 
00213 
00214 void
00215 Node::toStream(std::ostream& out) {
00216     out << Node::beginTag << "\n";
00217     out << Node::SOCKET_ADDRESS_TAG << DELIM << m_socketAddress << "\n";
00218     out << Node::NAT_TAG << DELIM << boolToString(m_isNatted) << "\n";
00219     out << Node::FIREWALL_TAG << DELIM << boolToString(m_isFirewalled) << "\n";
00220     out << Node::TRUSTED_TAG << DELIM << boolToString(m_isTrusted) << "\n";
00221     out << Node::RTT_TAG << DELIM << m_rtt << "\n";
00222     out << Node::VERSION_TAG << DELIM << m_versionNumber << "\n";
00223     out << Node::endTag << "\n";
00224 } // fn toStream
00225 
00226 
00230 bool 
00231 Node::equals(Node* node) {
00232         return (this->getSocketAddress()->getIpAddress().equals(node->getSocketAddress()->getIpAddress()));
00233 } // fn equals
00234 
00235 
00239 bool 
00240 Node::equals(ConnectionInterface* connection) {
00241     return (this->getSocketAddress()->getIpAddress().equals(connection->getSocketAddress()->getIpAddress()));
00242 } // fn equals
00243 

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