/[PAMELA software]/chewbacca/PamOffLineSW/PacketUser.cpp
ViewVC logotype

Diff of /chewbacca/PamOffLineSW/PacketUser.cpp

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.11 by mocchiut, Wed Dec 30 10:46:33 2009 UTC revision 1.17 by mocchiut, Wed Feb 3 14:11:38 2010 UTC
# Line 1  Line 1 
1  //============================================================================  //============================================================================
2  // $Id: PacketUser.cpp,v 1.10 2009/12/24 10:31:12 mocchiut Exp $  // $Id: PacketUser.cpp,v 1.16 2010/02/02 15:26:09 mocchiut Exp $
3  // Description :  // Description :
4  //============================================================================  //============================================================================
5  #include "PacketUser.h"  #include "PacketUser.h"
# Line 31  extern bool do_cont_check; Line 31  extern bool do_cont_check;
31  //marco_new_31:  //marco_new_31:
32  extern char* db_user;  extern char* db_user;
33  extern char* db_pwd;  extern char* db_pwd;
34  extern char* connection;  extern char* pelosconnection;
35    
36  //per tenere conto reset obt  //per tenere conto reset obt
37  extern unsigned long int max_pkt_obt;  extern unsigned long int max_pkt_obt;
# Line 457  unsigned long int PacketUser::retrieveTi Line 457  unsigned long int PacketUser::retrieveTi
457    //if(!table){table=Table_GL_RESURS_OFFSET}    //if(!table){table=Table_GL_RESURS_OFFSET}
458    
459    if (!single_connection) {    if (!single_connection) {
460      OpenDBConnection(table);//Nota qui ho deciso di lockare solo questa tabella e non tutte      OpenDBConnection(NULL);// no, locak tutto Nota qui ho deciso di lockare solo questa tabella e non tutte
461    }    }
462    
463    UInt_t t0 = 0;//toffset    UInt_t t0 = 0;//toffset
# Line 541  void PacketUser::FinishLastGroup() { Line 541  void PacketUser::FinishLastGroup() {
541  //Finish the old root file  //Finish the old root file
542  void PacketUser::FinishGroup(char * filename) {  void PacketUser::FinishGroup(char * filename) {
543    if (pRun) {    if (pRun) {
544      if ( !( !real_time_init && !real_time_last && numPKTSaved <= recoverlimit ) && candelete ) pRun->WriteFiles();      if ( !( !real_time_init && !real_time_last && numPKTSaved <= recoverlimit ) || !candelete  ) pRun->WriteFiles();
545      delete pRun;      delete pRun;
546      pRun = NULL;      pRun = NULL;
547      stringstream close;      stringstream close;
# Line 632  void PacketUser::FinishGroup(char * file Line 632  void PacketUser::FinishGroup(char * file
632            msg = err.str();            msg = err.str();
633            mainLogUtil->logInfo(msg);            mainLogUtil->logInfo(msg);
634                        
635            TString qu = Form("select ID_N from ROOT_TABLE_BAD order by INSERT_TIME desc limit 1;");            //      TString qu = Form("select ID_N from ROOT_TABLE_BAD order by INSERT_TIME desc limit 1;"); //  <=========================
636              TString qu = Form("select ID_N from ROOT_TABLE_BAD where FILE_NAME='%s' and PKT_NUMBER_INIT=%i and INSERTED_BY='%s';",filename,pkt_number_init,tag_value); //  <=========================
637            TSQLResult *result = sqlServer->Query(qu.Data());            TSQLResult *result = sqlServer->Query(qu.Data());
638            TSQLRow    *row = result->Next();            TSQLRow    *row = result->Next();
639            Int_t eid = -1;            Int_t eid = -1;
# Line 647  void PacketUser::FinishGroup(char * file Line 648  void PacketUser::FinishGroup(char * file
648          }          }
649                    
650          CleanDisk();          CleanDisk();
651          if (!single_connection) {          //      if (!single_connection) {
652            CloseDBConnection();          //        CloseDBConnection();
653          }          //      }
654          return;          //      return; // commented here...
655    
656        };        };
657      }      }
658    
659      if ( real_time_init || real_time_last) {      if ( real_time_init || real_time_last) {
660      //saves info in DB in table Table_ROOT        //saves info in DB in table Table_ROOT
661      if (boot_number == 0)        if (boot_number == 0)
662        boot_number = boot_number_prevvalue;          boot_number = boot_number_prevvalue;
   
     if (saveROOT_DB(  
                     Table_ROOT_Good,  
                     outDir, // here outDir is good, no expand EMI  
                     filename, pkt_number_init, pkt_number_last, obt_init, obt_last, obt_time_sync, last_time_sync_info,  
                     real_time_init, real_time_last, boot_number, timeOffset, bad_pkt, bad_pkt_EventReader, bad_pkt_CalibReader,  
                     numPKTSaved, fni, time_is_estimated) == true) {  
       oss.str() = "";  
       oss << "Saved information regarding file: " << filename << " in table " << Table_ROOT_Good << " id= " << my_id;  
       msg = oss.str();  
       mainLogUtil->logInfo(msg);  
663                
664        if (tryMerge) {        if (saveROOT_DB(
665          merge_ROOTfiles();                        Table_ROOT_Good,
666        }                        outDir, // here outDir is good, no expand EMI
667      } else {                        filename, pkt_number_init, pkt_number_last, obt_init, obt_last, obt_time_sync, last_time_sync_info,
668                          real_time_init, real_time_last, boot_number, timeOffset, bad_pkt, bad_pkt_EventReader, bad_pkt_CalibReader,
669                          numPKTSaved, fni, time_is_estimated) == true) {
670            oss.str() = "";
671            oss << "Saved information regarding file: " << filename << " in table " << Table_ROOT_Good << " id= " << my_id;
672            msg = oss.str();
673            mainLogUtil->logInfo(msg);
674            
675            if (tryMerge) {
676              merge_ROOTfiles();
677            }
678          } else {
679        oss.str() = "";        oss.str() = "";
680        oss << "Problem storing information in DB regarding file: " << filename;        oss << "Problem storing information in DB regarding file: " << filename;
681        msg = oss.str();        msg = oss.str();
682        mainLogUtil->logError(msg);        mainLogUtil->logError(msg);
683      }        }
684      };      };
685    
686      // if dbinfo is not empty than      // if dbinfo is not empty than
687      if ( obt_time_sync && last_time_sync_info && arsize > 0 ){      if ( arsize > 0 ){
         
688    
689   //    if(!m_dbinfos.empty()){        if ( !obt_time_sync || !last_time_sync_info ){
690  //       while(!m_dbinfos.empty()){          TString *nomino=new TString(rootfilename);
691  //      dbinfo *app = m_dbinfos.back();          nomino->Remove(15);
692  //      m_dbinfos.pop_back();          TString qu = Form("select OBT_TIME_SYNC,LAST_TIME_SYNC_INFO from ROOT_TABLE where FILE_NAME like '%s_%%' and (abs(PKT_NUMBER_INIT-%lu)<50000 or abs(PKT_OBT_INIT-%lu)<3000000) limit 1;",nomino->Data(),pkt_number_init,obt_init);
693        Int_t ez=0;          //
694        while ( ez < arsize ){          oss.str() = "";
695          Int_t eid = idtorecover->At(ez);          oss << "(EM) Trying to find obt_time_sync and last_time_sync_info from DB, query is: " << qu.Data();
696          if ( eid > -1 ){          msg = oss.str();
697            mainLogUtil->logInfo(msg);
698            //
699            TSQLResult *result = sqlServer->Query(qu.Data());
700            TSQLRow    *row = result->Next();
701            if ( row && result->GetRowCount() == 1 ){
702              obt_time_sync = (unsigned long int)atoll(row->GetField(0));
703              last_time_sync_info = (unsigned long int)atoll(row->GetField(1));
704              oss.str() = "";
705              oss << "(EM) found obt_time_sync and last_time_sync_info from DB! obt_time_sync =  " <<obt_time_sync <<" last_time_sync_info = " << last_time_sync_info;
706              msg = oss.str();
707              mainLogUtil->logInfo(msg);
708            };      
709            delete nomino;
710          };      
711    
712          if ( obt_time_sync && last_time_sync_info ){
713            //    if(!m_dbinfos.empty()){
714            //       while(!m_dbinfos.empty()){
715            //      dbinfo *app = m_dbinfos.back();
716            //      m_dbinfos.pop_back();
717            Int_t ez=0;
718            while ( ez < arsize ){
719              Int_t eid = idtorecover->At(ez);
720              if ( eid > -1 ){
721                        
722            TString qu = Form("select FOLDER_NAME,FILE_NAME,PKT_NUMBER_INIT,PKT_NUMBER_FINAL,PKT_OBT_INIT,PKT_OBT_FINAL,BOOT_NUMBER,TIME_OFFSET,BAD_PKT,BAD_PKT_READ,BAD_PKT_CALREAD,NUM_PKT_SAVED,INPUT_NAME,TIME_IS_ESTIMATED from ROOT_TABLE_BAD where ID_N=%i;",eid);              TString qu = Form("select FOLDER_NAME,FILE_NAME,PKT_NUMBER_INIT,PKT_NUMBER_FINAL,PKT_OBT_INIT,PKT_OBT_FINAL,BOOT_NUMBER,TIME_OFFSET,BAD_PKT,BAD_PKT_READ,BAD_PKT_CALREAD,NUM_PKT_SAVED,INPUT_NAME,TIME_IS_ESTIMATED from ROOT_TABLE_BAD where ID_N=%i;",eid);
723            TSQLResult *result = sqlServer->Query(qu.Data());              TSQLResult *result = sqlServer->Query(qu.Data());
724            TSQLRow    *row = result->Next();              TSQLRow    *row = result->Next();
725                                        
726            TString efolder_name="";              TString efolder_name="";
727            TString efile_name="";              TString efile_name="";
728            unsigned long int epkt_number_in=0ULL;              unsigned long int epkt_number_in=0ULL;
729            unsigned long int epkt_number_fin=0ULL;              unsigned long int epkt_number_fin=0ULL;
730            unsigned long int eobt_in=0ULL;              unsigned long int eobt_in=0ULL;
731            unsigned long int eobt_fin=0ULL;              unsigned long int eobt_fin=0ULL;
732            unsigned long int emboot_num=0ULL;              unsigned long int emboot_num=0ULL;
733            unsigned long int etime_offset=0ULL;              unsigned long int etime_offset=0ULL;
734            int ebad_pkt=0;              int ebad_pkt=0;
735            int ebad_pkt_read=0;              int ebad_pkt_read=0;
736            int ebad_pkt_CalRead=0;              int ebad_pkt_CalRead=0;
737            int enum_PKT_Saved=0;              int enum_PKT_Saved=0;
738            TString enome_input="";              TString enome_input="";
739            bool e_time_is_estimated=false;              bool e_time_is_estimated=false;
740    
741            if ( row ){              if ( row ){
742              efolder_name =                      (TString)row->GetField(0);                efolder_name =                      (TString)row->GetField(0);
743              efile_name =                        (TString)row->GetField(1);                efile_name =                        (TString)row->GetField(1);
744              epkt_number_in =    (unsigned long int)atoll(row->GetField(2));                epkt_number_in =    (unsigned long int)atoll(row->GetField(2));
745              epkt_number_fin =   (unsigned long int)atoll(row->GetField(3));                epkt_number_fin =   (unsigned long int)atoll(row->GetField(3));
746              eobt_in =           (unsigned long int)atoll(row->GetField(4));                eobt_in =           (unsigned long int)atoll(row->GetField(4));
747              eobt_fin =          (unsigned long int)atoll(row->GetField(5));                eobt_fin =          (unsigned long int)atoll(row->GetField(5));
748              emboot_num =        (unsigned long int)atoll(row->GetField(6));                emboot_num =        (unsigned long int)atoll(row->GetField(6));
749              etime_offset =      (unsigned long int)atoll(row->GetField(7));                etime_offset =      (unsigned long int)atoll(row->GetField(7));
750              ebad_pkt =                         (int)atoi(row->GetField(8));                ebad_pkt =                         (int)atoi(row->GetField(8));
751              ebad_pkt_read =                    (int)atoi(row->GetField(9));                ebad_pkt_read =                    (int)atoi(row->GetField(9));
752              ebad_pkt_CalRead =                (int)atoi(row->GetField(10));                ebad_pkt_CalRead =                (int)atoi(row->GetField(10));
753              enum_PKT_Saved =                  (int)atoi(row->GetField(11));                enum_PKT_Saved =                  (int)atoi(row->GetField(11));
754              enome_input =                      (TString)row->GetField(12);                enome_input =                      (TString)row->GetField(12);
755              e_time_is_estimated =            (bool)atoi(row->GetField(13));                e_time_is_estimated =            (bool)atoi(row->GetField(13));
756            };              };
757            delete result;              delete result;
758    
759            setReal_TimeRECOVERY(              setReal_TimeRECOVERY(
760                                 real_time_init,                                   real_time_init,
761                                 real_time_last,                                   real_time_last,
762                                 eobt_in,                                   eobt_in,
763                                 eobt_fin                                   eobt_fin
764                                 );                                   );
765            //              //
766                        
767            if (saveROOT_DB(              if (saveROOT_DB(
768                            Table_ROOT_Good,                              Table_ROOT_Good,
769                            efolder_name.Data(),                              efolder_name.Data(),
770                            efile_name.Data(),                              efile_name.Data(),
771                            epkt_number_in,                              epkt_number_in,
772                            epkt_number_fin, eobt_in, eobt_fin, obt_time_sync, last_time_sync_info,                              epkt_number_fin, eobt_in, eobt_fin, obt_time_sync, last_time_sync_info,
773                            real_time_init, real_time_last, emboot_num, etime_offset, ebad_pkt, ebad_pkt_read, ebad_pkt_CalRead,                              real_time_init, real_time_last, emboot_num, etime_offset, ebad_pkt, ebad_pkt_read, ebad_pkt_CalRead,
774                            enum_PKT_Saved, enome_input.Data(), e_time_is_estimated) == true) {                              enum_PKT_Saved, enome_input.Data(), e_time_is_estimated) == true) {
775              oss.str() = "";                oss.str() = "";
776              oss << "\nTAG(tassa): RECOVERED!!!! Saved information regarding file: " << efile_name << " in table " << Table_ROOT_Good << " id= " << my_id;                oss << "\nTAG(tassa): RECOVERED!!!! Saved information regarding file: " << efile_name << " in table " << Table_ROOT_Good << " id= " << my_id;
777              msg = oss.str();                msg = oss.str();
778              mainLogUtil->logInfo(msg);                mainLogUtil->logInfo(msg);
779              /*merging we use global variable. we haveto set with current value*/                /*merging we use global variable. we haveto set with current value*/
780                            
781              strcpy(outDir,efolder_name.Data() );                strcpy(outDir,efolder_name.Data() );
782              //      outDir=efolder_name.Data();                //            outDir=efolder_name.Data();
783              strcpy(filename,efile_name.Data() );                strcpy(filename,efile_name.Data() );
784              //      filename=efile_name.Data();                //            filename=efile_name.Data();
785              pkt_number_init=epkt_number_in;                pkt_number_init=epkt_number_in;
786              pkt_number_last=epkt_number_fin;                pkt_number_last=epkt_number_fin;
787              obt_init=eobt_in;                obt_init=eobt_in;
788              obt_last=eobt_fin;                obt_last=eobt_fin;
789              boot_number=emboot_num;                boot_number=emboot_num;
790              timeOffset=etime_offset;                timeOffset=etime_offset;
791              bad_pkt=ebad_pkt;                bad_pkt=ebad_pkt;
792              bad_pkt_EventReader=ebad_pkt_read;                bad_pkt_EventReader=ebad_pkt_read;
793              bad_pkt_CalibReader=ebad_pkt_CalRead;                bad_pkt_CalibReader=ebad_pkt_CalRead;
794              numPKTSaved=enum_PKT_Saved;                numPKTSaved=enum_PKT_Saved;
795              strcpy(fni,enome_input.Data() );                strcpy(fni,enome_input.Data() );
796              //      fni=enome_input.Data();                //            fni=enome_input.Data();
797              time_is_estimated=e_time_is_estimated;                time_is_estimated=e_time_is_estimated;
798                            
799              if (tryMerge) {                if (tryMerge) {
800                merge_ROOTfiles();                  merge_ROOTfiles();
801              }                }
802                            
803              TString qu2 = Form("update ROOT_TABLE_BAD set ON_DISK='MVD' where ID_N=%i;",eid);                TString qu2 = Form("update ROOT_TABLE_BAD set ON_DISK='MVD' where ID_N=%i;",eid);
804              sqlServer->Query(qu2.Data());                sqlServer->Query(qu2.Data());
805    
806                            
807            }              }
808            else {              else {
809              oss.str() = "";                oss.str() = "";
810              oss << "Problem storing information in DB regarding file: " << filename;                oss << "Problem storing information in DB regarding file: " << filename;
811              msg = oss.str();                msg = oss.str();
812              mainLogUtil->logError(msg);                mainLogUtil->logError(msg);
813            }              }
814                        
815                        
816          };            };
817          ez++;            ez++;
818        }          }
819        //          //
820        idtorecover->Reset();          idtorecover->Reset();
821        delete idtorecover;          delete idtorecover;
822        idtorecover = new TArrayI(100);          idtorecover = new TArrayI(100);
823        arsize =  0;          arsize =  0;
824        //        delete app;          //      delete app;
825      }        };
826        };
827            
828      CleanDisk();      CleanDisk();
829      if (!single_connection) {      if (!single_connection) {
# Line 807  void PacketUser::FinishGroup(char * file Line 832  void PacketUser::FinishGroup(char * file
832    
833    }//pRun    }//pRun
834  }  }
835      
836        
837    void PacketUser::CleanDisk(){    void PacketUser::CleanDisk(){
838      if ( !candelete ) return;      if ( !candelete ) return;
# Line 1363  int PacketUser::LockTables(const char* t Line 1388  int PacketUser::LockTables(const char* t
1388    TSQLResult* res = NULL;    TSQLResult* res = NULL;
1389    stringstream oss;    stringstream oss;
1390    oss.str("");    oss.str("");
1391    if (!tableTobeLocked)    //  if (!tableTobeLocked)
1392      oss << "lock table " << Table_ROOT_Good << " write, " << Table_ROOT_Bad << " write, " << Table_GL_RESURS_OFFSET    oss << "lock table " << Table_ROOT_Good << " write, " << Table_ROOT_Bad << " write, " << Table_GL_RESURS_OFFSET
1393          << " write, " << Table_ROOT_Merging << " write;";        << " write, " << Table_ROOT_Merging << " write;";
1394    else      //  else
1395      oss << "lock table " << tableTobeLocked << " write; ";      //    oss << "lock table " << tableTobeLocked << " write; ";
1396    
1397    string msg = oss.str();    string msg = oss.str();
1398    mainLogUtil->logAll(msg);    mainLogUtil->logAll(msg);
# Line 1437  void PacketUser::OpenDBConnection(const Line 1462  void PacketUser::OpenDBConnection(const
1462    if (do_cont_check) {    if (do_cont_check) {
1463      //controllo che non sia gia' aperta      //controllo che non sia gia' aperta
1464      if (!sqlServer) {      if (!sqlServer) {
1465        sqlServer = TSQLServer::Connect(connection, db_user, db_pwd);        sqlServer = TSQLServer::Connect(pelosconnection, db_user, db_pwd);
1466        if ((!sqlServer) || (!(sqlServer->IsConnected()))) {        if ((!sqlServer) || (!(sqlServer->IsConnected()))) {
1467          cout << "Can not connect with MYSQL sever" << endl;          cout << "Can not connect with MYSQL sever" << endl;
1468        }        }

Legend:
Removed from v.1.11  
changed lines
  Added in v.1.17

  ViewVC Help
Powered by ViewVC 1.1.23