本文整理汇总了C++中XmlDoc::injectDoc方法的典型用法代码示例。如果您正苦于以下问题:C++ XmlDoc::injectDoc方法的具体用法?C++ XmlDoc::injectDoc怎么用?C++ XmlDoc::injectDoc使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类XmlDoc
的用法示例。
在下文中一共展示了XmlDoc::injectDoc方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: void
//.........这里部分代码省略.........
char *content = gr->m_content;
// . try the uploaded file if nothing in the text area
// . this will be NULL if the "content" was empty or not given
if ( ! content ) content = gr->m_contentFile;
if ( m_firstTime ) {
m_firstTime = false;
m_start = content;
}
// save current start since we update it next
char *start = m_start;
// if this is empty we are done
//if ( ! start )
// return true;
char *delim = gr->m_contentDelim;
if ( delim && ! delim[0] ) delim = NULL;
if ( m_fixMe ) {
// we had made the first delim char a \0 to index the
// previous document, now put it back to what it was
*m_start = *delim;
// i guess unset this
m_fixMe = false;
}
// if we had a delimeter...
if ( delim ) {
// we've saved m_start as "start" above,
// so find the next delimeter after it and set that to m_start
// add +1 to avoid infinite loop
m_start = strstr(start+1,delim);
// for injecting "start" set this to \0
if ( m_start ) {
// null term it
*m_start = '\0';
// put back the original char on next round...?
m_fixMe = true;
}
}
// this is the url of the injected content
m_injectUrlBuf.safeStrcpy ( gr->m_url );
bool modifiedUrl = false;
// if we had a delimeter we must make a fake url
// if ( delim ) {
// // if user had a <url> or <doc> or <docid> field use that
// char *hint = strcasestr ( start , "<url>" );
// if ( hint ) {
// modifiedUrl = true;
// ...
// }
// }
// if we had a delimeter thus denoting multiple items/documents to
// be injected, we must create unique urls for each item.
if ( delim && ! modifiedUrl ) {
// use hash of the content
long long ch64 = hash64n ( start , 0LL );
// normalize it
Url u; u.set ( gr->m_url );
// reset it
m_injectUrlBuf.reset();
// by default append a -<ch64> to the provided url
m_injectUrlBuf.safePrintf("%s-%llu",u.getUrl(),ch64);
}
// count them
m_injectCount++;
m_inUse = true;
if ( ! xd->injectDoc ( m_injectUrlBuf.getBufStart() ,
cr ,
start , // content ,
gr->m_diffbotReply,
gr->m_hasMime, // content starts with http mime?
gr->m_hopCount,
gr->m_charset,
gr->m_deleteUrl,
gr->m_contentTypeStr, // text/html text/xml
gr->m_spiderLinks ,
gr->m_newOnly, // index iff new
this ,
doneInjectingWrapper9 ) )
// we blocked...
return false;
m_inUse = false;
return true;
}
示例2: handleRequest7
void handleRequest7 ( UdpSlot *slot , int32_t netnice ) {
InjectionRequest *ir = (InjectionRequest *)slot->m_readBuf;
// now just supply the first guy's char ** and size ptr
if ( ! deserializeMsg2 ( &ir->ptr_url, &ir->size_url ) ) {
log("inject: error deserializing inject request from "
"host ip %s port %i",iptoa(slot->m_ip),(int)slot->m_port);
g_errno = EBADREQUEST;
g_udpServer.sendErrorReply(slot,g_errno);
//g_corruptCount++;
return;
}
// the url can be like xyz.com. so need to do another corruption
// test for ia
if ( ! ir->ptr_url ) { // || strncmp(ir->ptr_url,"http",4) != 0 ) {
//log("inject: trying to inject NULL or non http url.");
log("inject: trying to inject NULL url.");
g_errno = EBADURL;
//g_corruptCount++;
g_udpServer.sendErrorReply(slot,g_errno);
return;
}
CollectionRec *cr = g_collectiondb.getRec ( ir->m_collnum );
if ( ! cr ) {
log("inject: cr rec is null %i", ir->m_collnum);
g_errno = ENOCOLLREC;
g_udpServer.sendErrorReply(slot,g_errno);
return;
}
XmlDoc *xd;
try { xd = new (XmlDoc); }
catch ( ... ) {
g_errno = ENOMEM;
log("PageInject: import failed: new(%i): %s",
(int)sizeof(XmlDoc),mstrerror(g_errno));
g_udpServer.sendErrorReply(slot,g_errno);
return;
}
mnew ( xd, sizeof(XmlDoc) , "PageInject" );
xd->m_injectionSlot = slot;
xd->m_injectStartTime = gettimeofdayInMilliseconds();
// add to linked list
xd->m_nextInject = NULL;
xd->m_prevInject = NULL;
if ( s_injectTail ) {
s_injectTail->m_nextInject = xd;
xd->m_prevInject = s_injectTail;
s_injectTail = xd;
}
else {
s_injectHead = xd;
s_injectTail = xd;
}
if(ir->ptr_content && ir->ptr_content[ir->size_content - 1]) {
// XmlDoc expects this buffer to be null terminated.
char *xx=NULL;*xx=0;
}
if ( ! xd->injectDoc ( ir->ptr_url , // m_injectUrlBuf.getBufStart() ,
cr ,
ir->ptr_content , // start , // content ,
ir->ptr_diffbotReply,
// if this doc is a 'container doc' then
// hasMime applies to the SUBDOCS only!!
ir->m_hasMime, // content starts with http mime?
ir->m_hopCount,
ir->m_charset,
ir->m_deleteUrl,
// warcs/arcs include the mime so we don't
// look at this in that case in
// XmlDoc::injectDoc() when it calls set4()
ir->ptr_contentTypeStr, // text/html text/xml
ir->m_spiderLinks ,
ir->m_newOnly, // index iff new
xd, // state ,
sendUdpReply7 ,
// extra shit
ir->m_firstIndexed,
ir->m_lastSpidered ,
// the ip of the url being injected.
// use 0 if unknown and it won't be valid.
ir->m_injectDocIp ,
ir->ptr_contentDelim,
ir->ptr_metadata,
ir->size_metadata,
ir->size_content - 1 // there should be a null in that last byte
) )
// we blocked...
return;
//.........这里部分代码省略.........