NodeInfo.h

Go to the documentation of this file.
00001 /*
00002 
00003 Copyright (C) 2005-2007 by Peter Dimov.
00004 
00005 This file is part of Calitko (http://www.calitko.org).
00006 
00007 Calitko is free software; you can redistribute it and/or modify
00008 it under the terms of the GNU General Public License as published by
00009 the Free Software Foundation; either version 2 of the License, or
00010 (at your option) any later version.
00011 
00012 Calitko is distributed in the hope that it will be useful,
00013 but WITHOUT ANY WARRANTY; without even the implied warranty of
00014 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00015 GNU General Public License for more details.
00016 
00017 You should have received a copy of the GNU General Public License
00018 along with Calitko; if not, write to the Free Software
00019 Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
00020 
00021 */
00022 
00023 #ifndef GNUTELLA__NODE_INFO_H
00024 #define GNUTELLA__NODE_INFO_H
00025 
00026 #include "Protocols/Transports/NodeAddress.h"
00027 #include "NodeType.h"
00028 #include "Utils/Version.h"
00029 #include "Gnutella/Packets/VendorCode.h"
00030 
00031 // Open containing namespaces:
00032 namespace Gnutella {
00034 
00035 using Protocols::Transports::NodeAddress;
00036 using Gnutella::NodeType;
00037 using Gnutella::Packets::VendorCode;
00038 using Utils::Version;
00039 
00040 // \todo node info gathered in handshaking and from pongs
00041 struct NodeInfo
00042 {
00043     NodeAddress     address; // IP:port of node
00044     QString         identification; // Servent software + version (HTTP format)
00045     VendorCode      vendorCode;
00046     Version         serventVersion;
00047     NodeType        type;   // Gnutella node type
00048     bool            ultrapeerNeeded;
00049     Version         pongCaching;
00050     Version         ggep;
00051     Version         queryRouting;
00052     Version         ultrapeerQueryRouting;
00053     Version         dynamicQuerying;
00054     Version         guess;
00055     Version         vendorMessage;
00056     Version         extProbes; // ??
00057     Version         byePacket;
00058     uint            degree;
00059     uint            maxTtl;
00060     QString         encoding;
00061     int             freeUltrapeerSlots;
00062     int             freeLeafSlots;
00063     int             dailyUptime;
00064 
00065                     NodeInfo();
00066                     ~NodeInfo();
00067 };
00068 
00069 QDataStream & operator << (QDataStream &stream, const NodeInfo &nodeInfo);
00070 QDataStream & operator >> (QDataStream &stream, NodeInfo &nodeInfo);
00071 
00072 // Close containing namespaces:
00073 } // namespace Gnutella
00075 
00076 #endif // GNUTELLA__NODE_INFO_H