/* * Copyright (C) 2008-2014 TrinityCore * Copyright (C) 2005-2009 MaNGOS * * This program is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License as published by the * Free Software Foundation; either version 2 of the License, or (at your * option) any later version. * * This program is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for * more details. * * You should have received a copy of the GNU General Public License along * with this program. If not, see . */ #include "ByteBuffer.h" #include "Common.h" #include "Log.h" #include ByteBufferPositionException::ByteBufferPositionException(bool add, size_t pos, size_t size, size_t valueSize) { std::ostringstream ss; ss << "Attempted to " << (add ? "put" : "get") << " value with size: " << valueSize << " in ByteBuffer (pos: " << pos << " size: " << size << ")"; message().assign(ss.str()); } ByteBufferSourceException::ByteBufferSourceException(size_t pos, size_t size, size_t valueSize) { std::ostringstream ss; ss << "Attempted to put a " << (valueSize > 0 ? "NULL-pointer" : "zero-sized value") << " in ByteBuffer (pos: " << pos << " size: " << size << ")"; message().assign(ss.str()); } void ByteBuffer::print_storage() const { if (!sLog->ShouldLog("network", LOG_LEVEL_TRACE)) // optimize disabled trace output return; std::ostringstream o; o << "STORAGE_SIZE: " << size(); for (uint32 i = 0; i < size(); ++i) o << read(i) << " - "; o << " "; TC_LOG_TRACE("network", "%s", o.str().c_str()); } void ByteBuffer::textlike() const { if (!sLog->ShouldLog("network", LOG_LEVEL_TRACE)) // optimize disabled trace output return; std::ostringstream o; o << "STORAGE_SIZE: " << size(); for (uint32 i = 0; i < size(); ++i) { char buf[2]; snprintf(buf, 2, "%c", read(i)); o << buf; } o << " "; TC_LOG_TRACE("network", "%s", o.str().c_str()); } void ByteBuffer::hexlike() const { if (!sLog->ShouldLog("network", LOG_LEVEL_TRACE)) // optimize disabled trace output return; uint32 j = 1, k = 1; std::ostringstream o; o << "STORAGE_SIZE: " << size(); for (uint32 i = 0; i < size(); ++i) { char buf[3]; snprintf(buf, 3, "%2X ", read(i)); if ((i == (j * 8)) && ((i != (k * 16)))) { o << "| "; ++j; } else if (i == (k * 16)) { o << "\n"; ++k; ++j; } o << buf; } o << " "; TC_LOG_TRACE("network", "%s", o.str().c_str()); }