public static ITomatoLogClient Create(LogFlowTypes flowType, TomatoLogSinkConfiguration configuration) { switch (flowType) { case LogFlowTypes.Redis: { var eventOption = configuration.Redis; if (eventOption == null) { throw new ArgumentNullException(nameof(eventOption)); } return(new TomatoLogClientRedis(eventOption)); } case LogFlowTypes.RabbitMq: { var eventOption = configuration.RabbitMQ; if (eventOption == null) { throw new ArgumentNullException(nameof(eventOption)); } return(new TomatoLogClientRabbitMQ(eventOption)); } case LogFlowTypes.Kafka: { var eventOption = configuration.Kafka; if (eventOption == null) { throw new ArgumentNullException(nameof(eventOption)); } return(new TomatoLogClientKafka(eventOption)); } default: throw new InvalidOperationException("Unknown flow type."); } }
public static void Set(ITomatoLogClient client, LogFlowTypes flowType) { CachedClient = client ?? throw new ArgumentNullException(nameof(client)); FlowType = flowType; }