@@ -487,27 +487,16 @@ private static Configuration BuildSdkConfig(SdkConfigParams sdkParams, ILogAdapt
487487 }
488488
489489 // Configure synchronizers
490- if ( sdkParams . DataSystem . Synchronizers != null )
490+ if ( sdkParams . DataSystem . Synchronizers != null && sdkParams . DataSystem . Synchronizers . Length > 0 )
491491 {
492492 var synchronizers = new List < IComponentConfigurer < IDataSource > > ( ) ;
493493
494- // Primary synchronizer
495- if ( sdkParams . DataSystem . Synchronizers . Primary != null )
494+ foreach ( var synchronizerParams in sdkParams . DataSystem . Synchronizers )
496495 {
497- var primary = CreateSynchronizer ( sdkParams . DataSystem . Synchronizers . Primary , sdkParams . DataSystem . PayloadFilter ) ;
498- if ( primary != null )
496+ var synchronizer = CreateSynchronizer ( synchronizerParams , sdkParams . DataSystem . PayloadFilter ) ;
497+ if ( synchronizer != null )
499498 {
500- synchronizers . Add ( primary ) ;
501- }
502- }
503-
504- // Secondary synchronizer (optional)
505- if ( sdkParams . DataSystem . Synchronizers . Secondary != null )
506- {
507- var secondary = CreateSynchronizer ( sdkParams . DataSystem . Synchronizers . Secondary , sdkParams . DataSystem . PayloadFilter ) ;
508- if ( secondary != null )
509- {
510- synchronizers . Add ( secondary ) ;
499+ synchronizers . Add ( synchronizer ) ;
511500 }
512501 }
513502
@@ -517,23 +506,22 @@ private static Configuration BuildSdkConfig(SdkConfigParams sdkParams, ILogAdapt
517506
518507 // Find the best synchronizer to use for FDv1 fallback configuration
519508 // Prefer polling synchronizers since FDv1 fallback is polling-based
520- SdkConfigSynchronizerParams synchronizerForFallback = null ;
509+ SdkConfigDataSynchronizerParams synchronizerForFallback = null ;
521510
522- // First, try to find a polling synchronizer (check secondary first, then primary)
523- if ( sdkParams . DataSystem . Synchronizers . Secondary != null &&
524- sdkParams . DataSystem . Synchronizers . Secondary . Polling != null )
511+ // First, try to find a polling synchronizer
512+ foreach ( var syncParams in sdkParams . DataSystem . Synchronizers )
525513 {
526- synchronizerForFallback = sdkParams . DataSystem . Synchronizers . Secondary ;
527- }
528- else if ( sdkParams . DataSystem . Synchronizers . Primary != null &&
529- sdkParams . DataSystem . Synchronizers . Primary . Polling != null )
530- {
531- synchronizerForFallback = sdkParams . DataSystem . Synchronizers . Primary ;
514+ if ( syncParams . Polling != null )
515+ {
516+ synchronizerForFallback = syncParams ;
517+ break ;
518+ }
532519 }
533- // If no polling synchronizer found, use primary synchronizer (could be streaming)
534- else if ( sdkParams . DataSystem . Synchronizers . Primary != null )
520+
521+ // If no polling synchronizer found, use the first synchronizer (could be streaming)
522+ if ( synchronizerForFallback == null && sdkParams . DataSystem . Synchronizers . Length > 0 )
535523 {
536- synchronizerForFallback = sdkParams . DataSystem . Synchronizers . Primary ;
524+ synchronizerForFallback = sdkParams . DataSystem . Synchronizers [ 0 ] ;
537525 }
538526
539527 if ( synchronizerForFallback != null )
@@ -563,7 +551,7 @@ private static Configuration BuildSdkConfig(SdkConfigParams sdkParams, ILogAdapt
563551 }
564552
565553 private static IComponentConfigurer < IDataSource > CreateSynchronizer (
566- SdkConfigSynchronizerParams synchronizer ,
554+ SdkConfigDataSynchronizerParams synchronizer ,
567555 string payloadFilter )
568556 {
569557 if ( synchronizer . Polling != null )
@@ -608,7 +596,7 @@ private static IComponentConfigurer<IDataSource> CreateSynchronizer(
608596 }
609597
610598 private static IComponentConfigurer < IDataSource > CreateFDv1FallbackSynchronizer (
611- SdkConfigSynchronizerParams synchronizer )
599+ SdkConfigDataSynchronizerParams synchronizer )
612600 {
613601 // FDv1 fallback synchronizer is always polling-based
614602 var fdv1PollingBuilder = DataSystemComponents . FDv1Polling ( ) ;
0 commit comments