X-Git-Url: https://git.lttng.org/?a=blobdiff_plain;f=lttv%2Flttv%2Fsync%2Fevent_matching_broadcast.c;h=32112014ca956302c8ea4d83be31950aa7be1219;hb=d4721e1a5216f34570d7e10257f85601cb3991bc;hp=9eb6e10861ef5ada8f5e6dcfd03a4a00c220230c;hpb=f10c27a850e57bf88bf1d4440eb450729782f409;p=lttv.git diff --git a/lttv/lttv/sync/event_matching_broadcast.c b/lttv/lttv/sync/event_matching_broadcast.c index 9eb6e108..32112014 100644 --- a/lttv/lttv/sync/event_matching_broadcast.c +++ b/lttv/lttv/sync/event_matching_broadcast.c @@ -26,7 +26,7 @@ #include #include "event_analysis.h" -#include "sync_chain_lttv.h" +#include "sync_chain.h" #include "event_matching_broadcast.h" @@ -198,13 +198,14 @@ static void matchEventBroadcast(SyncState* const syncState, Event* const event) matchingData->stats->totReceive++; } - // s'il est déjà dans pendingBroadcasts - // l'ajouter à son broadcast - // s'il y a traceNb éléments - // le retirer de pending et le livrer à analysis - // détruire le broadcast (et ses éléments) - // sinon - // créer un broadcast et l'ajouter à pending + /* if event in pendingBroadcasts: + * add it to its broadcast + * if this broadcast has traceNb events: + * remove it from pending and deliver it to analysis + * destroy the broadcast (and its elements) + * else: + * create a broadcast and add it to pending + */ result= g_hash_table_lookup_extended(matchingData->pendingBroadcasts, @@ -215,6 +216,11 @@ static void matchEventBroadcast(SyncState* const syncState, Event* const event) g_queue_push_tail(broadcast->events, event); if (broadcast->events->length == syncState->traceNb) { + if (matchingData->stats) + { + matchingData->stats->totComplete++; + } + g_hash_table_steal(matchingData->pendingBroadcasts, datagramKey); free(datagramKey); syncState->analysisModule->analyzeBroadcast(syncState, broadcast); @@ -226,6 +232,12 @@ static void matchEventBroadcast(SyncState* const syncState, Event* const event) broadcast= malloc(sizeof(Broadcast)); broadcast->events= g_queue_new(); g_queue_push_tail(broadcast->events, event); + + datagramKey= malloc(sizeof(DatagramKey)); + *datagramKey= *event->event.udpEvent->datagramKey; + + g_hash_table_insert(matchingData->pendingBroadcasts, + datagramKey, broadcast); } } else @@ -288,7 +300,6 @@ static void printMatchingStatsBroadcast(SyncState* const syncState) { return; } - matchingData= (MatchingDataBroadcast*) syncState->matchingData; printf("Broadcast matching stats:\n"); @@ -296,9 +307,9 @@ static void printMatchingStatsBroadcast(SyncState* const syncState) matchingData->stats->totTransmit); printf("\ttotal broadcasts datagrams received: %u\n", matchingData->stats->totReceive); - printf("\ttotal broadcast groups for which all emissions were identified: %u\n", + printf("\ttotal broadcast groups for which all receptions were identified: %u\n", matchingData->stats->totComplete); - printf("\ttotal broadcast groups missing some emissions: %u\n", + printf("\ttotal broadcast groups missing some receptions: %u\n", matchingData->stats->totIncomplete); if (matchingData->stats->totIncomplete > 0) {