本文整理汇总了C++中Domain::getId方法的典型用法代码示例。如果您正苦于以下问题:C++ Domain::getId方法的具体用法?C++ Domain::getId怎么用?C++ Domain::getId使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Domain
的用法示例。
在下文中一共展示了Domain::getId方法的8个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: bindStream
DysectAPI::DysectErrorCode Backend::bindStream(int tag, Stream* stream) {
int index = Domain::tagToId(tag);
map<tag_t, Domain*> domainMap = Domain::getDomainMap();
map<tag_t, Domain*>::iterator domainIter = domainMap.find(index);
if(domainIter == domainMap.end()) {
return Err::warn(StreamError, "tag unknown");
}
Domain* dom = domainIter->second;
if(!dom) {
return Err::warn(Error, "NULL domain");
}
dom->setStream(stream);
missingBindings.erase(index);
Err::verbose(true, "Domain %x bound to stream %lx", dom->getId(), (long)stream);
if(missingBindings.size() == 0) {
if(controlStream != 0) {
// XXX: Will always tell that everything went well (val = 0)
Err::verbose("All domains bound to streams - send ack");
ackBindings();
} else {
streamBindAckSent = false;
}
state = ready;
}
return OK;
}
示例2: handleTimerActions
DysectAPI::DysectErrorCode Backend::handleTimerActions() {
pthread_mutex_lock(&probesPendingActionMutex);
if (probesPendingAction.size() > 0) {
DYSECTVERBOSE(true, "Handle timer actions");
vector<Probe*>::iterator probeIter = probesPendingAction.begin();
for(;probeIter != probesPendingAction.end(); probeIter++) {
Probe* probe = *probeIter;
Domain* dom = probe->getDomain();
DYSECTVERBOSE(true, "Sending enqueued actions for timed probe: %x", dom->getId());
probe->sendEnqueuedActions();
if(probe->numWaitingProcs() > 0) {
ProcessSet::ptr lprocset = probe->getWaitingProcs();
probe->enableChildren(lprocset);
if(probe->getLifeSpan() == fireOnce)
probe->disable(lprocset);
lprocset->continueProcs();
probe->releaseWaitingProcs();
}
}
probesPendingAction.clear();
}
pthread_mutex_unlock(&probesPendingActionMutex);
return OK;
}
示例3: handleTimerEvents
DysectAPI::DysectErrorCode Backend::handleTimerEvents() {
if(SafeTimer::anySyncReady()) {
Err::verbose(true, "Handle timer events");
vector<Probe*> readyProbes = SafeTimer::getAndClearSyncReady();
vector<Probe*>::iterator probeIter = readyProbes.begin();
for(;probeIter != readyProbes.end(); probeIter++) {
Probe* probe = *probeIter;
Domain* dom = probe->getDomain();
Err::verbose(true, "Sending enqueued notifications for timed probe: %x", dom->getId());
probe->sendEnqueuedNotifications();
probe->sendEnqueuedActions();
}
}
return OK;
}
示例4: handleTimerEvents
DysectAPI::DysectErrorCode Backend::handleTimerEvents() {
if(SafeTimer::anySyncReady()) {
DYSECTVERBOSE(true, "Handle timer notifications");
vector<Probe*> readyProbes = SafeTimer::getAndClearSyncReady();
vector<Probe*>::iterator probeIter = readyProbes.begin();
for(;probeIter != readyProbes.end(); probeIter++) {
Probe* probe = *probeIter;
Domain* dom = probe->getDomain();
DYSECTVERBOSE(true, "Sending enqueued notifications for timed probe: %x", dom->getId());
probe->sendEnqueuedNotifications();
pthread_mutex_lock(&probesPendingActionMutex);
probesPendingAction.push_back(probe);
pthread_mutex_unlock(&probesPendingActionMutex);
}
}
return OK;
}
示例5: listen
DysectAPI::DysectErrorCode Frontend::listen() {
int ret;
int idle = 0;
// Install handler for (ctrl-c) abort
// signal(SIGINT, Frontend::interrupt);
//
printf("Waiting for events (! denotes captured event)\n");
printf("Hit <enter> to stop session\n");
fflush(stdout);
{
do {
// select() overwrites fd_set with ready fd's
// Copy fd_set structure
fd_set fdRead = Domain::getFdSet();
if(breakOnEnter)
FD_SET(0, &fdRead); //STDIN
struct timeval timeout;
timeout.tv_sec = Frontend::selectTimeout;
timeout.tv_usec = 0;
ret = select(Domain::getMaxFd() + 1, &fdRead, NULL, NULL, &timeout);
if(ret < 0) {
//return Err::warn(DysectAPI::Error, "select() failed to listen on file descriptor set.");
return DysectAPI::OK;
}
if(FD_ISSET(0, &fdRead) && breakOnEnter) {
Err::info(true, "Stopping session - enter key was hit");
break;
}
// Look for owners
vector<Domain*> doms = Domain::getFdsFromSet(fdRead);
if(doms.size() == 0) {
if(Frontend::breakOnTimeout && (--Frontend::numEvents < 0)) {
Err::info(true, "Stopping session - increase numEvents for longer sessions");
break;
}
} else {
printf("\n");
fflush(stdout);
}
for(int i = 0; i < doms.size(); i++) {
Domain* dom = doms[i];
PacketPtr packet;
int tag;
if(!dom->getStream()) {
return Err::warn(Error, "Stream not available for domain %x", dom->getId());
}
do {
ret = dom->getStream()->recv(&tag, packet, false);
if(ret == -1) {
return Err::warn(Error, "Receive error");
} else if(ret == 0) {
break;
}
int count;
char *payload;
int len;
if(packet->unpack("%d %auc", &count, &payload, &len) == -1) {
return Err::warn(Error, "Unpack error");
}
if(Domain::isProbeEnabledTag(tag)) {
Domain* dom = 0;
if(!Domain::getDomainFromTag(dom, tag)) {
Err::warn(false, "Could not get domain from tag %x", tag);
} else {
//Err::info(true, "[%d] Probe %x enabled (payload size %d)", count, dom->getId(), len);
//Err::info(true, "[%d] Probe %x enabled", count, dom->getId());
}
Probe* probe = dom->owner;
if(!probe) {
Err::warn(false, "Probe object not found for %x", dom->getId());
} else {
probe->handleActions(count, payload, len);
}
// Empty bodied probe
// Check wether backends are waiting for releasing processes
if(dom->isBlocking()) {
dom->sendContinue();
}
//.........这里部分代码省略.........
示例6: handleEvent
Process::cb_ret_t Backend::handleEvent(Dyninst::ProcControlAPI::Process::const_ptr curProcess,
Dyninst::ProcControlAPI::Thread::const_ptr curThread,
DysectAPI::Event* dysectEvent) {
Process::cb_ret_t retState = Process::cbDefault;
// Let event know that it was triggered.
// Used for event composition
Walker* proc = (Walker*)curProcess->getData();
if(!proc) {
Err::warn(true, "Missing payload in process object: could not get walker");
} else {
dysectEvent->triggered(curProcess, curThread);
// Find owning probe
Probe* probe = dysectEvent->getOwner();
if(!probe) {
Err::warn(true, "Probe could not be found for event object");
} else {
// If enqueued disabled - stop and await
//if(probe->isDisabled(curProcess)) {
// probe->addWaitingProc(curProcess);
// return Process::cbProcStop;
// //return Process::cbDefault;
//}
// Composed events might require several events being triggered
if(probe->wasTriggered(curProcess, curThread)) {
// Required events indeed triggered
// Evaluate conditions
ConditionResult result;
Err::verbose(true, "Evaluate condition!");
if(probe->evaluateConditions(result, curProcess, curThread) == DysectAPI::OK) {
if(result == ResolvedTrue) {
Err::verbose(true, "Condition satisfied");
Domain* dom = probe->getDomain();
assert(dom != 0);
if(dom->getWaitTime() == Wait::inf) {
// Block strictly, until all processes have shown up
Err::verbose(true, "Enqueuing notification for static domain");
probe->enqueueNotifyPacket();
probe->enqueueAction(curProcess, curThread);
} else if(dom->getWaitTime() != Wait::NoWait) {
if(!DysectAPI::SafeTimer::syncTimerRunning(probe)) {
Err::verbose(true, "Start timer and enqueue: %x", dom->getId());
DysectAPI::SafeTimer::startSyncTimer(probe);
} else {
Err::verbose(true, "Timer already running - just enqueue");
}
if(probe->doNotify()) {
probe->enqueueNotifyPacket();
}
probe->enqueueAction(curProcess, curThread);
} else { // No-wait probe
if(probe->doNotify()) {
probe->notifyTriggered();
}
probe->triggerAction(curProcess, curThread);
}
if(probe->waitForOthers()) {
Err::verbose(true, "Wait for group members");
probe->addWaitingProc(curProcess);
if((dom->getWaitTime() == Wait::inf) && (probe->staticGroupWaiting())) {
Err::verbose(true, "Sending enqueued notifications");
if(probe->doNotify()) {
probe->sendEnqueuedNotifications();
}
probe->sendEnqueuedActions();
}
retState = Process::cbThreadStop;
} else {
Err::verbose(true, "Enable children for probe %x", dom->getId());
probe->enqueueEnable(curProcess);
//Err::verbose(true, "Stopping thread in process %d", curProcess->getPid());
probe->addWaitingProc(curProcess);
//retState = Process::cbThreadStop;
retState = Process::cbProcStop;
//.........这里部分代码省略.........
示例7: readSpatialSBML
void readSpatialSBML() {
SBMLDocument *document2 = readSBML("spatial_example2.xml");
Model *model2 = document2->getModel();
Compartment *comp;
SpatialCompartmentPlugin* cplugin;
for (unsigned int i = 0; i < model2->getNumCompartments(); i++) {
comp = model2->getCompartment(i);
cout << "Compartment" << i << ": " << comp->getId() << endl;
cplugin = static_cast<SpatialCompartmentPlugin*>(comp->getPlugin("spatial"));
if (cplugin->getCompartmentMapping()->isSetId()) {
cout << "Comp" << i << " CMSpId: " << cplugin->getCompartmentMapping()->getId() << endl;
cout << "Comp" << i << " CM_DType: " << cplugin->getCompartmentMapping()->getDomainType() << endl;
cout << "Comp" << i << " CM_UnitSz: " << cplugin->getCompartmentMapping()->getUnitSize() << endl;
}
}
Species *sp;
SpatialSpeciesPlugin* srplugin;
for (unsigned int i = 0; i < model2->getNumSpecies(); i++) {
sp = model2->getSpecies(i);
cout << "Species" << i << ": " << sp->getId() << endl;
srplugin = static_cast<SpatialSpeciesPlugin*>(sp->getPlugin("spatial"));
if (srplugin->getIsSpatial()) {
cout << "species" << i << " isSpatial: " << srplugin->getIsSpatial() << endl;
}
}
Parameter *param;
SpatialParameterPlugin* pplugin;
for (unsigned int i = 0; i < model2->getNumParameters(); i++) {
param = model2->getParameter(i);
cout << "Parameter" << i << ": " << param->getId() << endl;
pplugin = static_cast<SpatialParameterPlugin*>(param->getPlugin("spatial"));
if (pplugin->isSetSpatialSymbolReference()) {
cout << "Parameter" << i << " SpRefId: " << pplugin->getSpatialSymbolReference()->getSpatialRef() << endl;
}
if (pplugin->isSetDiffusionCoefficient()) {
cout << "Diff_" << i << " SpeciesVarId: " << pplugin->getDiffusionCoefficient()->getVariable() << endl;
cout << "Diff_" << i << " Type: " << DiffusionKind_toString(pplugin->getDiffusionCoefficient()->getType()) << endl;
for (unsigned int j = 0; j < pplugin->getDiffusionCoefficient()->getNumCoordinateReferences(); ++j)
cout << "Diff_" << i << " SpCoordIndex " << j << " : " << CoordinateKind_toString(pplugin->getDiffusionCoefficient()->getCoordinateReference(j) ->getCoordinate()) << endl;
}
if (pplugin->isSetAdvectionCoefficient()) {
cout << "Adv_" << i << " SpeciesVarId: " << pplugin->getAdvectionCoefficient()->getVariable() << endl;
cout << "Adv_" << i << " SpCoordIndex: " << CoordinateKind_toString(pplugin->getAdvectionCoefficient()->getCoordinate()) << endl;
}
if (pplugin->isSetBoundaryCondition()) {
cout << "BC_" << i << " SpeciesVarId: " << pplugin->getBoundaryCondition()->getVariable() << endl;
cout << "BC_" << i << " SpCoordBoundary: " << pplugin->getBoundaryCondition()->getCoordinateBoundary() << endl;
cout << "BC_" << i << " SpBoundaryType: " << pplugin->getBoundaryCondition()->getType() << endl;
}
}
Reaction *rxn;
SpatialReactionPlugin* rplugin;
for (unsigned int i = 0; i < model2->getNumReactions(); i++) {
rxn = model2->getReaction(i);
cout << "Reaction" << i << ": " << rxn->getId() << endl;
rplugin = static_cast<SpatialReactionPlugin*>(rxn->getPlugin("spatial"));
if (rplugin->getIsLocal()) {
cout << "rxn" << i << " isLocal: " << rplugin->getIsLocal() << endl;
}
}
Rule *rule;
for (unsigned int i = 0; i < model2->getNumRules(); i++) {
rule = model2->getRule(i);
cout << "Rule" << i << ": " << rule->getVariable() << endl;
}
//
// Get a SpatialModelPlugin object plugged in the model object.
//
// The type of the returned value of SBase::getPlugin() function is
// SBasePlugin*, and thus the value needs to be cast for the
// corresponding derived class.
//
SpatialModelPlugin* mplugin2;
mplugin2 = static_cast<SpatialModelPlugin*>(model2->getPlugin("spatial"));
cout << "URI: " << mplugin2->getURI() << endl;
cout << "prefix: " << mplugin2->getPrefix() << endl;
// get a Geometry object via SpatialModelPlugin object.
Geometry* geometry2 = mplugin2->getGeometry();
cout << "Geometry coordSystem: " << geometry2->getCoordinateSystem() << endl;
// get a CoordComponent object via the Geometry object.
CoordinateComponent* coordComp = geometry2->getCoordinateComponent(0);
std::cout << "CoordComponent Id: " << coordComp->getId() << std::endl;
std::cout << "CoordComponent type: " << CoordinateKind_toString( coordComp->getType()) << std::endl;
std::cout << "CoordComponent sbmlUnit: " << coordComp->getUnit() << std::endl;
if (coordComp->isSetBoundaryMin())
{
Boundary* minX = coordComp->getBoundaryMin();
std::cout << "minX name: " << minX->getId() << std::endl;
std::cout << "minX value: " << minX->getValue() << std::endl;
}
if (coordComp->isSetBoundaryMax())
{
//.........这里部分代码省略.........
示例8: readSBMLFromFile
END_TEST
START_TEST (test_SpatialExtension_read_L3V1V1_defaultNS)
{
string file = TestDataDirectory;
file += "/read_L3V1V1_defaultNS.xml";
SBMLDocument *document = readSBMLFromFile(file.c_str());
string sbmlDoc = writeSBMLToStdString(document);
Model *model = document->getModel();
//document->printErrors();
fail_unless(model != NULL);
//fail_unless(document->getNumErrors() == 0);
// model : compartment
fail_unless(model->getNumCompartments() == 1);
Compartment *comp = model->getCompartment(0);
// compartment : compartmentMapping
SpatialCompartmentPlugin* cplugin = static_cast<SpatialCompartmentPlugin*>(comp->getPlugin("spatial"));
fail_unless(cplugin != NULL);
CompartmentMapping *cMapping = cplugin->getCompartmentMapping();
if (cMapping->isSetId()) {
fail_unless(cMapping->getId() == "compMap1");
fail_unless(cMapping->getDomainType() == "dtype1");
fail_unless(cMapping->getUnitSize() == 1);
}
// model : species 1
fail_unless(model->getNumSpecies() == 2);
Species *sp = model->getSpecies(0);
SpatialSpeciesPlugin* srplugin = static_cast<SpatialSpeciesPlugin*>(sp->getPlugin("spatial"));
fail_unless(srplugin != NULL);
fail_unless(srplugin->getIsSpatial() == true);
// model : species 2
sp = model->getSpecies(1);
srplugin = static_cast<SpatialSpeciesPlugin*>(sp->getPlugin("spatial"));
fail_unless(srplugin != NULL);
fail_unless(srplugin->getIsSpatial() == true);
// model : parameters (species diffusion, advection coeffs, species boundary conditions, coordinate components from Geometry
fail_unless(model->getNumParameters() == 5);
// parameter 0 : diffusionCoefficient
Parameter *param = model->getParameter(0);
SpatialParameterPlugin* pplugin = static_cast<SpatialParameterPlugin*>(param->getPlugin("spatial"));
fail_unless(pplugin != NULL);
fail_unless(pplugin->isSpatialParameter() == true);
fail_unless(pplugin->getType() == SBML_SPATIAL_DIFFUSIONCOEFFICIENT);
DiffusionCoefficient *diffCoeff = pplugin->getDiffusionCoefficient();
fail_unless(diffCoeff->getVariable() == "ATPc");
fail_unless(diffCoeff->isSetCoordinateReference1());
fail_unless(diffCoeff->getCoordinateReference1() == SPATIAL_COORDINATEKIND_CARTESIAN_X);
// parameter 1 : advectionCoefficient
param = model->getParameter(1);
pplugin = static_cast<SpatialParameterPlugin*>(param->getPlugin("spatial"));
fail_unless(pplugin != NULL);
fail_unless(pplugin->isSpatialParameter() == true);
fail_unless(pplugin->getType() == SBML_SPATIAL_ADVECTIONCOEFFICIENT);
AdvectionCoefficient *advCoeff = pplugin->getAdvectionCoefficient();
fail_unless(advCoeff->getVariable() == "ATPc");
fail_unless(advCoeff->getCoordinate() == SPATIAL_COORDINATEKIND_CARTESIAN_X);
// parameter 2 : boundaryCondition X
param = model->getParameter(2);
pplugin = static_cast<SpatialParameterPlugin*>(param->getPlugin("spatial"));
fail_unless(pplugin != NULL);
fail_unless(pplugin->isSpatialParameter() == true);
fail_unless(pplugin->getType() == SBML_SPATIAL_BOUNDARYCONDITION);
BoundaryCondition *bc = pplugin->getBoundaryCondition();
fail_unless(bc->getVariable() == "ATPc");
fail_unless(bc->getCoordinateBoundary() == "Xmin");
fail_unless(bc->getType() == SPATIAL_BOUNDARYKIND_DIRICHLET);
// parameter 3 : SpatialSymbolReference (coordinateComponent from geometry)
param = model->getParameter(3);
pplugin = static_cast<SpatialParameterPlugin*>(param->getPlugin("spatial"));
fail_unless(pplugin != NULL);
SpatialSymbolReference *spSymRef = pplugin->getSpatialSymbolReference();
fail_unless(spSymRef->getSpatialRef() == "coordComp1");
// model : reaction
fail_unless(model->getNumReactions() == 1);
Reaction *rxn = model->getReaction(0);
SpatialReactionPlugin* rplugin = static_cast<SpatialReactionPlugin*>(rxn->getPlugin("spatial"));
fail_unless(rplugin != NULL);
fail_unless(rplugin->getIsLocal() == true);
//.........这里部分代码省略.........