void FlowWriter::flush(PacketWriter& writer,UInt64 stage,UInt8 flags,bool header,BinaryReader& reader,UInt16 size) { if(_stageAck==0 && header) flags |= MESSAGE_HEADER; if(size==0) flags |= MESSAGE_ABANDONMENT; if(_closed && _messages.size()==1) // On LAST message flags |= MESSAGE_END; // TRACE("FlowWriter %u stage %u",id,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) { reader.readRaw(writer.begin()+writer.position(),size); writer.next(size); } }
void DataTest::readFromBLOB(BinaryReader& reader) { bool b = false; reader >> b; assert (b); reader >> b; assert (!b); char c = ' '; reader >> c; assert (c == 'a'); short shortv = 0; reader >> shortv; assert (shortv == -100); unsigned short ushortv = 0; reader >> ushortv; assert (ushortv == 50000); int intv = 0; reader >> intv; assert (intv == -123456); unsigned uintv = 0; reader >> uintv; assert (uintv == 123456); long longv = 0; reader >> longv; assert (longv == -1234567890); unsigned long ulongv = 0; reader >> ulongv; assert (ulongv == 1234567890); Int64 int64v = 0; reader >> int64v; assert (int64v == -1234567890); UInt64 uint64v = 0; reader >> uint64v; assert (uint64v == 1234567890); float floatv = 0.0; reader >> floatv; assert (floatv == 1.5); double doublev = 0.0; reader >> doublev; assert (doublev == -1.5); std::string str; reader >> str; assert (str == "foo"); reader >> str; assert (str == ""); reader >> str; assert (str == "bar"); reader >> str; assert (str == ""); UInt32 uint32v; reader.read7BitEncoded(uint32v); assert (uint32v == 100); reader.read7BitEncoded(uint32v); assert (uint32v == 1000); reader.read7BitEncoded(uint32v); assert (uint32v == 10000); reader.read7BitEncoded(uint32v); assert (uint32v == 100000); reader.read7BitEncoded(uint32v); assert (uint32v == 1000000); reader.read7BitEncoded(uint64v); assert (uint64v == 100); reader.read7BitEncoded(uint64v); assert (uint64v == 1000); reader.read7BitEncoded(uint64v); assert (uint64v == 10000); reader.read7BitEncoded(uint64v); assert (uint64v == 100000); reader.read7BitEncoded(uint64v); assert (uint64v == 1000000); reader.readRaw(3, str); assert (str == "RAW"); }
void BinaryReaderWriterTest::read(BinaryReader& reader) { bool b; reader >> b; assert (b); reader >> b; assert (!b); char c; reader >> c; assert (c == 'a'); short shortv; reader >> shortv; assert (shortv == -100); unsigned short ushortv; reader >> ushortv; assert (ushortv == 50000); int intv; reader >> intv; assert (intv == -123456); unsigned uintv; reader >> uintv; assert (uintv == 123456); long longv; reader >> longv; assert (longv == -1234567890); unsigned long ulongv; reader >> ulongv; assert (ulongv == 1234567890); #if defined(POCO_HAVE_INT64) Int64 int64v; reader >> int64v; assert (int64v == -1234567890); UInt64 uint64v; reader >> uint64v; assert (uint64v == 1234567890); #endif float floatv; reader >> floatv; assert (floatv == 1.5); double doublev; reader >> doublev; assert (doublev == -1.5); std::string str; reader >> str; assert (str == "foo"); reader >> str; assert (str == ""); reader >> str; assert (str == "bar"); reader >> str; assert (str == ""); UInt32 uint32v; reader.read7BitEncoded(uint32v); assert (uint32v == 100); reader.read7BitEncoded(uint32v); assert (uint32v == 1000); reader.read7BitEncoded(uint32v); assert (uint32v == 10000); reader.read7BitEncoded(uint32v); assert (uint32v == 100000); reader.read7BitEncoded(uint32v); assert (uint32v == 1000000); #if defined(POCO_HAVE_INT64) reader.read7BitEncoded(uint64v); assert (uint64v == 100); reader.read7BitEncoded(uint64v); assert (uint64v == 1000); reader.read7BitEncoded(uint64v); assert (uint64v == 10000); reader.read7BitEncoded(uint64v); assert (uint64v == 100000); reader.read7BitEncoded(uint64v); assert (uint64v == 1000000); #endif reader.readRaw(3, str); assert (str == "RAW"); }