void Document::write(BinaryWriter& writer) { if ( _elements.empty() ) { writer << 5; } else { std::stringstream sstream; Poco::BinaryWriter tempWriter(sstream); for(ElementSet::iterator it = _elements.begin(); it != _elements.end(); ++it) { tempWriter << static_cast<unsigned char>((*it)->type()); BSONWriter(tempWriter).writeCString((*it)->name()); Element::Ptr element = *it; element->write(tempWriter); } tempWriter.flush(); Poco::Int32 len = static_cast<Poco::Int32>(5 + sstream.tellp()); /* 5 = sizeof(len) + 0-byte */ writer << len; writer.writeRaw(sstream.str()); } writer << '\0'; }
void RTMFPWriter::flush(BinaryWriter& writer,UInt64 stage,UInt8 flags,bool header,const UInt8* data,UInt16 size) { if(_stageAck==0 && header) flags |= MESSAGE_HEADER; if(size==0) flags |= MESSAGE_ABANDONMENT; if(state()==CLOSED && _messages.size()==1) // On LAST message flags |= MESSAGE_END; // TRACE("RTMFPWriter ",id," stage ",stage); writer.write8(flags); if(header) { writer.write7BitLongValue(id); writer.write7BitLongValue(stage); writer.write7BitLongValue(stage-_stageAck); // signature if(_stageAck==0) { writer.writeString8(signature); // No write this in the case where it's a new flow! if(flowId>0) { writer.write8(1+Util::Get7BitValueSize(flowId)); // following size writer.write8(0x0a); // Unknown! writer.write7BitLongValue(flowId); } writer.write8(0); // marker of end for this part } } if (size > 0) writer.writeRaw(data, size); }
// Writer audio or video packet void FLV::write(BinaryWriter& writer,UInt8 track,UInt32 time,const UInt8* data,UInt32 size) { /// 11 bytes of header writer.write8(track&AUDIO ? AMF::AUDIO : AMF::VIDEO); // size on 3 bytes writer.write24(size); // time on 3 bytes writer.write24(time); // unknown 4 bytes set to 0 writer.write32(0); /// playload writer.writeRaw(data, size); /// footer writer.write32(11+size); }
void BinaryReaderWriterTest::write(BinaryWriter& writer) { writer << true; writer << false; writer << 'a'; writer << (short) -100; writer << (unsigned short) 50000; writer << -123456; writer << (unsigned) 123456; writer << (long) -1234567890; writer << (unsigned long) 1234567890; #if defined(POCO_HAVE_INT64) writer << (Int64) -1234567890; writer << (UInt64) 1234567890; #endif writer << (float) 1.5; writer << (double) -1.5; writer << "foo"; writer << ""; writer << std::string("bar"); writer << std::string(); writer.write7BitEncoded((UInt32) 100); writer.write7BitEncoded((UInt32) 1000); writer.write7BitEncoded((UInt32) 10000); writer.write7BitEncoded((UInt32) 100000); writer.write7BitEncoded((UInt32) 1000000); #if defined(POCO_HAVE_INT64) writer.write7BitEncoded((UInt64) 100); writer.write7BitEncoded((UInt64) 1000); writer.write7BitEncoded((UInt64) 10000); writer.write7BitEncoded((UInt64) 100000); writer.write7BitEncoded((UInt64) 1000000); #endif writer.writeRaw("RAW"); }
void DataTest::writeToBLOB(BinaryWriter& writer) { writer << true; writer << false; writer << 'a'; writer << (short) -100; writer << (unsigned short) 50000; writer << -123456; writer << (unsigned) 123456; writer << (long) -1234567890; writer << (unsigned long) 1234567890; writer << (Int64) -1234567890; writer << (UInt64) 1234567890; writer << (float) 1.5; writer << (double) -1.5; writer << "foo"; writer << ""; writer << std::string("bar"); writer << std::string(); writer.write7BitEncoded((UInt32) 100); writer.write7BitEncoded((UInt32) 1000); writer.write7BitEncoded((UInt32) 10000); writer.write7BitEncoded((UInt32) 100000); writer.write7BitEncoded((UInt32) 1000000); writer.write7BitEncoded((UInt64) 100); writer.write7BitEncoded((UInt64) 1000); writer.write7BitEncoded((UInt64) 10000); writer.write7BitEncoded((UInt64) 100000); writer.write7BitEncoded((UInt64) 1000000); writer.writeRaw("RAW"); }
// Write header void MPEGTS::write(BinaryWriter& writer,UInt8 track) { // TODO Deal with audio stream only + refactorize writer.writeRaw(EXPAND_DATA_SIZE("\x47\x40\x00\x30\xa6\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\xb0\x0d\x00\x01\xc1\x00\x00\x00\x01\xe0\x20\xa2\xc3\x29\x41")); writer.writeRaw(EXPAND_DATA_SIZE("\x47\x40\x20\x30\x9c\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x02\xb0\x17\x00\x01\xc1\x00\x00\xe0\x40\xf0\x00\x1b\xe0\x40\xf0\x00\x0f\xe0\x60\xf0\x00\x66\x75\xc4\x68")); }