void ex_queue::logHeader() { #if (!defined (__EID) && !defined(NA_C89)) if (upDown_ == UP_QUEUE) { cerr << NodeTypeToString(unblockSubtask_->getTcb()->getNodeType()) << "(" << unblockSubtask_->getTcb() << ")" << " up to " << NodeTypeToString(insertSubtask_->getTcb()->getNodeType()) << "(" << insertSubtask_->getTcb() << ")" ; } else { cerr << NodeTypeToString(unblockSubtask_->getTcb()->getNodeType()) << "(" << unblockSubtask_->getTcb() << ")" << " down to " << NodeTypeToString(insertSubtask_->getTcb()->getNodeType()) << "(" << insertSubtask_->getTcb() << ")" ; } #endif }
void ex_queue::logHeader() { if (upDown_ == UP_QUEUE) { cerr << NodeTypeToString(unblockSubtask_->getTcb()->getNodeType()) << "(" << unblockSubtask_->getTcb() << ")" << " up to " << NodeTypeToString(insertSubtask_->getTcb()->getNodeType()) << "(" << insertSubtask_->getTcb() << ")" ; } else { cerr << NodeTypeToString(unblockSubtask_->getTcb()->getNodeType()) << "(" << unblockSubtask_->getTcb() << ")" << " down to " << NodeTypeToString(insertSubtask_->getTcb()->getNodeType()) << "(" << insertSubtask_->getTcb() << ")" ; } }
void CChildView::ReplaceSelectedWithType(NodeType Type) { std::vector<CNodeBase*> newSelected; PrintOut(_T("Replace Node Type %Ts"), NodeTypeToString(Type)); for (UINT i = 0; i < Selected.size(); i++) { if (!theApp.IsNodeValid(Selected[i].object)) continue; if (Selected[i].object->pParent->GetType() == nt_vtable) Type = nt_function; CNodeBase* pNewNode = theApp.CreateNewNode(Type); if (Type == nt_class) MakeBasicClass((CNodeClass*)pNewNode); if (Type == nt_custom) ((CNodeCustom*)pNewNode)->memsize = Selected[i].object->GetMemorySize(); if (Type == nt_text) ((CNodeText*)pNewNode)->memsize = Selected[i].object->GetMemorySize(); if (Type == nt_unicode) ((CNodeUnicode*)pNewNode)->memsize = Selected[i].object->GetMemorySize(); if (Type == nt_vtable) { for (int i = 0; i < 10; i++) { CNodeVTable* pVTable = (CNodeVTable*)pNewNode; CNodeFunctionPtr* pFun = new CNodeFunctionPtr; pFun->offset = i * 8; pFun->pParent = pVTable; pVTable->Nodes.push_back(pFun); } } if (Type == nt_pointer) { CNodePtr* pPtr = (CNodePtr*)pNewNode; CNodeClass* pClass = (CNodeClass*)theApp.CreateNewNode(nt_class); MakeBasicClass(pClass); pPtr->pNode = pClass; } if (Type == nt_array) { CNodeArray* pArray = (CNodeArray*)pNewNode; CNodeClass* pClass = (CNodeClass*)theApp.CreateNewNode(nt_class); MakeBasicClass(pClass); pArray->pNode = pClass; } if (Type == nt_instance) { CNodeClassInstance* pInstance = (CNodeClassInstance*)pNewNode; CNodeClass* pClass = (CNodeClass*)theApp.CreateNewNode(nt_class); MakeBasicClass(pClass); pInstance->pNode = pClass; } ReplaceNode((CNodeClass*)Selected[i].object->pParent, FindNodeIndex(Selected[i].object), pNewNode); newSelected.push_back(pNewNode); } Selected.clear(); for (UINT i = 0; i < newSelected.size(); i++) { newSelected[i]->bSelected = true; CNodeClass* pClass = (CNodeClass*)newSelected[i]->pParent; HotSpot spot; spot.Address = pClass->offset + newSelected[i]->offset; spot.object = newSelected[i]; Selected.push_back(spot); } Invalidate(FALSE); }
void ex_queue::injectErrorOrCancel() { #ifdef _DEBUG ex_queue_entry *qe = getQueueEntry(tail_-1); // DO the ol' switcheroo, but not every time. ULng32 freq = insertSubtask_->getTcb()->getGlobals()->getInjectErrorAtQueue(); if (freq == 0) return; if (upDown_ == UP_QUEUE) { if ((rand() & (freq-1)) != 0) return; NABoolean needsError = FALSE; switch (qe->upState.status) { case Q_OK_MMORE: { needsError = TRUE; qe->upState.status = Q_SQLERROR; cerr << "Converting a Q_OK_MMORE to a Q_SQLERROR, from " << NodeTypeToString(unblockSubtask_->getTcb()->getNodeType()) << "(" << unblockSubtask_->getTcb() << ")" << " to " << NodeTypeToString(insertSubtask_->getTcb()->getNodeType()) << "(" << insertSubtask_->getTcb() << ")" << endl; break; } case Q_NO_DATA: if (!isFull()) { needsError = TRUE; qe->upState.status = Q_SQLERROR; ex_queue_entry *newQNODATA = getTailEntry(); newQNODATA->upState = qe->upState; newQNODATA->upState.status = Q_NO_DATA; newQNODATA->getAtp()->copyAtp(qe->getAtp()); tail_++; cerr << "Injecting a Q_SQLERROR before a Q_NO_DATA, from " << NodeTypeToString(unblockSubtask_->getTcb()->getNodeType()) << "(" << unblockSubtask_->getTcb() << ")" << " to " << NodeTypeToString(insertSubtask_->getTcb()->getNodeType()) << "(" << insertSubtask_->getTcb() << ")" << endl; } break; default: break; } if (needsError) { ComDiagsArea * da = qe->getDiagsArea(); if (!da) da = ComDiagsArea::allocate(insertSubtask_->getTcb()->getHeap()); else da = da->copy(); qe->setDiagsArea(da); *da << DgSqlCode(-EXE_ERROR_INJECTED) << DgString0(__FILE__) << DgInt0(__LINE__); } } #endif return; }