Created
October 21, 2023 17:48
-
-
Save awright18/22d316a217f81f52015c750b8f45e5e3 to your computer and use it in GitHub Desktop.
EndpointConfigurationBuilder
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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