本文整理汇总了C++中CIArrayOf类的典型用法代码示例。如果您正苦于以下问题:C++ CIArrayOf类的具体用法?C++ CIArrayOf怎么用?C++ CIArrayOf使用的例子?那么, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了CIArrayOf类的12个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: gatherPoolPending
void StackElement::gatherPoolPending(CIArrayOf<StackElement> & pending)
{
if (prev && !prev->IsShared())
pending.append(*prev.getClear());
if (sibling && !sibling->IsShared())
pending.append(*sibling.getClear());
}
示例2: associateRemoteInputs
void associateRemoteInputs(CIArrayOf<OrderedInput> & orderedInputs, unsigned numPriorityInputs)
{
//If we know for sure the primary input, then tag it as worth reading ahead - otherwise it will be dynamically set later.
if (numPriorityInputs > 0)
{
OrderedInput & input0 = orderedInputs.item(0);
//Only read ahead etc. if this is a real index - not if it is a join.
if (!input0.isJoin())
{
input0.setReadAhead(true);
input0.setAlwaysReadExact();
}
}
//Work out the last input of known priority which is read remotely.
unsigned maxPriorityRemote = numPriorityInputs;
while ((maxPriorityRemote >= 2) && !orderedInputs.item(maxPriorityRemote-1).readsRowsRemotely())
maxPriorityRemote--;
//If the second ordered input is known to be read remotely, then we want to send multiple seek requests at the same time.
//MORE: Maybe we should consider doing this to all other inputs if only one priority input is known.
if (maxPriorityRemote >= 2)
{
for (unsigned i=1; i < maxPriorityRemote; i++)
{
IMultipleStepSeekInfo * seekInfo = orderedInputs.item(i-1).createMutipleReadWrapper();
orderedInputs.item(i).createMultipleSeekWrapper(seekInfo);
}
}
}
示例3: doUnwindRelease
//---------------------------------------------------------------------------
void doUnwindRelease(GrammarSymbol * symbol, CIArrayOf<GrammarSymbol> & pending)
{
if (!symbol->isPacked())
{
unsigned level = pending.ordinality();
unsigned num = symbol->numChildren();
for (unsigned i = 0; i < num; i++)
pending.append(*LINK(symbol->queryChild(i)));
if (!symbol->Release())
pending.trunc(level);
}
else
symbol->Release();
}
示例4: generateCopies
void RowTransformer::generateCopies(unsigned & seq, CIArrayOf<RowRecord> const & records)
{
sequence = seq++;
ForEachItemIn(fieldNum, records)
{
RowRecord const & record = records.item(fieldNum);
if(record.isToFpos())
{
assertex(sequence == 0);
if(record.isFromFpos())
keepFpos = true;
else
generateCopyToFpos(record);
}
else
{
if(record.isFromFpos())
generateCopyFromFpos(record);
else
generateSimpleCopy(seq, record);
}
}
示例5: removeAbortHandler
void removeAbortHandler(IAbortHandler & handler)
{
CriticalBlock c(abortCrit);
ForEachItemInRev(idx, handlers)
{
if (handlers.item(idx).ihandler == &handler)
{
handlers.remove(idx);
break;
}
}
queryUninstallAbortHandler();
}
示例6: UnixAbortHandler
static void UnixAbortHandler(int sig)
{
hadAbortSignal = true;
if (handlers.length()==0 || notifyOnAbort())
{
_exit(0);
}
}
示例7: add
void add(RemoteFilename &filename,unsigned partno,unsigned copy,unsigned crc)
{
CFileCrcItem *item = new CFileCrcItem();
item->filename.set(filename);
item->partno = partno;
item->copy = copy;
item->crc = crc;
item->requiredcrc = crc;
list.append(*item);
}
示例8: loadMachineMap
static void loadMachineMap()
{
if (machinelist.ordinality())
return;
Owned<IRemoteConnection> conn = querySDS().connect("/Environment/Hardware", myProcessSession(), RTM_LOCK_READ, SDS_LOCK_TIMEOUT);
if (!conn)
return;
IPropertyTree* root = conn->queryRoot();
Owned<IPropertyTreeIterator> machines= root->getElements("Computer");
if (machines->first()) {
do {
IPropertyTree &machine = machines->query();
SocketEndpoint ep(machine.queryProp("@netAddress"));
ep.port = getDaliServixPort();
const char *name = machine.queryProp("@name");
const char *state=machine.queryProp("@state");
CMachineEntry *entry = new CMachineEntry(name,ep,!state||stricmp(state,"Available")==0);
machinemap.setValue(name, entry);
machinelist.append(*entry);
} while (machines->next());
}
}
示例9: notifyOnAbort
bool notifyOnAbort()
{
// DBGLOG("notifyOnAbort %x", GetCurrentThreadId());
// CriticalBlock c(abortCrit); You would think that this was needed, but it locks up.
// If it needs to be threadsafe, have to clone the list or something
bool doExit = false;
ForEachItemInRev(idx, handlers)
{
if (handlers.item(idx).handle())
doExit = true;
}
// DBGLOG("notifyOnAbort returning %d", (int) doExit);
return doExit;
}
示例10: queryUninstallAbortHandler
void queryUninstallAbortHandler()
{
if (handlers.ordinality())
return;
#if defined(_WIN32)
if (handlerInstalled)
{
SetConsoleCtrlHandler( WindowsAbortHandler, FALSE);
handlerInstalled = false;
}
#else
// Don't uninstall - we always want one for the module exit support
#endif
}
示例11: addAbortHandler
void addAbortHandler(IAbortHandler & handler)
{
CriticalBlock c(abortCrit);
queryInstallAbortHandler();
handlers.append(*new AbortHandlerInfo(&handler));
}
示例12: verifyFile
void verifyFile(const char *name,CDateTime *cutoff)
{
Owned<IDistributedFile> file=queryDistributedFileDirectory().lookup(name,UNKNOWN_USER);
if (!file)
return;
IPropertyTree &fileprops = file->queryAttributes();
bool blocked = false;
if (file->isCompressed(&blocked)&&!blocked)
return;
if (stopped)
return;
StringBuffer dtstr;
if (fileprops.getProp("@verified",dtstr)) {
if (!cutoff)
return;
CDateTime dt;
dt.setString(dtstr.str());
if (dt.compare(*cutoff)<=0)
return;
}
list.kill();
unsigned width = file->numParts();
unsigned short port = getDaliServixPort();
try {
Owned<IDistributedFilePart> testpart = file->getPart(0);
SocketEndpoint ep(testpart->queryNode()->endpoint());
if (!dafilesrvips.verifyDaliFileServer(ep)) {
StringBuffer ips;
ep.getIpText(ips);
PROGLOG("VERIFY: file %s, cannot run DAFILESRV on %s",name,ips.str());
return;
}
}
catch (IException *e)
{
StringBuffer s;
s.appendf("VERIFY: file %s",name);
EXCLOG(e, s.str());
e->Release();
return;
}
for (unsigned idx=0;idx<width;idx++) {
Owned<IDistributedFilePart> part = file->getPart(idx);
for (unsigned copy = 0; copy < part->numCopies(); copy++) {
if (stopped)
return;
unsigned reqcrc;
if (!part->getCrc(reqcrc))
continue;
SocketEndpoint ep(part->queryNode()->endpoint());
if (!dafilesrvips.verifyDaliFileServer(ep)) {
StringBuffer ips;
ep.getIpText(ips);
PROGLOG("VERIFY: file %s, cannot run DAFILESRV on %s",name,ips.str());
continue;
}
RemoteFilename rfn;
part->getFilename(rfn,copy);
rfn.setPort(port);
add(rfn,idx,copy,reqcrc);
}
}
if (list.ordinality()==0)
return;
PROGLOG("VERIFY: file %s started",name);
file.clear();
CriticalSection crit;
class casyncfor: public CAsyncFor
{
CFileCrcList *parent;
CriticalSection &crit;
public:
bool ok;
casyncfor(CFileCrcList *_parent, CriticalSection &_crit)
: crit(_crit)
{
parent = _parent;
ok = true;
}
void Do(unsigned i)
{
CriticalBlock block(crit);
if (parent->stopped)
return;
CFileCrcItem &item = parent->list.item(i);
RemoteFilename &rfn = item.filename;
Owned<IFile> partfile;
StringBuffer eps;
try
{
partfile.setown(createIFile(rfn));
// PROGLOG("VERIFY: part %s on %s",partfile->queryFilename(),rfn.queryEndpoint().getUrlStr(eps).str());
if (partfile) {
if (parent->stopped)
return;
CriticalUnblock unblock(crit);
item.crc = partfile->getCRC();
}
else
ok = false;
//.........这里部分代码省略.........