TNodeJsRf24Radio* TNodeJsRf24Radio::NewFromArgs(const v8::FunctionCallbackInfo<v8::Value>& Args) { v8::Isolate* Isolate = v8::Isolate::GetCurrent(); v8::HandleScope HandleScope(Isolate); PJsonVal ParamJson = TNodeJsUtil::GetArgJson(Args, 0); const int PinCE = ParamJson->GetObjInt("pinCE"); const int PinCSN = ParamJson->GetObjInt("pinCSN"); const uint16 MyId = (uint16) ParamJson->GetObjInt("id"); const PJsonVal SensorJsonV = ParamJson->GetObjKey("sensors"); const bool Verbose = ParamJson->GetObjBool("verbose", false); const PNotify Notify = Verbose ? TNotify::StdNotify : TNotify::NullNotify; Notify->OnNotify(TNotifyType::ntInfo, "Parsing configuration ..."); TStrIntH SensorNmIdH; TStrIntH SensorIdNodeIdH; for (int SensorN = 0; SensorN < SensorJsonV->GetArrVals(); SensorN++) { const PJsonVal SensorJson = SensorJsonV->GetArrVal(SensorN); const TStr& SensorId = SensorJson->GetObjStr("id"); SensorNmIdH.AddDat(SensorId, SensorJson->GetObjInt("internalId")); SensorIdNodeIdH.AddDat(SensorId, SensorJson->GetObjInt("nodeId")); } Notify->OnNotify(TNotifyType::ntInfo, "Calling cpp constructor ..."); return new TNodeJsRf24Radio(MyId, PinCE, PinCSN, SensorNmIdH, SensorIdNodeIdH, Notify); }
void TDecisionTree::Fit(const TFltVV& FtrVV, const TFltV& ClassV, const PNotify& Notify) { Notify->OnNotifyFmt(TNotifyType::ntInfo, "Building a decision tree on %d instances ...", FtrVV.GetCols()); Grow(FtrVV, ClassV, Notify); Prune(Notify); Notify->OnNotifyFmt(TNotifyType::ntInfo, "Done!"); }
bool TReplaySrv::ReplayStream(const PSIn& SIn, const PNotify& ErrorNotify) { while (!SIn->Eof()) { try { THttpReqSerInfo ReqInfo(*SIn); PHttpRq HttpRq = ReqInfo.GetHttpRq(); ReplayHttpRq(HttpRq); } catch (PExcept E) { ErrorNotify->OnNotifyFmt(ntErr, "TReplaySrv::ReplayStream. Exception while loading next request: %s", E->GetMsgStr().CStr()); } catch (...) { ErrorNotify->OnNotifyFmt(ntErr, "TReplaySrv::ReplayStream. General exception while loading next request."); } } return true; }
void TTmProfiler::PrintReport(const PNotify& Notify, const TStr& ProfileNm) const { const double TimerSumSec = GetTimerSumSec(); Notify->OnStatusFmt("-- %s --", ProfileNm.CStr()); Notify->OnStatusFmt("Sum: (%.2f sec):", TimerSumSec); int TimerId = GetTimerIdFFirst(); while (GetTimerIdFNext(TimerId)) { // get timer name TStr TimerNm = GetTimerNm(TimerId); TimerNm = TStr::GetSpaceStr(TInt::GetMx(0, TimerNm.Len() - MxNmLen)) + TimerNm; // get timer time and precentage if (TimerSumSec > 0.0) { const double TimerSec = GetTimerSec(TimerId); const double TimerPerc = TimerSec / TimerSumSec * 100.0; Notify->OnStatusFmt(" %s: %.2fs [%.2f%%]", TimerNm.CStr(), TimerSec, TimerPerc); } else { Notify->OnStatusFmt(" %s: -", TimerNm.CStr()); } } Notify->OnStatusFmt("--"); }
///////////////////////////////////////////////// // BagOfWords-Files void TBowFl::LoadHtmlTxt( PBowDocBs BowDocBs, const TStr& FPath, TIntV& NewDIdV, const bool& RecurseDirP, const int& MxDocs, const bool& SaveDocP, const PNotify& Notify) { // prepare file-directory traversal TStr LcNrFPath=TStr::GetNrFPath(FPath).GetLc(); Notify->OnStatus("Creating Bow from file-path " + FPath + " ..."); TFFile FFile(FPath, "", RecurseDirP); // traverse files TStr FNm; int Docs=0; NewDIdV.Clr(); while (FFile.Next(FNm)){ Docs++; if ((MxDocs!=-1)&&(Docs>MxDocs)){break;} Notify->OnStatus(TStr::Fmt("%d\r", Docs)); // prepare document-name if (TFile::Exists(FNm)) { //B: TStr DocNm=FNm.GetLc(); if (DocNm.IsPrefix(LcNrFPath)){ DocNm=DocNm.GetSubStr(LcNrFPath.Len(), DocNm.Len()-1);} // categories TStrV CatNmV; TStr CatNm; if (DocNm.IsChIn('/')){ TStr Str; DocNm.SplitOnCh(CatNm, '/', Str); } else if (DocNm.IsChIn('\\')){ TStr Str; DocNm.SplitOnCh(CatNm, '\\', Str); } if (!CatNm.Empty()){ CatNmV.Add(CatNm);} // load document-content TStr DocStr=TStr::LoadTxt(FNm); // add document to bow NewDIdV.Add(BowDocBs->AddHtmlDoc(DocNm, CatNmV, DocStr, SaveDocP)); } } Notify->OnStatus(TStr::Fmt("%d", Docs)); // return results Notify->OnStatus("Done."); BowDocBs->AssertOk(); }