/* */ #ifndef _D_PEER_MESSAGE_UTIL_H_ #define _D_PEER_MESSAGE_UTIL_H_ #include "ChokeMessage.h" #include "UnchokeMessage.h" #include "InterestedMessage.h" #include "NotInterestedMessage.h" #include "HaveMessage.h" #include "BitfieldMessage.h" #include "RequestMessage.h" #include "CancelMessage.h" #include "PieceMessage.h" #include "HandshakeMessage.h" #include "KeepAliveMessage.h" #include "PortMessage.h" #include "HaveAllMessage.h" #include "HaveNoneMessage.h" #include "PeerConnection.h" #include "common.h" #define MAX_BLOCK_LENGTH (128*1024) class PeerMessageUtil { private: PeerMessageUtil() {} public: static int getIntParam(const char* msg, int offset); static int getShortIntParam(const char* msg, int offset); static void setIntParam(char* dest, int param); static int getId(const char* msg); static void checkIndex(int index, int pieces); static void checkBegin(int begin, int pieceLength); static void checkLength(int length); static void checkRange(int begin, int length, int pieceLength); static void checkBitfield(const unsigned char* bitfield, int bitfieldLength, int pieces); static void checkHandshake(const HandshakeMessage* message, const unsigned char* infoHash); static void createPeerMessageString(char* msg, int msgLength, int payloadLength, int messageId); }; #endif // _D_PEER_MESSAGE_UTIL_H_