/* */ #include "PeerMessage.h" #include "Util.h" void PeerMessage::setBitfield(const unsigned char* bitfield, int bitfieldLength) { if(this->bitfield != NULL) { delete [] bitfield; } this->bitfieldLength = bitfieldLength; this->bitfield = new unsigned char[this->bitfieldLength]; memcpy(this->bitfield, bitfield, this->bitfieldLength); } void PeerMessage::setBlock(const char* block, int blockLength) { if(this->block != NULL) { delete [] block; } this->blockLength = blockLength; this->block = new char[this->blockLength]; memcpy(this->block, block, this->blockLength); } string PeerMessage::toString() const { switch(id) { case CHOKE: return "choke"; case UNCHOKE: return "unchoke"; case INTERESTED: return "interested"; case NOT_INTERESTED: return "not interested"; case HAVE: return "have index="+Util::itos(index); case BITFIELD: return "bitfield "+Util::toHex(bitfield, bitfieldLength); case REQUEST: return "request index="+Util::itos(index)+", begin="+Util::itos(begin)+ ", length="+Util::itos(length); case PIECE: return "piece index="+Util::itos(index)+", begin="+Util::itos(begin)+ ", length="+Util::itos(blockLength); case CANCEL: return "calcel index="+Util::itos(index)+", begin="+Util::itos(begin)+ ", length="+Util::itos(length); case KEEP_ALIVE: return "keep alive"; default: return "unknown"; } }