Changeset 3758 in Sophya for trunk/AddOn/TAcq/racqueth.cc
- Timestamp:
- Apr 30, 2010, 2:46:42 PM (15 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/AddOn/TAcq/racqueth.cc
r3757 r3758 42 42 43 43 char msg[BRTCPMSGLEN]; 44 cout << "PCIEToEthernet/Info: Establishing TCP/IP connections ... " << endl; 44 45 for(size_t i=0; i<vec_pciw_.size(); i++) { 45 46 vector<ClientSocket> vskt; 46 for(size_t j=0; j< vskt.size(); j++) {47 for(size_t j=0; j<destname_.size(); j++) { 47 48 ClientSocket sok(destname_[j], tcpportid_); 48 49 for(int ii=0; ii<BRTCPMSGLEN; ii++) msg[ii]='\0'; … … 57 58 vvec_skt_.push_back(vskt); 58 59 } 60 totrdsnd_ = 0; 59 61 } 60 62 … … 74 76 struct timeval tv1,tv2; 75 77 gettimeofday(&tv1, NULL); 76 uint_8 totrdsnd = 0;77 78 78 79 cout << " PCIEToEthernet::run() - Starting , NMaxMemZones=" << par_.MaxNbBlocs() … … 83 84 // sigaddset(&act.sa_mask,SIGINT); // pour proteger le transfert DMA 84 85 //sigaction(SIGINT,&act,NULL); 85 uint_4 paqszmm = par_.MMgr NbPaquet();86 uint_4 paqszmm = par_.MMgrPaquetSize(); 86 87 uint_4 paqsz = packSize_; 87 88 uint_4 dmasz = vec_pciw_[0]->TransferSize(); … … 103 104 // Initialisation des tampons pour recopie des paquets a cheval pour chaque DMA 104 105 for (int i=0;i< (int)nbDma_ ;i++) { 106 // cout << " DEBUG*AB paqsz=" << paqsz << " paqszmm=" << paqszmm << endl; 107 tampon[i]=nexpaq[i]=NULL; 105 108 tampon[i] = new Byte[paqsz]; 106 109 nexpaq[i] = new Byte[paqszmm]; … … 131 134 for(size_t j=0; j<vskt.size(); j++) { 132 135 for(int ii=0; ii<BRTCPMSGLEN; ii++) msg[ii]='\0'; 133 vskt[i].Receive(msg,BRTCPMSGLEN); 134 if (strncmp(msg,"BAORadio-EthernetReader-Ready-GO",32)!=0) 136 vskt[j].Receive(msg,BRTCPMSGLEN); 137 if (strncmp(msg,"BAORadio-EthernetReader-Ready-GO",32)!=0) { 138 msg[BRTCPMSGLEN-1]='\0'; 139 cout << "PCIEToEthernet:ERROR BAD Go for fiber=" << i << " dest=" << j << " msg: " << msg << endl; 135 140 throw SocketException("PCIEToEthernet:ERROR/ BAD Go message from EthernetReader "); 136 } 137 cout << " PCIEToEthernet::run() Received GO message for Fiber/DMA " << i << " from " << destname_[i] << endl; 141 } 142 cout << " PCIEToEthernet::run() Received GO message for Fiber/DMA " << i << " from " << destname_[j] << endl; 143 } 138 144 } 139 145 … … 165 171 } 166 172 if (fgbaddma) continue; 173 167 174 if (fgdirectsend) { // Pas de copie / reduction de taille de paquet, on rebalance tel quel ... 168 175 for (int fib=0; fib<(int) nbDma_ ;fib++) { 169 vector<ClientSocket>& vskt = vvec_skt_[fib]; 170 for(size_t j=0; j<vskt.size(); j++) { 171 vskt[j].Send((const char *)Datas[fib], dmasz); 172 totrdsnd += dmasz; 173 } 176 //DBG cout << " DEBUG*B fib=" << fib << " Datas[fib]=" << hex << Datas[fib] << dec << endl; 177 SendToTargets(fib, Datas[fib], dmasz); 174 178 trnbytes[fib] += (uint_8)dmasz; 175 179 npaqfait[fib] += (trnbytes[fib]/(uint_8)paqszmm); … … 179 183 continue; // On bypasse le reste 180 184 } 185 181 186 // Si on arrive ici, c'est qu'il faut copier / reduire les paquets .... 182 187 uint_4 curoff=0; … … 205 210 } 206 211 BRPaquet paq(nexpaq[fib], packSizeInMgr_); 207 vector<ClientSocket>& vskt = vvec_skt_[fib]; 208 for(size_t j=0; j<vskt.size(); j++) { 209 vskt[j].Send((const char *)nexpaq[fib], packSizeInMgr_); 210 totrdsnd += packSizeInMgr_; 211 } 212 SendToTargets(fib, nexpaq[fib], packSizeInMgr_); 212 213 npaqfait[fib]++; 213 214 if (fib==nbDma_-1) npaqfaitg++; // Ne pas oublier le compteur de paquets faits … … 244 245 } 245 246 BRPaquet paq(nexpaq[fib], packSizeInMgr_); 246 vector<ClientSocket>& vskt = vvec_skt_[fib]; 247 for(size_t j=0; j<vskt.size(); j++) { 248 vskt[j].Send((const char *)nexpaq[fib], packSizeInMgr_); 249 totrdsnd += packSizeInMgr_; 250 } 247 SendToTargets(fib, nexpaq[fib], packSizeInMgr_); 251 248 npaqfait[fib]++; 252 249 if (fib==nbDma_-1) npaqfaitg++; // Ne pas oublier le compteur de paquets faits … … 269 266 if (tmelaps2<0.1) tmelaps2=0.1; 270 267 cout << " ---------- PCIEToEthernet::run()-End summary NPaqFait=" << npaqfaitg 271 << " TotSend (kb)=" << totrdsnd /1024 << "------ " << endl;268 << " TotSend (kb)=" << totrdsnd_/1024 << "------ " << endl; 272 269 for (int dma=0; dma < (int)nbDma_ ;dma++) { 273 270 cout << " --Fib=" << dma << " NPaqFait=" << npaqfait[dma] << " TotDMATransfer=" … … 305 302 } 306 303 307 304 static long cnt_prt=0; 305 /* --Methode-- */ 306 size_t PCIEToEthernet::SendToTargets(int fib, Byte* data, size_t len) 307 { 308 //DBG cout << " SendToTargets/DBG" << cnt_prt << " len=" << len << " data=" << hex << (unsigned long)data << dec << endl; cnt_prt++; 309 vector<ClientSocket>& vskt = vvec_skt_[fib]; 310 size_t rc=0; 311 for(size_t j=0; j<vskt.size(); j++) { 312 rc += vskt[j].Send((const char *)data, len); 313 totrdsnd_ += len; 314 } 315 return rc; 316 } 308 317 //------------------------------------------------------------------ 309 318 // Classe thread de lecture sur interface reseau (Ethernet) … … 369 378 strcpy(msg,"BAORadio-EthernetReader-Ready-GO"); 370 379 for(size_t fib=0; fib<(size_t)memgr_.NbFibres(); fib++) { 380 cout << " EthernetReader/Debug - Sending GO message to sender " << fib << endl; 371 381 vsok_[fib].Send(msg,BRTCPMSGLEN); 372 382 }
Note:
See TracChangeset
for help on using the changeset viewer.