X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=src%2Frmr%2Fnng%2Fsrc%2Fmt_call_nng_static.c;h=71106f1095dc8420c7d081b576e5531d5f4161fc;hb=dfe7b622b128e7bfb4a5e1f7e0afdb84e6001d14;hp=2ef21f67066bde68c8fc1308817edb721fc62f78;hpb=412d53dfa2f9b5b56a448797d0dfec3b0f11f666;p=ric-plt%2Flib%2Frmr.git diff --git a/src/rmr/nng/src/mt_call_nng_static.c b/src/rmr/nng/src/mt_call_nng_static.c index 2ef21f6..71106f1 100644 --- a/src/rmr/nng/src/mt_call_nng_static.c +++ b/src/rmr/nng/src/mt_call_nng_static.c @@ -32,16 +32,21 @@ #include static inline void queue_normal( uta_ctx_t* ctx, rmr_mbuf_t* mbuf ) { + static int warned = 0; chute_t* chute; - int state; if( ! uta_ring_insert( ctx->mring, mbuf ) ) { rmr_free_msg( mbuf ); // drop if ring is full + if( !warned ) { + fprintf( stderr, "[WARN] rmr_mt_receive: application is not receiving fast enough; messages dropping\n" ); + warned++; + } + + return; } chute = &ctx->chutes[0]; - chute->mbuf = mbuf; - state = sem_post( &chute->barrier ); // tickle the ring monitor + sem_post( &chute->barrier ); // tickle the ring monitor } /* @@ -91,13 +96,8 @@ static void* mt_receive( void* vctx ) { queue_normal( ctx, mbuf ); } else { chute = &ctx->chutes[call_id]; - if( memcmp( mbuf->xaction, chute->expect, RMR_MAX_XID ) == 0 ) { // match - chute->mbuf = mbuf; - sem_post( &chute->barrier ); - } else { - rmr_free_msg( mbuf ); - mbuf = NULL; - } + chute->mbuf = mbuf; + sem_post( &chute->barrier ); // the call function can vet xaction id in their own thread } } }