tsp-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: RE : [Tsp-devel] Question "fin de cycle"


From: Eric Noulard
Subject: Re: RE : [Tsp-devel] Question "fin de cycle"
Date: Tue, 5 Dec 2006 16:24:50 +0100

Le 05/12/06, ALAUX, Virginie<address@hidden> a écrit :

Réponse à ta question :
Pourquoi as-tu BESOIN de savoir si ton groupe est totalement reçu?

Je dois attendre la fin de réception d'un groupe pour le traiter. En effet, 
chaque groupe est composé de paramètres qui sont soient archivés sur disque, 
soit redistribués à différents clients via un middleware. La structure utilisée 
est un packet (OCDS) composé d'un header et d'un body, lui-même contenant tous 
les paramètres d'un groupe. Pour les perfos, on ne peut pas envoyer un OCDS par 
paramètre reçu.

Ok je comprends.
Mais peut-être que c'est tout simplement à toi de savoir ce que tu as
déjà mis dans ton OCDS et l'envoyer quand ce dernier est complet.

Plus précisemment, quand tu a construit ta request_sample
tu sais que tu as demandé n symboles.

TSP t'aura répondu en indiquant combien ta requête va générer de
groupes (à calculer à partir de ta liste de sample Mise à jour disons p) et
également combien de symboles contiennent chacun
des groupes (toujours à calculer et que tu stockes dans un tableau
disons group_size[p])

Comme tu sais que TSP t'enverra
- les groupes dans l'ordre
- les symboles dans l'ordre de chaque groupe

ton alog de read est simple:

current_group = 0;
current_group_size = group_size[current_group];

while (!finished_sampling) {
   retcode = TSP_consumer_read_sample(...,&new_sample);

   if (TSP_STATUS_OK != retcode) {
      /* ATTENTION ERREUR TSP: pb reseau, provider mort etc... */
   }

   if (!new_sample) {
       tsp_usleep(duree_calibree);
   } else {
      current_group_size--;
      if (0==current_group_size) {
          /* action car groupe complet */
         /// envoi ODS
         /* on passe au groupe suivant */
         current_group = ((current_group+1)%nb_group);
         current_group_size = group_size[current_group];
      }
   }
}


Si je ne peux pas me fier au new_sample=0, comment puis_je faire si mon 
provider a un pb et ne me fournit pas tous les params d'un groupe. Je risque de 
rester bloqué dans ma boucle de lecture.

Pourquoi rester bloquer?
Le pb est "uniquement" de savoir que tu as reçu ce que tu attends non ?

Utiliser un time-out ?

C'est un autre débat.
D'un point de vue de TSP rien ne devrait être en mesure de te bloquer
sauf un pb réseau ou un plantage du provider.
Et encore tu ne devrais pas être bloqué mais recevoir une erreur en retour
du TSP_consumer_read_sample.

La liste semble ré-accepter mesmessages donc je cc la liste.


--
Erk




reply via email to

[Prev in Thread] Current Thread [Next in Thread]