Example #1
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);
}
Example #2
0
void TxIOPair::serializeDbValue(BinaryWriter& bw) const
{
   uint8_t sersize = 17; //bit pack + amount + txout key

   if (hasTxIn())
      sersize += 8;

   bw.put_uint8_t(sersize);

   BitPacker<uint8_t> bitpacker;

   bitpacker.putBit(isTxOutFromSelf_);
   bitpacker.putBit(isFromCoinbase_);
   bitpacker.putBit(hasTxIn());
   bitpacker.putBit(isMultisig_);
   bitpacker.putBit(isUTXO_);
   bitpacker.putBit(isFromSameBlock_);

   bw.put_BitPacker(bitpacker);
   bw.put_uint64_t(amount_);

   bw.put_BinaryData(getDBKeyOfOutput());

   if (hasTxIn())
   {
      bw.put_BinaryData(getDBKeyOfInput());
   }
}
Example #3
0
void FlowWriter::writeResponseHeader(BinaryWriter& writer,const string& name,double callbackHandle) {
	writer.write8(Message::AMF_WITH_HANDLER);writer.write32(0);
	writer.write8(AMF_STRING);writer.writeString16(name);
	writer.write8(AMF_NUMBER); // marker
	writer << callbackHandle;
	writer.write8(AMF_NULL);
}
Example #4
0
	bool Model_IO::Save(BinaryWriter& writer, const achar* path)
	{
		// ヘッダー
		uint8_t header[] = "MDL";
		for (int32_t i = 0; i < 4; i++)
		{
			writer.Push(header[i]);
		}

		// バージョン
		writer.Push(0);

		// ボーン
		SaveDeformer(Deformer_, writer, path);

		// メッシュ
		SaveMeshes(Meshes, writer, path);

		// アニメーション
		writer.Push((int32_t)AnimationSources.size());
		
		for (int32_t i = 0; i < AnimationSources.size(); i++)
		{
			SaveAnimationSource(AnimationSources[i], writer, path);
		}

		writer.Push((int32_t) AnimationClips.size());
		for (int32_t i = 0; i <AnimationClips.size(); i++)
		{
			SaveAnimationClip(AnimationClips[i], writer, path);
		}

		return true;
	}
Example #5
0
BinaryData TransactionVerifier::serializeAllOutpoints() const
{
   BinaryWriter bw;
   for (unsigned i = 0; i < theTx_.txins_.size(); i++)
      bw.put_BinaryDataRef(getOutpoint(i));

   return bw.getData();
}
Example #6
0
void ProgressData::serialize(BinaryWriter& bw) const
{
   bw.put_uint8_t(PROGRESSDATA_CODE);

   bw.put_uint8_t((uint8_t)phase_);
   bw.put_double(progress_);
   bw.put_uint32_t(time_);
   bw.put_uint32_t(numericProgress_);
}
Example #7
0
BinaryData StackItem_OpCode::serialize(void) const
{
   BinaryWriter bw;
   bw.put_uint32_t(id_);
   bw.put_uint8_t(STACKITEM_OPCODE_PREFIX);
   bw.put_uint8_t(opcode_);

   return bw.getData();
}
Example #8
0
	void Model_IO::SaveAnimationSource(AnimationSource& as, BinaryWriter& writer, const achar* path)
	{
		writer.Push(as.Name);
		writer.Push((int32_t) as.KeyframeAnimations.size());

		for (int32_t i = 0; i < as.KeyframeAnimations.size(); i++)
		{
			SaveKeyframeAnimation(as.KeyframeAnimations[i], writer, path);
		}
	}
Example #9
0
 unsigned char WriteString(TrieNode* node, BinaryWriter& writer) {
     if(node->Parent == rootNode_) {
         writer.WriteByte(node->Value);
         return node->Value;
     }
     else {
         unsigned char first = WriteString(node->Parent, writer);
         writer.WriteByte(node->Value);
         return first;
     }
 }
void PositionPacket::writeRawPacket(BinaryWriter& stream) const {
  stream.write(reinterpret_cast<const char*>(&mNotUsed1), sizeof(mNotUsed1));
  stream << mGyro1 << mTemp1 << mAccel1X << mAccel1Y << mGyro2 << mTemp2 <<
    mAccel2X << mAccel2Y << mGyro3 << mTemp3 << mAccel3X << mAccel3Y;
  stream.write(reinterpret_cast<const char*>(&mNotUsed2), sizeof(mNotUsed2));
  stream << mGPSTimestamp;
  stream.write(reinterpret_cast<const char*>(&mNotUsed3), sizeof(mNotUsed3));
  stream.write(reinterpret_cast<const char*>(&mNMEASentence),
    sizeof(mNMEASentence));
  stream.write(reinterpret_cast<const char*>(&mNotUsed4), sizeof(mNotUsed4));
}
Example #11
0
BinaryData TransactionVerifier::serializeAllSequences() const
{
   BinaryWriter bw;
   for (auto& txinOnS : theTx_.txins_)
   {
      auto sequenceOffset = txinOnS.first + txinOnS.second - 4;
      BinaryDataRef bdr(theTx_.data_ + sequenceOffset, 4);

      bw.put_BinaryDataRef(bdr);
   }

   return bw.getData();
}
Example #12
0
	void Model_IO::SaveDeformer(Deformer& deformer, BinaryWriter& writer, const achar* path)
	{
		writer.Push((int32_t)deformer.Bones.size());

		for (auto i = 0; i < deformer.Bones.size(); i++)
		{
			auto& bone = deformer.Bones[i];
			writer.Push(deformer.Bones[i].Name);
			writer.Push(deformer.Bones[i].ParentBoneIndex);
			writer.Push((int32_t)deformer.Bones[i].RotationType);
			writer.Push(deformer.Bones[i].LocalMat);
		}
	}
Example #13
0
const string& Arguments::serialize()
{
   if (argStr_.size() != 0)
      return argStr_;

   BinaryWriter bw;
   for (auto& arg : argData_)
      arg->serialize(bw);

   auto& bdser = bw.getData();
   argStr_ = bdser.toHexStr();

   return argStr_;
}
Example #14
0
void GeoSaver::SaveMesh(Scene3DMesh *mesh, BinaryWriter &bw)
{
	bw.Write(mesh ->id);
	bw.Write(mesh ->name);

	for (int i = 0; i < 16; i++)
		bw.Write(mesh->m_worldInverseMatrix.a[i]);

	bw.Write((int)mesh ->meshParts.size());

	for (int i = 0; i < (int)mesh ->meshParts.size(); i++)
		SaveMeshPart(mesh ->meshParts[i], bw);

	SaveProperties(mesh, bw);
}
Example #15
0
BinaryWriter& AFXAPI operator<<(BinaryWriter& wr, const IPAddress& ha) {
	wr << (short)ha.get_AddressFamily();
	switch ((int)ha.get_AddressFamily()) {
	case AF_INET:
		wr.Write(&ha.m_sin.sin_addr, sizeof(ha.m_sin.sin_addr));
		break;
	case AF_INET6:
		wr.Write(&ha.m_sin6.sin6_addr, sizeof(ha.m_sin6.sin6_addr));
		break;
	default:
		wr.Write(&ha.m_sockaddr, sizeof(ha.m_sockaddr));		//!!! unknown size
		break;
	}
	return wr;
}
Example #16
0
void Namespace::Write(BinaryWriter &w) const
{
  Node::Write(w);
  w.WriteID(m_Parent);

  w.WriteAs<uint32_t>(m_Functions.size());
  for (auto &kvp : m_Functions)
  {
    w.WriteAs<uint32_t>(kvp.second.size());
    for (auto &kvp : kvp.second)
      kvp.second->Write(w);
  }

  w.WriteAs<uint32_t>(m_Children.size());
  for (auto &kvp : m_Children)
    kvp.second->Write(w);

  w.WriteAs<uint32_t>(m_Types.size());
  for (auto &kvp : m_Types)
    kvp.second->Write(w);

  w.WriteAs<uint32_t>(m_Variables.size());
  for (auto &kvp : m_Variables)
    kvp.second->Write(w);

  w.WriteAs<uint32_t>(m_EnumConstants.size());
  for (auto &kvp : m_EnumConstants)
    kvp.second->Write(w);
}
Example #17
0
void GeoSaver::SaveProperties(Scene3DMesh *mesh, BinaryWriter &bw)
{
	bw.Write((int)mesh->properties.size());

	for (unsigned i = 0; i < mesh->properties.size(); i++)
		SaveProperty(mesh->properties[i], bw);
}
Example #18
0
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';
}
Example #19
0
void BinaryDataVector::serialize(BinaryWriter& bw) const
{
   bw.put_uint8_t(BINARYDATAVECTOR_CODE);
   size_t size = 0;
   for (auto& bdo : bdVec_)
      size += bdo.getSize();

   bw.put_var_int(size);
   bw.put_var_int(bdVec_.size());

   for (auto& bdo : bdVec_)
   {
      bw.put_var_int(bdo.getSize());
      bw.put_BinaryData(bdo);
   }
}
Example #20
0
	void Generator::GenerateFontFile(
		astring fontPath,
		astring textPath)
	{
		auto result = RenderPng(fontPath, textPath);

		BinaryWriter writer;
		PushAff(writer, result);

#ifdef _WIN32
		ofstream file(m_sheetName + L".aff", ios::out | ios::binary);
#else
		ofstream file(ToUtf8String(m_sheetName.c_str()) + ".aff", ios::out | ios::binary);
#endif

		writer.WriteOut(file);
	}
Example #21
0
/*
 * 解析結果をバイナリ形式のファイルに出力する。
 * 内部コードを別ファイルにする用途で使用する。
 *
 * 各アセンブリは以下のフォーマット形式で保存される
 * [AssemblyName : string           ] アセンブリの名前
 * [StackFrame   : u32              ] スタックフレーム
 * [Address      : u32              ] 関数アドレス
 * [Args         : u32              ] 関数パラメータ数
 * [CodeSize     : u32              ] コード領域サイズ
 * [Code         : byte[ContentSize]] コード領域
 */
VMAssembleOutput::VMAssembleOutput( IAssembleReader* reader , const char* fileName ){
	BinaryWriter bw;
	int index = 0;
	AsmInfo* assemblyInfo = reader->getAssembly(0);
	while( assemblyInfo ){
		bw.writeString( assemblyInfo->name() );
		bw.writeUInt32( assemblyInfo->stackFrame() );
		bw.writeUInt32( assemblyInfo->addr() );
		bw.writeUInt32( assemblyInfo->Args() );
		bw.writeUInt32( assemblyInfo->CodeSize() );

		for( size_t i = 0 ; i < assemblyInfo->CodeSize() ; i++ ){
			bw.write( assemblyInfo->getCommand(i) );
		}
		assemblyInfo = reader->getAssembly(++index);
	}
	CStream stream = bw.getStream();
	FILE* fp = NULL;
	fopen_s( &fp , fileName , "wb" );
	assert( fp );
	while( stream->hasNext() ){
		unsigned char content[1];
		content[0] = static_cast<unsigned char>( stream->getByte() );
		fwrite( content , sizeof( unsigned char ) , sizeof( content ) , fp );
	}
	fclose( fp );
}
Example #22
0
	void Model_IO::SaveMeshes(std::vector<Mesh>& meshes, BinaryWriter& writer, const achar* path)
	{
		writer.Push((int32_t) meshes.size());

		for (auto i = 0; i < meshes.size(); i++)
		{
			SaveMesh(meshes[i], writer, path);
		}
	}
Example #23
0
	void Model_IO::SaveMaterials(std::vector<Material>& materials, BinaryWriter& writer, const achar* path)
	{
		writer.Push((int32_t) materials.size());

		for (int32_t i = 0; i < materials.size(); i++)
		{
			SaveMaterial(materials[i], writer, path);
		}
	}
Example #24
0
	void Model_IO::SaveMesh(Mesh& mesh, BinaryWriter& writer, const achar* path)
	{
		writer.Push((int32_t)mesh.DividedMeshes.size());

		for (auto i = 0; i < mesh.DividedMeshes.size(); i++)
		{
			SaveDividedMesh(mesh.DividedMeshes[i], writer, path);
		}

		SaveMaterials(mesh.Materials, writer, path);
	}
Example #25
0
BinaryData StackItem_MultiSig::serialize(void) const
{
   BinaryWriter bw;
   bw.put_uint32_t(id_);
   bw.put_uint8_t(STACKITEM_MULTISIG_PREFIX);
   bw.put_uint16_t(m_);
   bw.put_var_int(sigs_.size());
   
   for (auto& sig_pair : sigs_)
   {
      bw.put_uint16_t(sig_pair.first);
      bw.put_var_int(sig_pair.second.getSize());
      bw.put_BinaryData(sig_pair.second);
   }

   return bw.getData();
}
	void AffIndexTable::Push(BinaryWriter& writer)
	{
		array<int16_t, CHARCODE_MAX> indexes;

		for (auto& x : m_indexes)
		{
			indexes[(int)(x.first)] = x.second;
		}

		for (auto& x : indexes)
		{
			writer.Push(x);
		}
	}
Example #27
0
void GeoSaver::SavePropertiesTxt(Scene3DMesh *mesh, BinaryWriter &bw)
{
	std::stringstream data;

	data << "\n";
	data << "<properties count=\"" << mesh->properties.size() << "\">\n";

	for (unsigned i = 0; i < mesh->properties.size(); i++)
		SavePropertyTxt(mesh->properties[i], bw, data);

	data << "</properties>\n";

	bw.Write(data.str().c_str(), static_cast<uint32_t>(data.str().size()));
}
Example #28
0
BinaryData StackItem_PushData::serialize(void) const
{
   BinaryWriter bw;
   bw.put_uint32_t(id_);
   bw.put_uint8_t(STACKITEM_PUSHDATA_PREFIX);
   bw.put_var_int(data_.getSize());
   bw.put_BinaryData(data_);

   return bw.getData();
}
Example #29
0
BinaryData StackItem_SerializedScript::serialize(void) const
{
   BinaryWriter bw;
   bw.put_uint32_t(id_);
   bw.put_uint8_t(STACKITEM_SERSCRIPT_PREFIX);
   bw.put_var_int(data_.getSize());
   bw.put_BinaryData(data_);

   return bw.getData();
}
Example #30
0
BinaryData BlockHeaderRef::serializeWholeBlock(bool withLead8Bytes) const
{
   BinaryWriter serializedBlock;
   uint32_t blksize = getBlockSize();
   if(withLead8Bytes)
   {
      serializedBlock.reserve(blksize + 8);
      serializedBlock.put_BinaryData(BtcUtils::MagicBytes_);
      serializedBlock.put_uint32_t(blksize);
   }
   else
      serializedBlock.reserve(blksize);

   serializedBlock.put_BinaryData(self_);
   serializedBlock.put_var_int(getNumTx());
   for(uint32_t i=0; i<getNumTx(); i++)
      serializedBlock.put_BinaryData(txPtrList_[i]->serialize());

   return serializedBlock.getData();
   
}