Skip to content

Instantly share code, notes, and snippets.

@awright18
Created October 21, 2023 17:48
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save awright18/22d316a217f81f52015c750b8f45e5e3 to your computer and use it in GitHub Desktop.
Save awright18/22d316a217f81f52015c750b8f45e5e3 to your computer and use it in GitHub Desktop.
EndpointConfigurationBuilder
public class EndpointConfigurationBuilder
{
private EndpointConfiguration _endpointConfiguration;
public EndpointConfigurationBuilder(string endpointName)
{
_endpointConfiguration = new EndpointConfiguration(endpointName);
}
public EndpointConfigurationBuilder UseTransport<TTransport>(
TTransport transportDefinition,
Action<RoutingSettings<TTransport>> configureRouting)
where TTransport : TransportDefinition
{
var routingSettings = _endpointConfiguration.UseTransport(transportDefinition);
configureRouting(routingSettings);
return this;
}
public EndpointConfigurationBuilder UsePersistence<TPersistence>(
Action<PersistenceExtensions<TPersistence>>? configurePersistence = null)
where TPersistence : PersistenceDefinition
{
var persistenceExtensions = _endpointConfiguration.UsePersistence<TPersistence>();
configurePersistence?.Invoke(persistenceExtensions);
return this;
}
public EndpointConfigurationBuilder ConfigureRecoverability(Action<RecoverabilitySettings>? configureRecoverability = null)
{
var recoverability = _endpointConfiguration.Recoverability();
configureRecoverability?.Invoke(recoverability);
return this;
}
public EndpointConfigurationBuilder ConfigurePipeline(Action<PipelineSettings>? configurePipeline = null)
{
var pipeline = _endpointConfiguration.Pipeline;
configurePipeline?.Invoke(pipeline);
return this;
}
public EndpointConfigurationBuilder UseSerialization<TSerializer>(
Action<SerializationExtensions<TSerializer>>? configureSerializer = null)
where TSerializer : SerializationDefinition, new()
{
var serializer =
_endpointConfiguration.UseSerialization<TSerializer>();
configureSerializer?.Invoke(serializer);
return this;
}
public EndpointConfigurationBuilder RegisterComponents(Action<IServiceCollection> registerServices)
{
_endpointConfiguration.RegisterComponents(registerServices);
return this;
}
private EndpointConfigurationBuilder RegisterMessageMutator<T> (T messageMutator)
{
_endpointConfiguration.RegisterMessageMutator(messageMutator);
return this;
}
public EndpointConfigurationBuilder RegisterMessageMutator(IMutateOutgoingMessages messageMutator)
{
RegisterMessageMutator(messageMutator);
return this;
}
public EndpointConfigurationBuilder RegisterMessageMutator(IMutateOutgoingTransportMessages messageMutator)
{
RegisterMessageMutator(messageMutator);
return this;
}
public EndpointConfigurationBuilder RegisterMessageMutator(IMutateIncomingTransportMessages messageMutator)
{
RegisterMessageMutator(messageMutator);
return this;
}
public EndpointConfigurationBuilder RegisterMessageMutator(IMutateIncomingMessages messageMutator)
{
RegisterMessageMutator(messageMutator);
return this;
}
public EndpointConfiguration Build()
{
return _endpointConfiguration;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment