const encoding encoding::decide( const shared_ptr <const contentHandler>& data, const EncodingUsage usage ) { // Do not re-encode data if it is already encoded if (data->isEncoded() && !data->getEncoding().shouldReencode()) { return data->getEncoding(); } encoding enc; if (usage == USAGE_TEXT && data->isBuffered() && data->getLength() > 0 && data->getLength() < 32768) { // Extract data into temporary buffer string buffer; utility::outputStreamStringAdapter os(buffer); data->extract(os); os.flush(); enc = decideImpl(buffer.begin(), buffer.end()); } else { enc = encoding(encodingTypes::BASE64); } enc.setUsage(usage); return enc; }
const encoding encoding::decide (ref <const contentHandler> data, const EncodingUsage usage) { encoding enc; if (usage == USAGE_TEXT && data->isBuffered() && data->getLength() > 0 && data->getLength() < 32768) { // Extract data into temporary buffer string buffer; utility::outputStreamStringAdapter os(buffer); data->extract(os); os.flush(); enc = decideImpl(buffer.begin(), buffer.end()); } else { enc = encoding(encodingTypes::BASE64); } enc.setUsage(usage); return enc; }