Changeset 2491 in Sophya for trunk/SophyaPI/PIext/nobjmgr.cc
- Timestamp:
- Jan 4, 2004, 8:02:44 PM (22 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/SophyaPI/PIext/nobjmgr.cc
r2490 r2491 36 36 #include "pigfd1.h" 37 37 #include "pigfd2.h" 38 39 #include "zthread.h" 38 40 39 41 … … 94 96 static string* TmpDir; // Repertoire pour les compilations / link dynamique 95 97 98 // Pour gestion multithread 99 static ZMutex* myMutex; 96 100 // .................................................................. 97 101 … … 119 123 currDir = new string("home"); 120 124 string dirn = "home"; 121 CreateDir (dirn);125 CreateDir_P(dirn); 122 126 SetKeepOldDirAtt(dirn, false); 123 127 dirn = "tmp"; 124 CreateDir (dirn);128 CreateDir_P(dirn); 125 129 SetKeepOldDirAtt(dirn, false); 126 130 dirn = "autoc"; 127 CreateDir (dirn);131 CreateDir_P(dirn); 128 132 SetKeepOldDirAtt(dirn, false); 129 133 dirn = "old"; 130 CreateDir (dirn);134 CreateDir_P(dirn); 131 135 SetKeepOldDirAtt(dirn, false); 132 136 dirn = "home"; … … 138 142 int l = (*TmpDir).length(); 139 143 if ( (l>0) && ((*TmpDir)[l-1] != '/') ) (*TmpDir) += '/'; 140 servnobjm = new Services2NObjMgr(this, (*TmpDir)); 144 servnobjm = new Services2NObjMgr(*TmpDir); 145 myMutex = new ZMutex; 141 146 } 142 147 fgOInit++; … … 154 159 delete myDirs; 155 160 delete myVars; 161 delete myMutex; 156 162 } 157 163 } … … 223 229 return(false); 224 230 } 231 ZSync(*myMutex); 225 232 #ifdef SANS_EVOLPLANCK 226 233 bool fg = true; … … 240 247 return(false); 241 248 } 249 ZSync(*myMutex); 242 250 #ifdef SANS_EVOLPLANCK 243 251 DVList::ValList::const_iterator it; … … 257 265 return(false); 258 266 } 267 ZSync(*myMutex); 259 268 #ifdef SANS_EVOLPLANCK 260 269 return(false); … … 271 280 return(""); 272 281 } 282 ZSync(*myMutex); 273 283 // cout << " DEBUG::GetVar " << *myVars << endl; 274 284 return(myVars->GetS(key)); … … 279 289 { 280 290 // cout << " DEBUG::GetVarList " << *myVars << endl; 291 ZSync(*myMutex); 281 292 return(*myVars); 282 293 } … … 284 295 /* --Methode-- */ 285 296 bool NamedObjMgr::CreateDir(string & dirname) 297 { 298 ZSync(*myMutex); 299 return CreateDir_P(dirname); 300 } 301 302 /* --Methode-- */ 303 bool NamedObjMgr::CreateDir_P(string & dirname) 286 304 { 287 305 if ( !CheckDirName(dirname) ) { … … 317 335 return(false); 318 336 } 337 ZSync(*myMutex); 319 338 NObjDirList::iterator it = myDirs->find(dirname); 320 339 if (it == myDirs->end()) { … … 347 366 void NamedObjMgr::LockDir(string & dirname) 348 367 { 368 ZSync(*myMutex); 349 369 if ( !CheckDirName(dirname) ) return; 350 370 NObjDirList::iterator it = myDirs->find(dirname); … … 358 378 void NamedObjMgr::UnlockDir(string & dirname) 359 379 { 380 ZSync(*myMutex); 360 381 if ( !CheckDirName(dirname) ) return; 361 382 NObjDirList::iterator it = myDirs->find(dirname); … … 369 390 void NamedObjMgr::SetKeepOldDirAtt(string & dirname, bool keepold) 370 391 { 392 ZSync(*myMutex); 371 393 if ( !CheckDirName(dirname) ) return; 372 394 NObjDirList::iterator it = myDirs->find(dirname); … … 384 406 bool NamedObjMgr::SetCurrentDir(string & dirname) 385 407 { 408 ZSync(*myMutex); 386 409 if ( !CheckDirName(dirname) ) { 387 410 cout << "NamedObjMgr::SetCurrentDir( " << dirname << ") Error - Invalid name !" << endl; … … 401 424 void NamedObjMgr::GetCurrentDir(string & dirname) 402 425 { 426 ZSync(*myMutex); 403 427 dirname = *currDir; 404 428 } … … 407 431 void NamedObjMgr::ListDirs(string & patt) 408 432 { 433 ZSync(*myMutex); 409 434 NObjDirList::iterator it; 410 435 string cn; … … 426 451 void NamedObjMgr::GetDirList(string & patt, vector<string>& lstd) 427 452 { 453 ZSync(*myMutex); 428 454 NObjDirList::iterator it; 429 455 string cn; … … 437 463 /* --Methode-- */ 438 464 void NamedObjMgr::CleanDir(string & dirname) 465 { 466 ZSync(*myMutex); 467 CleanDir_P(dirname); 468 } 469 470 /* --Methode-- */ 471 void NamedObjMgr::CleanDir_P(string & dirname) 439 472 { 440 473 if ( !CheckDirName(dirname) ) { … … 493 526 //-- 494 527 495 496 528 /* --Methode-- */ 497 529 bool NamedObjMgr::AddObj(AnyDataObj* obj, string & nom, bool crd) 530 { 531 ZSync(*myMutex); 532 return AddObj_P(obj, nom, crd); 533 } 534 535 /* --Methode-- */ 536 bool NamedObjMgr::AddObj_P(AnyDataObj* obj, string & nom, bool crd) 498 537 { 499 538 … … 516 555 return(false); 517 556 } 518 else { CreateDir (nrep); did = myDirId; }557 else { CreateDir_P(nrep); did = myDirId; } 519 558 } 520 559 521 560 // Si c'est le repertoire /autoc, on nettoie 522 561 if (nrep == "autoc") { 523 CleanDir (nrep);562 CleanDir_P(nrep); 524 563 } 525 564 … … 543 582 sprintf(buff, "%d", (*it).second.oid); 544 583 string nomnew = "/autoc/" + nobj + buff; 545 RenameObj (nom, nomnew);584 RenameObj_P(nom, nomnew); 546 585 } 547 586 else if ( (*itr).second.keepold ) { // On met l'ancien objet dans /old … … 550 589 sprintf(buff, "%d", (*it).second.oid); 551 590 string nomnew = "/old/" + nobj + buff; 552 RenameObj (nom, nomnew);591 RenameObj_P(nom, nomnew); 553 592 } 554 593 else { // Sinon, on remplace l'objet 555 594 cout << "NamedObjMgr::AddObj() - Replacing " << nom << endl; 556 DelObj (nom);595 DelObj_P(nom); 557 596 } 558 597 } … … 581 620 bool NamedObjMgr::AddObj(AnyDataObj& obj, string & nom, bool crd) 582 621 { 622 ZSync(*myMutex); 583 623 NObjMgrAdapter* adap = GetServiceObj()->GetAdapter(&obj); 584 624 if (adap == NULL) { … … 592 632 return(false); 593 633 } 594 return ( AddObj (cloneobj , nom, crd) );634 return ( AddObj_P(cloneobj , nom, crd) ); 595 635 } 596 636 597 637 /* --Methode-- */ 598 638 bool NamedObjMgr::RenameObj(string & nom, string& nomnew) 639 { 640 ZSync(*myMutex); 641 return RenameObj_P(nom, nomnew); 642 } 643 644 /* --Methode-- */ 645 bool NamedObjMgr::RenameObj_P(string & nom, string& nomnew) 599 646 { 600 647 string n1,r1,n2,r2; … … 657 704 bool NamedObjMgr::CopyObj(string & nom, string& nomcp) 658 705 { 706 ZSync(*myMutex); 659 707 if(nomcp.length()<=0) 660 708 {cout<<"NamedObjMgr::CopyObj() Error, copied obj name "<<nomcp<<" not valid"<<endl; … … 666 714 AnyDataObj* obnomcp = obnom->CloneDataObj(); 667 715 if(obnomcp==NULL) return(false); 668 if(! AddObj (obnomcp,nomcp) ) {delete obnomcp; return(false);}716 if(! AddObj_P(obnomcp,nomcp,false) ) {delete obnomcp; return(false);} 669 717 return true; 670 718 } 671 719 672 673 720 /* --Methode-- */ 674 721 bool NamedObjMgr::DelObj(string & nom, bool fgd) 722 { 723 ZSync(*myMutex); 724 return DelObj_P(nom, fgd); 725 } 726 727 /* --Methode-- */ 728 bool NamedObjMgr::DelObj_P(string & nom, bool fgd) 675 729 { 676 730 string n1,r1; … … 713 767 bool NamedObjMgr::DelObj_Id(int oid) 714 768 { 769 ZSync(*myMutex); 715 770 NObjList::iterator it; 716 771 string nom; … … 728 783 void NamedObjMgr::DelObjects(string & patt, bool fgd) 729 784 { 785 ZSync(*myMutex); 730 786 string n1,r1; 731 787 ParseObjectName(patt, r1, n1); … … 739 795 } 740 796 list<string>::iterator ii; 741 for(ii=odel.begin(); ii != odel.end(); ii++) DelObj (*ii, fgd);797 for(ii=odel.begin(); ii != odel.end(); ii++) DelObj_P(*ii, fgd); 742 798 } 743 799 … … 745 801 AnyDataObj* NamedObjMgr::GetObj(string & nom) 746 802 { 803 ZSync(*myMutex); 747 804 string n1,r1; 748 805 ParseObjectName(nom, r1, n1); … … 756 813 NObjMgrAdapter* NamedObjMgr::GetObjAdapter(string & nom) 757 814 { 815 ZSync(*myMutex); 758 816 string n1,r1; 759 817 ParseObjectName(nom, r1, n1); … … 767 825 void NamedObjMgr::ListObjs(string & patt) 768 826 { 827 ZSync(*myMutex); 769 828 int k; 770 829 AnyDataObj* obj=NULL; … … 795 854 void NamedObjMgr::GetObjList(string & patt, vector<string> &lst) 796 855 { 856 ZSync(*myMutex); 797 857 string n1,r1; 798 858 if (patt.length() < 1) return; … … 830 890 void NamedObjMgr::ReadObj(string const & flnm, string & nobj) 831 891 { 892 ZSync(*myMutex); 832 893 PPersist* ppobj=NULL; 833 894 bool ok = true; … … 852 913 if (!ok) return; 853 914 if (nobj.length()<1) nobj = servnobjm->FileName2Name(flnm); 854 AddObj (ppobj->DataObj(), nobj, true);915 AddObj_P(ppobj->DataObj(), nobj, true); 855 916 cout << "NamedObjMgr::ReadObj(...) object " << nobj << " read from file " << endl; 856 917 return; … … 860 921 void NamedObjMgr::ReadObj(PInPersist& s, int num) 861 922 { 923 ZSync(*myMutex); 862 924 int_4 i; // $CHECK$ int -> int_4 a cause de TagKey 863 925 #ifdef SANS_EVOLPLANCK … … 903 965 if (!ok) return; 904 966 nom = ""; 905 AddObj (obj->DataObj(), nom);967 AddObj_P(obj->DataObj(), nom, false); 906 968 nread++; 907 969 } … … 933 995 } 934 996 #endif 935 if (ok) { AddObj (obj->DataObj(), nom, true); nread++; }997 if (ok) { AddObj_P(obj->DataObj(), nom, true); nread++; } 936 998 } 937 999 … … 942 1004 void NamedObjMgr::ReadAll(string const & flnm) 943 1005 { 1006 ZSync(*myMutex); 944 1007 bool ok = true; 945 1008 PPersist* obj=NULL; … … 968 1031 if (obj) { 969 1032 string nom = servnobjm->FileName2Name(flnm); 970 AddObj (obj->DataObj(), nom);1033 AddObj_P(obj->DataObj(), nom, false); 971 1034 } 972 1035 else ReadObj((*ppin), -1); … … 978 1041 void NamedObjMgr::ReadFits(string const & flnm, string & nobj) 979 1042 { 980 1043 ZSync(*myMutex); 981 1044 #ifdef SANS_EVOLPLANCK 982 1045 bool ok = false; … … 993 1056 if (ok && (obj != NULL)) { 994 1057 if (nobj.length()<1) nobj = servnobjm->FileName2Name(flnm); 995 AddObj ((AnyDataObj*)obj, nobj);1058 AddObj_P((AnyDataObj*)obj, nobj); 996 1059 } 997 1060 #else … … 1018 1081 } 1019 1082 else name = nobj; 1020 AddObj (obj, name);1083 AddObj_P(obj, name, false); 1021 1084 kon++; 1022 1085 } … … 1035 1098 } 1036 1099 1100 /* --Methode-- */ 1101 void NamedObjMgr::SaveObj(string & nom, POutPersist& s, bool keeppath) 1102 { 1103 ZSync(*myMutex); 1104 SaveObj_P(nom, s, keeppath); 1105 } 1037 1106 1038 1107 static int key_for_write = 5000; 1039 1108 /* --Methode-- */ 1040 void NamedObjMgr::SaveObj (string & nom, POutPersist& s, bool keeppath)1109 void NamedObjMgr::SaveObj_P(string & nom, POutPersist& s, bool keeppath) 1041 1110 { 1042 1111 if (nom.length() < 1) return; … … 1057 1126 void NamedObjMgr::SaveObjects(string & patt, string const& flnm) 1058 1127 { 1128 ZSync(*myMutex); 1059 1129 string n1,r1; 1060 1130 if (patt.length() < 1) return; … … 1086 1156 cn = (*it).first; 1087 1157 if (csh_parse(cn.c_str(), patt.c_str()) == 0) continue; 1088 SaveObj (cn, (*pout), keeppath);1158 SaveObj_P(cn, (*pout), keeppath); 1089 1159 } 1090 1160 delete pout; … … 1095 1165 void NamedObjMgr::SaveAll(string const& flnm) 1096 1166 { 1167 ZSync(*myMutex); 1097 1168 bool ok = true; 1098 1169 … … 1118 1189 for(it = myObjs->begin(); it != myObjs->end(); it++) { 1119 1190 no = (*it).first; 1120 SaveObj (no, (*pout), true);1191 SaveObj_P(no, (*pout), true); 1121 1192 } 1122 1193 delete pout; … … 1127 1198 void NamedObjMgr::SaveFits(string& nom, string const & flnm) 1128 1199 { 1200 ZSync(*myMutex); 1201 1129 1202 NObjMgrAdapter* obja=NULL; 1130 1203 obja = GetObjAdapter(nom); … … 1139 1212 void NamedObjMgr::PrintObj(string& nom) 1140 1213 { 1214 ZSync(*myMutex); 1141 1215 NObjMgrAdapter* obja=NULL; 1142 1216 obja = GetObjAdapter(nom); … … 1157 1231 void NamedObjMgr::DisplayObj(string& nom, string dopt) 1158 1232 { 1233 ZSync(*myMutex); 1234 1159 1235 NObjMgrAdapter* obja=NULL; 1160 1236 obja = GetObjAdapter(nom); … … 1185 1261 ParseObjectName(nom, r1, n1); 1186 1262 1263 // Si appel venant de PIStdImgApp, il ne faut pas locker le Mutex global de la boucle d'evts 1264 bool fglock = (_fgimgapp) ? false : true; 1265 1187 1266 if (dr) { 1188 1267 PIDrawer3D * dr3 = dynamic_cast<PIDrawer3D *>(dr); 1189 if(dr3) wrsid = myImgApp->Disp3DDrawer(dr3, n1, dopt );1190 else wrsid = myImgApp->DispScDrawer( dr, n1, dopt );1191 } 1192 else if (arr) wrsid = myImgApp->DispImage(arr, n1, dopt );1268 if(dr3) wrsid = myImgApp->Disp3DDrawer(dr3, n1, dopt, "", 0, fglock); 1269 else wrsid = myImgApp->DispScDrawer( dr, n1, dopt, "", 0, fglock); 1270 } 1271 else if (arr) wrsid = myImgApp->DispImage(arr, n1, dopt, 0, fglock); 1193 1272 1194 1273 AddWRsId(nom, wrsid); … … 1199 1278 void NamedObjMgr::DisplayImage(string& nom, string dopt) 1200 1279 { 1280 ZSync(*myMutex); 1281 1201 1282 NObjMgrAdapter* obja=NULL; 1202 1283 obja = GetObjAdapter(nom); … … 1222 1303 ParseObjectName(nom, r1, n1); 1223 1304 1305 // Si appel venant de PIStdImgApp, il ne faut pas locker le Mutex global de la boucle d'evts 1306 bool fglock = (_fgimgapp) ? false : true; 1307 1224 1308 int wrsid = 0; 1225 wrsid = myImgApp->DispImage(arr, n1, dopt );1309 wrsid = myImgApp->DispImage(arr, n1, dopt, 0, fglock); 1226 1310 1227 1311 AddWRsId(nom, wrsid); … … 1231 1315 void NamedObjMgr::DisplaySurf3D(string& nom, string dopt) 1232 1316 { 1317 ZSync(*myMutex); 1318 1233 1319 NObjMgrAdapter* obja=NULL; 1234 1320 obja = GetObjAdapter(nom); … … 1261 1347 ParseObjectName(nom, r1, n1); 1262 1348 1349 // Si appel venant de PIStdImgApp, il ne faut pas locker le Mutex global de la boucle d'evts 1350 bool fglock = (_fgimgapp) ? false : true; 1351 1263 1352 int wrsid = 0; 1264 1353 PISurfaceDrawer* sdr = new PISurfaceDrawer(arr, true, true, true); 1265 wrsid = myImgApp->Disp3DDrawer(sdr, n1, dopt );1354 wrsid = myImgApp->Disp3DDrawer(sdr, n1, dopt, "", 0, fglock); 1266 1355 AddWRsId(nom, wrsid); 1267 1356 return; … … 1273 1362 string& label, string dopt, bool fg3d) 1274 1363 { 1364 ZSync(*myMutex); 1365 1275 1366 AnyDataObj* obj=GetObj(nom); 1276 1367 if (obj == NULL) { … … 1293 1384 string n1,r1; 1294 1385 ParseObjectName(nom, r1, n1); 1386 1387 // Si appel venant de PIStdImgApp, il ne faut pas locker le Mutex global de la boucle d'evts 1388 bool fglock = (_fgimgapp) ? false : true; 1295 1389 1296 1390 if ( fg3d && (nmz.length()>0) ) { // Display 3D … … 1301 1395 pin->SelectErrBar(erx.c_str(), ery.c_str(), erz.c_str()); 1302 1396 string titre = nmz + "%" + nmy + "%" + nmz; 1303 wrsid = myImgApp->Disp3DDrawer(pin, n1, dopt, titre );1397 wrsid = myImgApp->Disp3DDrawer(pin, n1, dopt, titre, 0, fglock); 1304 1398 } 1305 1399 else { … … 1310 1404 pin->SelectErrBar(erx.c_str(), ery.c_str()); 1311 1405 string titre = nmy + "%" + nmx; 1312 wrsid = myImgApp->DispScDrawer( (PIDrawer*)pin, n1, dopt, titre );1406 wrsid = myImgApp->DispScDrawer( (PIDrawer*)pin, n1, dopt, titre, 0, fglock); 1313 1407 } 1314 1408 … … 1331 1425 //| opt = options generales pour le display. 1332 1426 { 1427 ZSync(*myMutex); 1428 1333 1429 AnyDataObj* obj=GetObj(nom); 1334 1430 if(obj == NULL) … … 1356 1452 string n1,r1; 1357 1453 ParseObjectName(nom, r1, n1); 1454 // Si appel venant de PIStdImgApp, il ne faut pas locker le Mutex global de la boucle d'evts 1455 bool fglock = (_fgimgapp) ? false : true; 1358 1456 1359 1457 int wrsid = 0; … … 1362 1460 pigfd->SelectXY(numvx,numvy); 1363 1461 pigfd->SelectErrBar(errx,erry,errz); 1364 wrsid = myImgApp->Disp3DDrawer(pigfd,n1,dopt );1462 wrsid = myImgApp->Disp3DDrawer(pigfd,n1,dopt,"",0,fglock); 1365 1463 } else { // display 2D 1366 1464 PIGenFitDat* pigfd = new PIGenFitDat(((GeneralFitData*)obj),false); 1367 1465 pigfd->SelectX(numvx); 1368 1466 pigfd->SelectErrBar(errx,erry); 1369 wrsid = myImgApp->DispScDrawer((PIDrawer*)pigfd,n1,dopt );1467 wrsid = myImgApp->DispScDrawer((PIDrawer*)pigfd,n1,dopt,"",0,fglock); 1370 1468 } 1371 1469 … … 1380 1478 // nomvx et nomvy 1381 1479 { 1480 ZSync(*myMutex); 1481 1382 1482 #ifdef SANS_EVOLPLANCK 1383 1483 cerr << " NamedObjMgr::DisplayVector() Error: Not implemented with PEIDA " << endl; … … 1439 1539 ParseObjectName(nomvy, ry, ny); 1440 1540 1541 // Si appel venant de PIStdImgApp, il ne faut pas locker le Mutex global de la boucle d'evts 1542 bool fglock = (_fgimgapp) ? false : true; 1543 1441 1544 string title = ny + " (Y) vs. " + nx + " (X)"; 1442 1545 // display 2D 1443 myImgApp->DispScDrawer(vxydrw, title, dopt );1546 myImgApp->DispScDrawer(vxydrw, title, dopt, "", 0, fglock); 1444 1547 1445 1548 return; … … 1489 1592 { 1490 1593 if (!myImgApp) return; 1594 ZSync(*myMutex); 1491 1595 if ( !_fgimgapp ) ZSync(myImgApp->getMutex(),2); 1492 1596
Note:
See TracChangeset
for help on using the changeset viewer.