Ejemplo n.º 1
0
void FlatMessageIO::xmlExportContent(
	ExportContext& context) const {

	context.beginContent();

	// convert message to base64
	ASSERT(m_message);
	ssize_t flatSize = m_message->FlattenedSize();
	ASSERT(flatSize);
	char* flatData = new char[flatSize];
	status_t err = m_message->Flatten(flatData, flatSize);
	ASSERT(err == B_OK);
	
	// make plenty of room for encoded content (encode_base64 adds newlines)
	ssize_t base64Size = ((flatSize * 3) / 2);
	char* base64Data = new char[base64Size];
	ssize_t base64Used = encode_base64(base64Data, flatData, flatSize);
	base64Data[base64Used] = '\0';
	
	// write the data

	const char* pos = base64Data;
	while(*pos) {
		ssize_t chunk = 0;
		const char* nextBreak = strchr(pos, '\n');
		if(!nextBreak)
			chunk = strlen(pos);
		else
			chunk = nextBreak - pos;

		context.writeString(context.indentString());
		context.writeString(pos, chunk);
		context.writeString("\n");
		
		pos += chunk;
		if(*pos == '\n')
			++pos;
	}
	
	// clean up
	delete [] flatData;
	delete [] base64Data;
}
Ejemplo n.º 2
0
void ConnectionIO::xmlExportContent(
    ExportContext&						context) const {

    context.beginContent();

    // write output
    {
        context.beginElement(_OUTPUT_ELEMENT);
        context.beginContent();

        // describe the node
//		LiveNodeIO nodeIO(
//			m_manager,
//			dynamic_cast<NodeSetIOContext*>(&context),
//			m_outputNode);
        context.writeObject(m_outputNodeIO);

//		context.beginElement(_LIVE_NODE_ELEMENT);
//		if(m_outputNodeKey.Length()) {
//			context.writeAttr("key", m_outputNodeKey);
//		}
//		else {
//			_write_simple("name", m_outputNodeName.String(), context);
//			_write_node_kinds(m_outputNodeKind, context);
//		}
//		context.endElement(); // _LIVE_NODE_ELEMENT

        // describe the output

        _write_simple("name", m_outputName.String(), context);

        if(m_outputFormat.type > B_MEDIA_UNKNOWN_TYPE) {
            MediaFormatIO io(m_outputFormat);
            context.writeObject(&io);
        }

        context.endElement(); // _OUTPUT_ELEMENT
    }

    // write input
    {
        context.beginElement(_INPUT_ELEMENT);
        context.beginContent();

        // describe the node
//		LiveNodeIO nodeIO(
//			m_manager,
//			dynamic_cast<NodeSetIOContext*>(&context),
//			m_inputNode);
        context.writeObject(m_inputNodeIO);

//		context.beginElement(_LIVE_NODE_ELEMENT);
//		if(m_inputNodeKey.Length()) {
//			context.writeAttr("key", m_inputNodeKey);
//		}
//		else {
//			_write_simple("name", m_inputNodeName.String(), context);
//			_write_node_kinds(m_inputNodeKind, context);
//		}
//		context.endElement(); // _LIVE_NODE_ELEMENT

        // describe the input

        _write_simple("name", m_inputName.String(), context);

        if(m_inputFormat.type > B_MEDIA_UNKNOWN_TYPE) {
            MediaFormatIO io(m_inputFormat);
            context.writeObject(&io);
        }

        context.endElement(); // _INPUT_ELEMENT
    }

    // write requested format
    if(m_requestedFormat.type > B_MEDIA_UNKNOWN_TYPE) {
        MediaFormatIO io(m_requestedFormat);
        BString comment = "\n";
        comment << context.indentString();
        comment << "<!-- initial requested format -->";
        context.writeString(comment);
        context.writeObject(&io);
    }
}