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)); } } }
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; }
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; }
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); } // } }
//为客户端编码 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); } // } }
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())); }
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()); } }
extern "C" DATAWRITER_API void GetWriterD(IDataWriter<double>** pwriter) { GetWriter(pwriter); }
extern "C" DATAWRITER_API void GetWriterF(IDataWriter<float>** pwriter) { GetWriter(pwriter); }