00001 #ifndef __IMHEREPACKET_H
00002 #define __IMHEREPACKET_H
00003
00004 #include "NpPacket.h"
00005
00006 class ImHerePacket : public NpPacket {
00007 public:
00008 ImHerePacket();
00009 virtual ~ImHerePacket() {}
00010 ImHerePacket(unsigned char* rawData);
00011
00012 unsigned int getId();
00013 void setId(unsigned int id);
00014
00015 unsigned short getVersionNumber();
00016 void setVersionNumber(unsigned short versionNumber);
00017
00018 bool isNatted();
00019 void setIsNatted(bool);
00020
00021 bool isFirewalled();
00022 void setIsFirewalled(bool);
00023
00024 bool isTrusted();
00025 void setIsTrusted(bool);
00026
00027 unsigned short getPort();
00028 void setPort(unsigned short port);
00029
00030 IpAddress getIp();
00031 void setIp(IpAddress ip);
00032
00033 virtual unsigned char* getRawData();
00034 virtual void toStream(std::ostream&);
00035
00036 private:
00037 OS_SPEC_ENUM Offsets
00038 {
00039 IdOffset = NP_HEADER_LENGTH + 0,
00040 VersionNumberOffset = NP_HEADER_LENGTH + 4,
00041 CapabilityOffset = NP_HEADER_LENGTH + 4,
00042 PortOffset = NP_HEADER_LENGTH + 5,
00043 IpOffset = NP_HEADER_LENGTH + 7
00044 };
00045
00046 OS_SPEC_ENUM Capabilities
00047 {
00048 NatBit = 0x08,
00049 FirewallBit = 0x04,
00050 TrustedBit = 0x02,
00051 IpVersionBit = 0x01
00052 };
00053
00055 unsigned int m_id;
00056
00058 unsigned short m_versionNumber;
00059
00061 bool m_isFirewalled;
00062
00064 bool m_isTrusted;
00065
00067 bool m_isNatted;
00068
00070 unsigned short m_port;
00071
00073 IpAddress m_ip;
00074
00075 };
00076
00077 #endif
00078