/** * Create a driver. * * @param appenderator appenderator * @param segmentAllocator segment allocator * @param handoffNotifierFactory handoff notifier factory * @param usedSegmentChecker used segment checker * @param objectMapper object mapper, used for serde of commit metadata * @param metrics Firedepartment metrics */ public StreamAppenderatorDriver( Appenderator appenderator, SegmentAllocator segmentAllocator, SegmentHandoffNotifierFactory handoffNotifierFactory, UsedSegmentChecker usedSegmentChecker, DataSegmentKiller dataSegmentKiller, ObjectMapper objectMapper, FireDepartmentMetrics metrics ) { super(appenderator, segmentAllocator, usedSegmentChecker, dataSegmentKiller); this.handoffNotifier = Preconditions.checkNotNull(handoffNotifierFactory, "handoffNotifierFactory") .createSegmentHandoffNotifier(appenderator.getDataSource()); this.metrics = Preconditions.checkNotNull(metrics, "metrics"); this.objectMapper = Preconditions.checkNotNull(objectMapper, "objectMapper"); }
@Override public Plumber findPlumber( final DataSchema schema, final RealtimeTuningConfig config, final FireDepartmentMetrics metrics ) { final Appenderator appenderator = appenderatorFactory.build( schema, config, metrics ); return new AppenderatorPlumber( schema, config, metrics, segmentAnnouncer, segmentPublisher, handoffNotifierFactory.createSegmentHandoffNotifier(schema.getDataSource()), appenderator ); }
@Override public Plumber findPlumber( final DataSchema schema, final RealtimeTuningConfig config, final FireDepartmentMetrics metrics ) { verifyState(); return new RealtimePlumber( schema, config, metrics, emitter, conglomerate, segmentAnnouncer, queryExecutorService, dataSegmentPusher, segmentPublisher, handoffNotifierFactory.createSegmentHandoffNotifier(schema.getDataSource()), indexMergerV9, indexIO, cache, cacheConfig, objectMapper ); }