package tc.oc.analytics.datadog; import javax.inject.Singleton; import com.google.inject.Provides; import com.timgroup.statsd.NoOpStatsDClient; import com.timgroup.statsd.NonBlockingStatsDClient; import com.timgroup.statsd.StatsDClient; import tc.oc.analytics.AnalyticsClient; import tc.oc.commons.core.inject.HybridManifest; import tc.oc.minecraft.suspend.SuspendableBinder; public class DataDogManifest extends HybridManifest { @Override protected void configure() { bind(DataDogConfig.class); bind(AnalyticsClient.class) .to(DataDogClient.class); bind(DataDogClient.class).in(Singleton.class); expose(DataDogClient.class); new SuspendableBinder(publicBinder()) .addBinding().to(DataDogClient.class); } @Provides StatsDClient statsDClient(DataDogConfig config) { return config.enabled() ? new NonBlockingStatsDClient(null, config.host(), config.port()) : new NoOpStatsDClient(); } }