public IEventSink CreateInstance(string sinkType, IPlugInContext context) { IConfiguration config = context.Configuration; ILogger logger = context.Logger; switch (sinkType.ToLower()) { case CLOUD_WATCH_LOG: case CLOUD_WATCH_LOG_EMF: return(new CloudWatchLogsSink(context, AWSUtilities.CreateAWSClient <AmazonCloudWatchLogsClient>(context))); case KINESIS_FIREHOSE: var firehoseSink = new KinesisFirehoseSink(context, AWSUtilities.CreateAWSClient <AmazonKinesisFirehoseClient>(context)); string combineRecords = config["CombineRecords"]; if (!string.IsNullOrWhiteSpace(combineRecords) && bool.TryParse(combineRecords, out bool canCombineRecords)) { firehoseSink.CanCombineRecords = canCombineRecords; } return(firehoseSink); case KINESIS_STREAM: return(new KinesisStreamSink(context, AWSUtilities.CreateAWSClient <AmazonKinesisClient>(context))); case CLOUD_WATCH: return(new CloudWatchSink(60, context, AWSUtilities.CreateAWSClient <AmazonCloudWatchClient>(context))); case TELEMETRICS: #if DEBUG const int TELEMETRICS_DEFAULT_INTERVAL = 60; #else const int TELEMETRICS_DEFAULT_INTERVAL = 3600; #endif //If RedirectToSinkId is specified, we use TelemetryConnector. Otherwise, TelemtryClient string redirectToSinkId = config[ConfigConstants.REDIRECT_TO_SINK_ID]; ITelemetricsClient <HttpResponseMessage> telemetricsClient = null; if (string.IsNullOrWhiteSpace(redirectToSinkId)) { telemetricsClient = TelemetricsClient.Default; } else { telemetricsClient = new TelemetricsSinkConnector(context); context.ContextData[ConfigConstants.TELEMETRY_CONNECTOR] = telemetricsClient; //Make telemetricsClient available to caller } return(new TelemetricsSink(TELEMETRICS_DEFAULT_INTERVAL, context, telemetricsClient)); case FILE_SYSTEM: return(new FileSystemEventSink(context)); default: throw new NotImplementedException($"Sink type {sinkType} is not implemented by AWSEventSinkFactory."); } }
public TelemetricsSink(int defaultInterval, IPlugInContext context, ITelemetricsClient <HttpResponseMessage> telemetricsClient) : base(defaultInterval, context) { _telemetricsClient = telemetricsClient; }