本文整理汇总了C++中SimpleList::Next方法的典型用法代码示例。如果您正苦于以下问题:C++ SimpleList::Next方法的具体用法?C++ SimpleList::Next怎么用?C++ SimpleList::Next使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类SimpleList
的用法示例。
在下文中一共展示了SimpleList::Next方法的14个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: temp_classad
int
SaveCredentialList() {
priv_state priv = set_root_priv();
FILE * fp = safe_fopen_wrapper(cred_index_file, "w");
if (!fp) {
set_priv (priv);
dprintf (D_ALWAYS, "Unable to open credential index file %s!\n", cred_index_file);
return FALSE;
}
classad::ClassAdXMLUnParser unparser;
CredentialWrapper * pCred = NULL;
// Clear the old list
credentials.Rewind();
while (credentials.Next(pCred)) {
const classad::ClassAd * pclassad = pCred->cred->GetMetadata();
classad::ClassAd temp_classad(*pclassad); // lame
std::string buff;
unparser.Unparse (buff, &temp_classad);
fprintf (fp, "%s\n", buff.c_str());
}
fclose (fp);
set_priv (priv);
return TRUE;
}
示例2:
void GenericQuery::
copyFloatCategory (SimpleList<float> &to, SimpleList<float> &from)
{
float item;
clearFloatCategory (to);
while (from.Next (item))
to.Append (item);
}
示例3: while
void GenericQuery::
clearFloatCategory (SimpleList<float> &float_category)
{
float item;
float_category.Rewind ();
while (float_category.Next (item))
float_category.DeleteCurrent ();
}
示例4: while
int
LoadCredentialList () {
CredentialWrapper * pCred;
// Clear the old list
if (!credentials.IsEmpty()) {
credentials.Rewind();
while (credentials.Next(pCred)) {
credentials.DeleteCurrent();
delete pCred;
}
}
credentials.Rewind();
classad::ClassAdXMLParser parser;
char buff[50000];
priv_state priv = set_root_priv();
FILE * fp = safe_fopen_wrapper(cred_index_file, "r");
if (!fp) {
dprintf (D_FULLDEBUG, "Credential database %s does not exist!\n", cred_index_file);
set_priv (priv);
return TRUE;
}
while (fgets(buff, 50000, fp)) {
if ((buff[0] == '\n') || (buff[0] == '\r')) {
continue;
}
classad::ClassAd * classad = parser.ParseClassAd (buff);
int type=0;
if ((!classad) || (!classad->EvaluateAttrInt ("Type", type))) {
dprintf (D_ALWAYS, "Invalid classad %s\n", buff);
set_priv (priv);
fclose (fp);
return FALSE;
}
if (type == X509_CREDENTIAL_TYPE) {
pCred = new X509CredentialWrapper (*classad);
credentials.Append (pCred);
}
else {
dprintf (D_ALWAYS, "Invalid type %d\n",type);
}
}
fclose (fp);
set_priv (priv);
return TRUE;
}
示例5: getPlugins
void
CollectorPluginManager::Shutdown()
{
CollectorPlugin *plugin;
SimpleList<CollectorPlugin *> plugins = getPlugins();
plugins.Rewind();
while (plugins.Next(plugin)) {
plugin->shutdown();
}
}
示例6: getPlugins
void
NegotiatorPluginManager::Update(const ClassAd &ad)
{
NegotiatorPlugin *plugin;
SimpleList<NegotiatorPlugin *> plugins = getPlugins();
plugins.Rewind();
while (plugins.Next(plugin)) {
plugin->update(ad);
}
}
示例7:
int
allAmazonCommands(StringList &output)
{
AmazonGahpCommand *one_cmd = NULL;
amazon_gahp_commands.Rewind();
while( amazon_gahp_commands.Next(one_cmd) ) {
output.append(one_cmd->command.c_str());
}
return amazon_gahp_commands.Number();
}
示例8:
void
flush_results()
{
std::string *next_str;
results_queue.Rewind();
while ( results_queue.Next( next_str ) ) {
daemonCore->Write_Pipe( RESULT_OUTBOX, next_str->c_str(),
next_str->length() );
delete next_str;
}
results_queue.Clear();
}
示例9: strlen
bool
MyString::replaceString(
const char *pszToReplace,
const char *pszReplaceWith,
int iStartFromPos)
{
SimpleList<int> listMatchesFound;
int iToReplaceLen = strlen(pszToReplace);
if (!iToReplaceLen) {
return false;
}
int iWithLen = strlen(pszReplaceWith);
while (iStartFromPos <= Len){
iStartFromPos = find(pszToReplace, iStartFromPos);
if (iStartFromPos == -1)
break;
listMatchesFound.Append(iStartFromPos);
iStartFromPos += iToReplaceLen;
}
if (!listMatchesFound.Number())
return false;
int iLenDifPerMatch = iWithLen - iToReplaceLen;
int iNewLen = Len + iLenDifPerMatch * listMatchesFound.Number();
char *pNewData = new char[iNewLen+1];
int iItemStartInData;
int iPosInNewData = 0;
int iPreviousEnd = 0;
listMatchesFound.Rewind();
while(listMatchesFound.Next(iItemStartInData)) {
memcpy(pNewData + iPosInNewData,
Data + iPreviousEnd,
iItemStartInData - iPreviousEnd);
iPosInNewData += (iItemStartInData - iPreviousEnd);
memcpy(pNewData + iPosInNewData, pszReplaceWith, iWithLen);
iPosInNewData += iWithLen;
iPreviousEnd = iItemStartInData + iToReplaceLen;
}
memcpy(pNewData + iPosInNewData,
Data + iPreviousEnd,
Len - iPreviousEnd + 1);
delete [] Data;
Data = pNewData;
capacity = iNewLen;
Len = iNewLen;
return true;
}
示例10: if
void
CheckCredentials () {
CredentialWrapper * pCred;
credentials.Rewind();
dprintf (D_FULLDEBUG, "In CheckCredentials()\n");
// Get current time
time_t now = time(NULL);
while (credentials.Next(pCred)) {
init_user_id_from_FQN (pCred->cred->GetOwner());
priv_state priv = set_user_priv();
time_t time = pCred->cred->GetRealExpirationTime();
dprintf (D_FULLDEBUG, "Checking %s:%s = %ld\n",
pCred->cred->GetOwner(),
pCred->cred->GetName(),
time);
if (time - now < 0) {
dprintf (D_FULLDEBUG, "Credential %s:%s expired!\n",
pCred->cred->GetOwner(),
pCred->cred->GetName());
}
else if (time - now < default_cred_expire_threshold) {
dprintf (D_FULLDEBUG, "Credential %s:%s about to expire\n",
pCred->cred->GetOwner(),
pCred->cred->GetName());
if (pCred->cred->GetType() == X509_CREDENTIAL_TYPE) {
RefreshProxyThruMyProxy ((X509CredentialWrapper*)pCred);
}
}
set_priv (priv); // restore old priv
}
}
示例11: dprintf
int
store_cred_handler(Service * /*service*/, int /*i*/, Stream *stream) {
void * data = NULL;
int rtnVal = FALSE;
int rc;
char * temp_file_name = NULL;
bool found_cred;
CredentialWrapper * temp_cred = NULL;
int data_size = -1;
classad::ClassAd * _classad = NULL;
classad::ClassAd classad;
std::string classad_cstr;
char * classad_str = NULL;
classad::ClassAdParser parser;
ReliSock * socket = (ReliSock*)stream;
const char * user = NULL;
CredentialWrapper * cred_wrapper = NULL;
if (!socket->triedAuthentication()) {
CondorError errstack;
if( ! SecMan::authenticate_sock(socket, WRITE, &errstack) ) {
dprintf (D_ALWAYS, "Unable to authenticate, qutting\n");
goto EXIT;
}
}
user = socket->getFullyQualifiedUser();
dprintf (D_FULLDEBUG, "Request by: %s, %s\n", socket->getOwner(), user);
socket->decode();
if (!socket->code (classad_str)) {
dprintf (D_ALWAYS, "Error receiving credential metadata\n");
goto EXIT;
}
classad_cstr = classad_str;
free (classad_str);
_classad = parser.ParseClassAd(classad_cstr);
if (!_classad) {
dprintf (D_ALWAYS, "Error: invalid credential metadata %s\n", classad_cstr.c_str());
goto EXIT;
}
classad = *_classad;
delete _classad;
int type;
if (!classad.EvaluateAttrInt ("Type", type)) {
dprintf (D_ALWAYS, "Missing Type attribute in classad!\n");
goto EXIT;
}
if (type == X509_CREDENTIAL_TYPE) {
cred_wrapper = new X509CredentialWrapper (classad);
dprintf (D_ALWAYS, "Name=%s Size=%d\n",
cred_wrapper->cred->GetName(),
cred_wrapper->cred->GetDataSize());
} else {
dprintf (D_ALWAYS, "Unsupported credential type %d\n", type);
goto EXIT;
}
cred_wrapper->cred->SetOrigOwner (socket->getOwner()); // original remote uname
cred_wrapper->cred->SetOwner (user); // mapped uname
// Receive credential data
data_size = cred_wrapper->cred->GetDataSize();
if (data_size > MAX_CRED_DATA_SIZE) {
dprintf (D_ALWAYS, "ERROR: Credential data size %d > maximum allowed (%d)\n", data_size, MAX_CRED_DATA_SIZE);
goto EXIT;
}
data = malloc (data_size);
if (data == NULL) {
EXCEPT("Out of memory. Aborting.");
}
if (!socket->code_bytes(data,data_size)) {
dprintf (D_ALWAYS, "Error receiving credential data\n");
goto EXIT;
}
cred_wrapper->cred->SetData (data, data_size);
// Check whether credential under this name already exists
found_cred=false;
credentials.Rewind();
while (credentials.Next(temp_cred)) {
if ((strcmp(cred_wrapper->cred->GetName(),
temp_cred->cred->GetName()) == 0) &&
(strcmp(cred_wrapper->cred->GetOwner(),
temp_cred->cred->GetOwner()) == 0)) {
found_cred=true;
break; // found it
//.........这里部分代码省略.........
示例12: dc_schedd
void
doContactSchedd()
{
if (command_queue.IsEmpty()) {
daemonCore->Reset_Timer( contactScheddTid, contact_schedd_interval ); // Come back in a min
return;
}
dprintf(D_FULLDEBUG,"in doContactSchedd\n");
SchedDRequest * current_command = NULL;
int error=FALSE;
std::string error_msg;
CondorError errstack;
bool do_reschedule = false;
int failure_line_num = 0;
int failure_errno = 0;
// Try connecting to schedd
DCSchedd dc_schedd ( ScheddAddr, ScheddPool );
if (dc_schedd.error() || !dc_schedd.locate()) {
sprintf( error_msg, "Error locating schedd %s", ScheddAddr );
dprintf( D_ALWAYS, "%s\n", error_msg.c_str() );
// If you can't connect return "Failure" on every job request
command_queue.Rewind();
while (command_queue.Next(current_command)) {
if (current_command->status != SchedDRequest::SDCS_NEW)
continue;
if (current_command->command == SchedDRequest::SDC_STATUS_CONSTRAINED) {
const char * result[] = {
GAHP_RESULT_FAILURE,
error_msg.c_str(),
"0"};
enqueue_result (current_command->request_id, result, 3);
} else if (current_command->command == SchedDRequest::SDC_SUBMIT_JOB) {
const char * result[] = {
GAHP_RESULT_FAILURE,
NULL,
error_msg.c_str() };
enqueue_result (current_command->request_id, result, 3);
} else if (current_command->command == SchedDRequest::SDC_UPDATE_LEASE) {
const char * result[] = {
GAHP_RESULT_FAILURE,
error_msg.c_str(),
NULL };
enqueue_result (current_command->request_id, result, 3);
} else {
const char * result[] = {
GAHP_RESULT_FAILURE,
error_msg.c_str() };
enqueue_result (current_command->request_id, result, 2);
}
current_command->status = SchedDRequest::SDCS_COMPLETED;
}
}
SchedDRequest::schedd_command_type commands [] = {
SchedDRequest::SDC_REMOVE_JOB,
SchedDRequest::SDC_HOLD_JOB,
SchedDRequest::SDC_RELEASE_JOB };
const char * command_titles [] = {
"REMOVE_JOB", "HOLD_JOB", "RELEASE_JOB" };
// REMOVE
// HOLD
// RELEASE
int i=0;
while (i<3) {
StringList id_list;
SimpleList <SchedDRequest*> this_batch;
SchedDRequest::schedd_command_type this_command = commands[i];
const char * this_action = command_titles[i];
const char * this_reason = NULL;
dprintf (D_FULLDEBUG, "Processing %s requests\n", this_action);
error = FALSE;
// Create a batch of commands with the same command type AND the same reason
command_queue.Rewind();
while (command_queue.Next(current_command)) {
if (current_command->status != SchedDRequest::SDCS_NEW)
continue;
if (current_command->command != this_command)
continue;
if ((this_reason != NULL) && (strcmp (current_command->reason, this_reason) != 0))
continue;
//.........这里部分代码省略.........
示例13: doContactSchedd
//.........这里部分代码省略.........
// NOTE: Schedds from Condor 6.6 and earlier don't include
// "(Universe==9)" in the constraint they give to the gridmanager,
// so this gridmanager will pull down non-globus-universe ads,
// although it won't use them. This is inefficient but not
// incorrect behavior.
if ( firstScheddContact ) {
// Grab all jobs for us to manage. This expression is a
// derivative of the expression below for new jobs. We add
// "|| Managed =?= TRUE" to also get jobs our previous
// incarnation was in the middle of managing when it died
// (if it died unexpectedly). With the new term, the
// "&& Managed =!= TRUE" from the new jobs expression becomes
// superfluous (by boolean logic), so we drop it.
sprintf( expr_buf,
"%s && %s && ((%s && %s) || %s)",
expr_schedd_job_constraint.c_str(),
expr_not_completely_done.c_str(),
expr_matched_or_undef.c_str(),
expr_not_held.c_str(),
expr_managed.c_str()
);
} else {
// Grab new jobs for us to manage
sprintf( expr_buf,
"%s && %s && %s && %s && %s",
expr_schedd_job_constraint.c_str(),
expr_not_completely_done.c_str(),
expr_matched_or_undef.c_str(),
expr_not_held.c_str(),
expr_not_managed.c_str()
);
}
dprintf( D_FULLDEBUG,"Using constraint %s\n",expr_buf);
next_ad = GetNextJobByConstraint( expr_buf, 1 );
while ( next_ad != NULL ) {
PROC_ID procID;
BaseJob *old_job;
int job_is_matched = 1; // default to true if not in ClassAd
next_ad->LookupInteger( ATTR_CLUSTER_ID, procID.cluster );
next_ad->LookupInteger( ATTR_PROC_ID, procID.proc );
bool job_is_managed = jobExternallyManaged(next_ad);
next_ad->LookupBool(ATTR_JOB_MATCHED,job_is_matched);
if ( BaseJob::JobsByProcId.lookup( procID, old_job ) != 0 ) {
JobType *job_type = NULL;
BaseJob *new_job = NULL;
// job had better be either managed or matched! (or both)
ASSERT( job_is_managed || job_is_matched );
if ( MustExpandJobAd( next_ad ) ) {
// Get the expanded ClassAd from the schedd, which
// has the GridResource filled in with info from
// the matched ad.
delete next_ad;
next_ad = NULL;
next_ad = GetJobAd(procID.cluster,procID.proc);
if ( next_ad == NULL && errno == ETIMEDOUT ) {
failure_line_num = __LINE__;
commit_transaction = false;
goto contact_schedd_disconnect;
}
if ( next_ad == NULL ) {
// We may get here if it was not possible to expand
示例14: MyProxyGetDelegationReaper
int MyProxyGetDelegationReaper(Service *, int exitPid, int exitStatus)
{
dprintf (D_ALWAYS, "MyProxyGetDelegationReaper pid = %d, rc = %d\n", exitPid, exitStatus);
credentials.Rewind();
CredentialWrapper * cred_wrapper;
X509CredentialWrapper * matched_entry = NULL;
while (credentials.Next (cred_wrapper)) {
if (cred_wrapper->cred->GetType() == X509_CREDENTIAL_TYPE) {
if (((X509CredentialWrapper*)cred_wrapper)->get_delegation_pid == exitPid) {
matched_entry = (X509CredentialWrapper*)cred_wrapper;
break;
}
}
} //elihw
if (matched_entry) {
while (exitStatus != 0) {
int read_fd = matched_entry->get_delegation_err_fd; // shorthand
off_t offset = lseek(read_fd, 0, SEEK_SET); // rewind
if (offset == (off_t)-1) {
dprintf (D_ALWAYS, "myproxy-get-delegation for proxy (%s, %s), "
"stderr tmp file %s lseek() failed: %s\n",
matched_entry->cred->GetOwner(),
matched_entry->cred->GetName(),
matched_entry->get_delegation_err_filename,
strerror(errno)
);
break;
}
struct stat statbuf;
int status = fstat(read_fd, &statbuf);
if (status == -1) {
dprintf (D_ALWAYS, "myproxy-get-delegation for proxy (%s, %s), "
"stderr tmp file %s fstat() failed: %s\n",
matched_entry->cred->GetOwner(),
matched_entry->cred->GetName(),
matched_entry->get_delegation_err_filename,
strerror(errno)
);
break;
}
matched_entry->get_delegation_err_buff =
(char *) calloc ( statbuf.st_size + 1, sizeof(char) );
int bytes_read =
read (
read_fd,
matched_entry->get_delegation_err_buff,
statbuf.st_size
);
if (bytes_read < 0 ) {
dprintf (D_ALWAYS, "myproxy-get-delegation for proxy (%s, %s), "
"stderr tmp file %s read() failed: %s\n",
matched_entry->cred->GetOwner(),
matched_entry->cred->GetName(),
matched_entry->get_delegation_err_filename,
strerror(errno)
);
break;
}
if ( WIFEXITED(exitStatus) ) {
dprintf (D_ALWAYS, "myproxy-get-delegation for proxy (%s, %s), "
"exited with status %d, output (top):\n%s\n\n",
matched_entry->cred->GetOwner(),
matched_entry->cred->GetName(),
WEXITSTATUS(exitStatus),
matched_entry->get_delegation_err_buff
);
break;
} else if ( WIFSIGNALED(exitStatus) ) {
dprintf (D_ALWAYS, "myproxy-get-delegation for proxy (%s, %s), "
"terminated by signal %d, output (top):\n%s\n\n",
matched_entry->cred->GetOwner(),
matched_entry->cred->GetName(),
WTERMSIG(exitStatus),
matched_entry->get_delegation_err_buff
);
break;
} else {
dprintf (D_ALWAYS, "myproxy-get-delegation for proxy (%s, %s), "
"unknown status %d, output (top):\n%s\n\n",
matched_entry->cred->GetOwner(),
matched_entry->cred->GetName(),
exitStatus,
matched_entry->get_delegation_err_buff
);
break;
}
} // if exitStatus != 0
// Clean up
matched_entry->get_delegation_reset();
} else {
dprintf (D_ALWAYS,
//.........这里部分代码省略.........