Changeset 3897 in Sophya for trunk/AddOn/TAcq/racqueth.h


Ignore:
Timestamp:
Oct 4, 2010, 4:19:59 PM (15 years ago)
Author:
ansari
Message:

Amelioration des classes PCIEToEthernet et EthernetReader pour eviter des situations de blocage lorsque lecture avec ForceSameFrameCounter, Reza 04/10/2010

File:
1 edited

Legend:

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

    r3883 r3897  
    6565  BRParList par_;   // Parametres divers d'acquisition
    6666
    67   uint_8 nmaxpaq_;  // Nombre maxi de paquets traites
     67  uint_8 nmaxpaq_;  // Nombre maxi de paquets traites - DOIT etre mutiple de mmgr.NbPaquets()
    6868  BRDataFmtConv swapall_;  // select data swap/format conversion for BRPaquet
    6969  bool stop_; 
     
    7373  int tcpportid_;
    7474  vector< vector<ClientSocket> > vvec_skt_;
    75   vector< uint_4 > vec_cntpaq_;
     75  vector< vector<uint_8> > vvec_errorcnt_;
     76  vector< uint_8 > vec_cntpaq_;
    7677  uint_4 packSize_;
    7778  uint_4 packSizeInMgr_;
     
    8990class EthernetReader : public ZThread {
    9091public:
    91   EthernetReader(RAcqMemZoneMgr& mem, BRParList const& par, int portid=BRSPORTID, bool rdsamefc=false);
     92  EthernetReader(RAcqMemZoneMgr& mem, BRParList const& par, int portid=BRSPORTID);
     93  virtual ~EthernetReader();
     94
     95  // Configuration du mode de lecture des paquets
     96  // Si force_samefc=true, on essaye de lire des paquets avec meme FrameCounter, sans depasser une
     97  // difference maximum de maxdiff_paqnum entre nombre de paquets lus sur chaque fibre
     98  inline void SetReadMode(bool force_samefc=false, uint_4 maxdiff_paqnum=50, uint_4 maxresync=50)
     99  { rdsamefc_=force_samefc; sfc_maxdpc_=maxdiff_paqnum; sfc_maxresync_=maxresync; }
     100
    92101  virtual void run();
    93102  inline void Stop() { stop_ = true; }
     
    100109  bool ReadNextAllFibers();      // Renvoie true si probleme
    101110  bool ReadNext(int fib);   // Renvoie true si probleme
     111  void CleanUpAllSockets();  // pour finir la lecture de toutes les fibres
    102112  size_t ReceiveFromSocket(int fib, char* data, size_t len);
     113
     114// recale les links en cas d'ecart important entre nb de paquets lu sur chaque lien
     115  int SkipAndSyncLinks();   // Renvoie 0 si rien fait, 1 si skip fait, 9 si probleme 
    103116
    104117  // Permet d'avancer d'un paquet dans la zone - renvoie true si probleme
     
    119132  BRParList par_;   // Parametres divers d'acquisition
    120133  int tcpportid_;
    121   vector< Socket > vsok_;  //  Les sockets de lecture pour chaque fibre/lien
    122   vector< uint_4 > vec_cntpaq_;
     134  ServerSocket* srv_sokp_;  // Le socket serveur 
     135  vector< Socket > vsok_;  //  Les sockets de lecture pour chaque lien ethernet (1 lien= 1 fibre a l'envoi)
     136  vector< uint_8 > vec_cntpaq_;   // vecteur de compteurs de paquet ( 1 compteur / lien )
     137  vector< uint_4 > vec_fgsokend_;    // vecteur de flag, >0 : fin de reception (ou ereur) sur le lien
     138  bool gl_fgsokend;          // true -> au moins l'un de liens a termine
    123139  bool stop_;
    124140  bool rdsamefc_;  // if true, read paquets with same value of FrameCounter on different fibers/link
     141  uint_4 sfc_maxdpc_;   // difference maxi entre nombre de paquets lu sur les liens
     142  uint_4 sfc_maxresync_;  // nb maximum de tentatives de resynchronisation
     143
    125144  uint_8 totnbytesrd_;
    126145  uint_8 totnpaqrd_;
    127146  uint_8 totsamefc_;   // nombre total de paquets avec meme framecounter 
     147
     148  uint_8 totnbresync_;   // nombre total de saut+resynchronisation
    128149
    129150  vector<BRPaquet> vpaq_;
     
    140161  Byte* mmbufib_[MAXANAFIB];  // Pointeurs zone memoire de chaque fibre rendu par RAcqMemZoneMgr
    141162
     163  // zone tampon contenant zero si lecture sur fibre est fini
     164  char* dummybuff_;
     165
    142166  int prtlev_;   // print level
    143167  uint_8 prtmodulo_;   // print periodicity (modulo)
Note: See TracChangeset for help on using the changeset viewer.