Changeset 3759 in Sophya for trunk/AddOn/TAcq/racqueth.cc


Ignore:
Timestamp:
Apr 30, 2010, 11:04:59 PM (15 years ago)
Author:
ansari
Message:

Suite debug des classes PCIEToEthernet et EthernetReader , Reza 30/04/2010

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/AddOn/TAcq/racqueth.cc

    r3758 r3759  
    5959  }
    6060  totrdsnd_ = 0;
     61  SetEthSendBlockSize();
     62  SetPrintLevel();
    6163}
    6264
     
    149151    // Byte* nextdma = locdata+((kmz%memgr.NbZones())*(paqsz*memgr.NbPaquets()));
    150152  uint_4 npaqfaitg = 0;
     153  uint_4 prtmod = par_.BlocPerFile()*par_.MMgrNbPaquet();
     154  if (prtmod < 500) prtmod=500;
     155
    151156  while (npaqfaitg < nmaxpaq_) {  // Boucle global G
    152157    if (fgarret) break;
     
    171176    }
    172177    if (fgbaddma) continue; 
    173 
     178    if ((prtlev_>0)&&(npaqfaitg%prtmod==0))
     179      cout << " PCIEToEthernet::run()/Info NPaqFait= " << npaqfaitg << endl;
    174180    if (fgdirectsend) {  // Pas de copie / reduction de taille de paquet, on rebalance tel quel ...
    175181      for (int fib=0; fib<(int) nbDma_ ;fib++) {
     
    306312size_t PCIEToEthernet::SendToTargets(int fib, Byte* data, size_t len)
    307313{
    308   //DBG   cout << " SendToTargets/DBG" << cnt_prt << " len=" << len << " data=" << hex << (unsigned long)data << dec << endl; cnt_prt++;
     314  //  cout << " SendToTargets/DBG" << cnt_prt << " len=" << len << " data=" << hex << (unsigned long)data << dec << endl; cnt_prt++;
    309315  vector<ClientSocket>& vskt = vvec_skt_[fib];
    310316  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;
     317  size_t nblk = len/eths_bsz_;
     318  size_t fblk = len%eths_bsz_;
     319  size_t off = 0;
     320  if (nblk>0) {
     321    for(size_t i=0; i<nblk; i++) {
     322      for(size_t j=0; j<vskt.size(); j++) {
     323        rc += vskt[j].Send((const char *)data+off, eths_bsz_);
     324        totrdsnd_ += eths_bsz_;
     325      }
     326      off += eths_bsz_;
     327    }
     328  }
     329  if (fblk>0) {
     330    for(size_t j=0; j<vskt.size(); j++) {
     331      rc += vskt[j].Send((const char *)data+off, fblk);
     332      totrdsnd_ += fblk;
     333    }
    314334  }
    315335  return rc;
     
    323343  :  memgr_(mem), par_(par), stop_(false), rdsamefc_(rdsamefc), tcpportid_(portid)
    324344{
    325   SetPrintLevel();
    326345  totnbytesrd_ = 0;
    327346  totnpaqrd_ = 0;
     
    359378    cout << " EthernetReader/Info connection/link" << fib << " established." << endl;
    360379  }
     380
     381  SetEthRecvBlockSize();
     382  SetPrintLevel();
    361383}
    362384
     
    476498  bool fggood=false;
    477499  while(!fggood) {
    478     vsok_[fib].Receive((char *)vpaq_[fib].Begin(), packsize_);
     500    ReceiveFromSocket(fib, (char *)vpaq_[fib].Begin(), packsize_);
    479501    totnbytesrd_+=packsize_;
    480502    totnpqrd_[fib]++;
     
    483505  totnpqok_[fib]++;
    484506  return false;
     507}
     508
     509/* --Methode-- */
     510size_t EthernetReader::ReceiveFromSocket(int fib, char* data, size_t len)
     511{
     512  size_t nblk = len/ethr_bsz_;
     513  size_t fblk = len%ethr_bsz_;
     514  size_t off = 0;
     515  size_t rc =0;
     516  if (nblk>0) {
     517    for(size_t i=0; i<nblk; i++)  {
     518      rc += vsok_[fib].Receive(data+off, ethr_bsz_);
     519      off += ethr_bsz_; 
     520    }
     521  }
     522  if (fblk>0) {
     523    rc += vsok_[fib].Receive(data+off, fblk);
     524  }
     525  return rc;
    485526}
    486527
Note: See TracChangeset for help on using the changeset viewer.