Пример #1
0
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;
}
Пример #2
0
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;
}