示例#1
0
tstring CDoc::SaveToString(CNode& rNode, bool bQualified, bool bPrettyPrint)
{
	if (rNode.m_pDOMNode->getParentNode() == NULL || rNode.m_pDOMNode->getParentNode()->getNodeType() == xercesc::DOMNode::DOCUMENT_FRAGMENT_NODE)
	{
		FinalizeRootElement(rNode);
	}

	CNode::InternalAdjustPrefix(rNode.m_pDOMNode, bQualified);
	rNode.AdjustPrefix();

	xercesc::DOMWriter* pWriter = GetWriter();
	m_bWriter = true;

	if (!m_sEncoding.empty())
		pWriter->setEncoding(X(m_sEncoding));

	if (bPrettyPrint &&
	    pWriter->canSetFeature(xercesc::XMLUni::fgDOMWRTFormatPrettyPrint, true))
		pWriter->setFeature(xercesc::XMLUni::fgDOMWRTFormatPrettyPrint, true);

	XMLCh* szXml = pWriter->writeToString(*(rNode.m_pDOMNode->getOwnerDocument()));
	tstring sXml = XC2TS( szXml );
	xercesc::XMLString::release( &szXml );
	return sXml;
}
    void Initialize(size_t limit_memory_bytes) {
        assert(range_.IsValid() || range_.IsEmpty());
        limit_memory_bytes_ = limit_memory_bytes;

        TableItem neutral =
            MakeTableItem::Make(neutral_element_, key_extractor_);
        neutral_element_key_ = key(neutral);

        if (range_.size() * sizeof(TableItem) < limit_memory_bytes) {
            num_subranges_ = 0;

            // all good, we can store the whole index range
            items_.resize(range_.size(), neutral);

            LOG << "ReduceByIndexPostPhase()"
                << " limit_memory_bytes_=" << limit_memory_bytes_
                << " num_subranges_=" << 0
                << " range_=" << range_;
        }
        else {
            // we have to outsource some subranges
            num_subranges_ =
                1 + (range_.size() * sizeof(TableItem) / limit_memory_bytes);
            // we keep the first subrange in memory and only the other ones go
            // into a file
            range_ = full_range_.Partition(0, num_subranges_);

            items_.resize(range_.size(), neutral);

            LOG << "ReduceByIndexPostPhase()"
                << " limit_memory_bytes_=" << limit_memory_bytes_
                << " num_subranges_=" << num_subranges_
                << " full_range_=" << full_range_
                << " range_=" << range_
                << " range_.size()=" << range_.size();

            subranges_.reserve(num_subranges_ - 1);
            subrange_files_.reserve(num_subranges_ - 1);
            subrange_writers_.reserve(num_subranges_ - 1);

            for (size_t partition = 1; partition < num_subranges_; partition++) {
                auto file = ctx_.GetFilePtr(dia_id_);
                auto writer = file->GetWriter();
                common::Range subrange =
                    full_range_.Partition(partition, num_subranges_);

                LOG << "ReduceByIndexPostPhase()"
                    << " partition=" << partition
                    << " subrange=" << subrange;

                subranges_.emplace_back(subrange);
                subrange_files_.emplace_back(std::move(file));
                subrange_writers_.emplace_back(std::move(writer));
            }
        }
    }
示例#3
0
Writer *Writer::GetWriter(enum AVCodecID id, enum AVMediaType codec_type)
{
	std::map<enum AVCodecID,Writer*>::iterator it = writers.find(id);
	if (it != writers.end())
		return it->second;
	switch (codec_type) {
		case AVMEDIA_TYPE_AUDIO:
			if (id == AV_CODEC_ID_INJECTPCM) // should not happen
				break;
			return GetWriter(AV_CODEC_ID_INJECTPCM, codec_type);
		case AVMEDIA_TYPE_VIDEO:
			if (id == AV_CODEC_ID_MPEG2TS) // should not happen
				break;
			return GetWriter(AV_CODEC_ID_MPEG2TS, codec_type);
		default:
			break;
	}
	return &writer;
}
示例#4
0
bool CXmlSerializeHelper::Write(ISerializedObject *pObject, TSerializeFunc serializeFunc, void *pArgument /*= NULL*/)
{
	assert(pObject);

	bool bResult = false;

	if (CXmlSerializedObject *pXmlObject = GetXmlSerializedObject(pObject))
	{
		pXmlObject->CreateRootNode();
		ISerialize *pWriter = GetWriter(pXmlObject->GetXmlNode());

		TSerialize stateWriter(pWriter);
		bResult = serializeFunc(stateWriter, pArgument);
	}

	return bResult;
}
示例#5
0
void CMail::CodeToDataBlockForClient(DBWriteSet& setWriteDB,CPlayer *pPlayer)
{
	time_t t_CurrentTime = time(NULL);
	DWORD dwRemainTime = 0;
	if (GetRemainTime() - t_CurrentTime>0)
	{
		dwRemainTime = (DWORD)(GetRemainTime() - t_CurrentTime);
	} 	
	setWriteDB.AddToByteArray(GetExID());									//邮件的ID

	setWriteDB.AddToByteArray(dwRemainTime);//邮件的有效时间

	setWriteDB.AddToByteArray((DWORD)GetGold());//操作的金钱数

	setWriteDB.AddToByteArray(GetSubject().c_str());//邮件名称
	setWriteDB.AddToByteArray(GetText().c_str());//邮件内容
	setWriteDB.AddToByteArray(GetExText().c_str());//邮件附加内容
	setWriteDB.AddToByteArray(GetWriter().c_str());//邮件发送者名称
	setWriteDB.AddToByteArray((BYTE)GetRead());		   //是否阅读过
	setWriteDB.AddToByteArray((BYTE)GetType());        //类型
	setWriteDB.AddToByteArray((BYTE)GetReject());      //退信标志符


//	setWriteDB.AddToByteArray((long)GetSGood().size());

// 	if (GetSGood().size()>0 && GetType()==REQUEST_MAIL)
// 	{
// 		for (list<tagSGoods*>::iterator it=GetSGood().begin(); it!=GetSGood().end(); ++it)
// 		{
// 			setWriteDB.AddToByteArray((long)(*it)->lIndex);
// 			setWriteDB.AddToByteArray((long)(*it)->lNum);		
// 		}
// 	}
// 	else
// 	{
		setWriteDB.AddToByteArray((long)GetMGoodsContainer().size());
		for (vector<CGoods*>::iterator it=GetMGoodsContainer().begin(); it!=GetMGoodsContainer().end(); ++it)
		{
			(*it)->SerializeForOldClient(setWriteDB);		
		} 	
//	}
	
}
示例#6
0
//为客户端编码
void	CMail::AddToByteArrayForClient(vector<BYTE>& vRet,CPlayer *pPlayer)				
{

	time_t t_CurrentTime = time(NULL);
	DWORD dwRemainTime = 0;
	if (GetRemainTime() - t_CurrentTime>0)
	{
		dwRemainTime = (DWORD)(GetRemainTime() - t_CurrentTime);
	} 	

	_AddToByteArray(&vRet,GetExID());		//邮件的ID
	_AddToByteArray(&vRet,dwRemainTime);	//邮件的有效时间
	_AddToByteArray(&vRet,(DWORD)GetGold());//操作的金钱数
	_AddToByteArray(&vRet,GetSubject().c_str());//邮件名称
	_AddToByteArray(&vRet,GetText().c_str());	//邮件内容
	_AddToByteArray(&vRet,GetExText().c_str());	//邮件附加内容
	_AddToByteArray(&vRet,GetWriter().c_str());	//邮件发送者名称
	_AddToByteArray(&vRet,(BYTE)GetRead());	    //是否阅读过
	_AddToByteArray(&vRet,(BYTE)GetType());     //类型
	_AddToByteArray(&vRet,(BYTE)GetReject());   //退信标志符

//	_AddToByteArray(&vRet,(long)GetSGood().size());

// 	if (GetSGood().size()>0 && GetType()==REQUEST_MAIL)
// 	{
// 		for (list<tagSGoods*>::iterator it=GetSGood().begin(); it!=GetSGood().end(); ++it)
// 		{
// 			_AddToByteArray(&vRet,(long)(*it)->lIndex);
// 			_AddToByteArray(&vRet,(long)(*it)->lNum);		
// 		}
// 	}
// 	else
// 	{
		_AddToByteArray(&vRet,(long)GetMGoodsContainer().size());
		for (vector<CGoods*>::iterator it=GetMGoodsContainer().begin(); it!=GetMGoodsContainer().end(); ++it)
		{
			(*it)->SerializeForOldClient(&vRet);		
		} 	
//	}


}
示例#7
0
void CDoc::Save(const tstring& sURI, CNode& rNode, bool bQualified, bool bPrettyPrint)
{
	if (rNode.m_pDOMNode->getParentNode() == NULL || rNode.m_pDOMNode->getParentNode()->getNodeType() == xercesc::DOMNode::DOCUMENT_FRAGMENT_NODE)
	{
		FinalizeRootElement(rNode);
	}

	CNode::InternalAdjustPrefix(rNode.m_pDOMNode, bQualified);
	rNode.AdjustPrefix();

	xercesc::DOMWriter* pWriter = GetWriter();
	m_bWriter = true;
	xercesc::LocalFileFormatTarget myFormatTarget(sURI.c_str());

	if (!m_sEncoding.empty())
		pWriter->setEncoding(X(m_sEncoding));

	if (bPrettyPrint &&
	    pWriter->canSetFeature(xercesc::XMLUni::fgDOMWRTFormatPrettyPrint, true))
		pWriter->setFeature(xercesc::XMLUni::fgDOMWRTFormatPrettyPrint, true);

	pWriter->writeNode(&myFormatTarget, *(rNode.m_pDOMNode->getOwnerDocument()));
}
示例#8
0
void	CMail::AddToByteArrayForWS(vector<BYTE>& vRet,CPlayer* pPlayer)
{	
	_AddToByteArray(&vRet,GetExID());					//邮件Guid
	_AddToByteArray(&vRet,(char*)GetWriter().c_str());	//邮件写信人
	_AddToByteArray(&vRet,(char*)GetSubject().c_str());	//主题
	_AddToByteArray(&vRet,(char*)GetText().c_str());	//邮件内容
	_AddToByteArray(&vRet,(char*)GetExText().c_str());	//邮件附加内容
	_AddToByteArray(&vRet,(BYTE)GetRead());				//读取标志符
	_AddToByteArray(&vRet,(BYTE)GetType());				//邮件类型
	_AddToByteArray(&vRet,(long)GetGold());				//金钱
	_AddToByteArray(&vRet,(DWORD) GetRemainTime());		//保存时间
	_AddToByteArray(&vRet,(BYTE)GetReject());			//退信标志符

	//收信人
	_AddToByteArray(&vRet,(char*)pPlayer->GetName());

	//增值物品列表
// 	long lSGoodNum =  (long)GetSGood().size();
// 	_AddToByteArray(&vRet,lSGoodNum);							
// 	for (list<tagSGoods*>::iterator it=GetSGood().begin(); it!=GetSGood().end(); ++it)
// 	{
// 		_AddToByteArray(&vRet,(*it)->lIndex);
// 		_AddToByteArray(&vRet,(*it)->lNum);
// 	}
	//普通物品列表
	long lCGoodNum = (long)GetMGoodsContainer().size();
	_AddToByteArray(&vRet,lCGoodNum);
	int nPos = 0;
	vector<BYTE> pBA;
	for (vector<CGoods*>::iterator it=GetMGoodsContainer().begin(); it!=GetMGoodsContainer().end(); ++it)
	{				
		(*it)->Serialize(&pBA);
		_AddToByteArray(&vRet,(LONG)pBA.size());
		if (pBA.size())		
			_AddToByteArray(&vRet,&pBA[0], (long)pBA.size());			
	}
}
示例#9
0
extern "C" DATAWRITER_API void GetWriterD(IDataWriter<double>** pwriter)
{
    GetWriter(pwriter);
}
示例#10
0
extern "C" DATAWRITER_API void GetWriterF(IDataWriter<float>** pwriter)
{
    GetWriter(pwriter);
}