8282#include "advanced/pproc_manager.h"
8383#include "advanced/packet_processor.h"
8484#include "rtpp_command_stats.h"
85+ #include "rtpp_modman.h"
86+ #include "rtpp_session.h"
8587
8688#define SEQ_SYNC_IVAL 1.0 /* in seconds */
8789
@@ -245,9 +247,16 @@ rtpp_stream_ctor(const struct r_stream_ctor_args *ap)
245247 struct rtpp_stream_priv * pvt ;
246248 size_t alen ;
247249 const struct r_pipe_ctor_args * pap = ap -> pipe_cap ;
250+ const struct rtpp_session_ctor_args * sap = pap -> session_cap ;
251+ const struct rtpp_cfg * cfs = sap -> cfs ;
252+ int nmodules = 0 ;
253+
254+ #if ENABLE_MODULE_IF
255+ nmodules = cfs -> modules_cf -> count .total ;
256+ #endif
248257
249258 alen = offsetof(struct rtpp_stream_priv , pmod_data .adp ) +
250- (pap -> nmodules * sizeof (pvt -> pmod_data .adp [0 ]));
259+ (nmodules * sizeof (pvt -> pmod_data .adp [0 ]));
251260 pvt = rtpp_rzmalloc (alen , PVT_RCOFFS (pvt ));
252261 if (pvt == NULL ) {
253262 goto e0 ;
@@ -258,7 +267,7 @@ rtpp_stream_ctor(const struct r_stream_ctor_args *ap)
258267 pvt -> pub .log = pap -> log ;
259268 RTPP_OBJ_BORROW (& pvt -> pub , pap -> log );
260269 RTPP_OBJ_DTOR_ATTACH (& pvt -> pub , pthread_mutex_destroy , & pvt -> lock );
261- pvt -> pub .pproc_manager = CALL_SMETHOD (pap -> pproc_manager , clone );
270+ pvt -> pub .pproc_manager = CALL_SMETHOD (cfs -> pproc_manager , clone );
262271 if (pvt -> pub .pproc_manager == NULL ) {
263272 goto e1 ;
264273 }
@@ -278,7 +287,7 @@ rtpp_stream_ctor(const struct r_stream_ctor_args *ap)
278287 };
279288 if (CALL_SMETHOD (pvt -> pub .pproc_manager , reg , PPROC_ORD_RESIZE , & resize_packet_poi ) < 0 )
280289 goto e1 ;
281- pvt -> npkts_resizer_in_idx = CALL_SMETHOD (pap -> rtpp_stats , getidxbyname ,
290+ pvt -> npkts_resizer_in_idx = CALL_SMETHOD (cfs -> rtpp_stats , getidxbyname ,
282291 "npkts_resizer_in" );
283292 if (pvt -> npkts_resizer_in_idx == -1 )
284293 goto e2 ;
@@ -308,19 +317,20 @@ rtpp_stream_ctor(const struct r_stream_ctor_args *ap)
308317 goto e3 ;
309318 }
310319 RTPP_OBJ_DTOR_ATTACH_OBJ (& pvt -> pub , pvt -> rem_addr );
311- pvt -> proc_servers = pap -> proc_servers ;
312- RTPP_OBJ_BORROW (& pvt -> pub , pap -> proc_servers );
313- pvt -> rtpp_stats = pap -> rtpp_stats ;
320+ pvt -> proc_servers = cfs -> proc_servers ;
321+ RTPP_OBJ_BORROW (& pvt -> pub , cfs -> proc_servers );
322+ pvt -> rtpp_stats = cfs -> rtpp_stats ;
314323 pvt -> pub .side = ap -> side ;
315324 pvt -> pub .pipe_type = pap -> pipe_type ;
316325
317- pvt -> pub .stuid = CALL_SMETHOD (pap -> guid , gen );
326+ pvt -> pub .stuid = CALL_SMETHOD (cfs -> guid , gen );
318327 pvt -> pub .seuid = pap -> seuid ;
319- for (unsigned int i = 0 ; i < pap -> nmodules ; i ++ ) {
328+ for (unsigned int i = 0 ; i < nmodules ; i ++ ) {
320329 atomic_init (& (pvt -> pmod_data .adp [i ]), NULL );
321330 }
322- pvt -> pmod_data .nmodules = pap -> nmodules ;
331+ pvt -> pmod_data .nmodules = nmodules ;
323332 pvt -> pub .pmod_datap = & (pvt -> pmod_data );
333+ pvt -> pub .laddr = sap -> lia [ap -> side ];
324334 PUBINST_FININIT (& pvt -> pub , pvt , rtpp_stream_dtor );
325335 return (& pvt -> pub );
326336
0 commit comments