use crate::spec::{ChannelsSpec, FiltersSpec, ServiceActivatorsSpec, HttpInboundAdaptersSpec, HttpOutboundAdaptersSpec};
#[derive(Debug, Clone)]
pub struct AlloraSpec {
version: u32,
channels: ChannelsSpec,
filters: Option<FiltersSpec>,
services: Option<ServiceActivatorsSpec>,
http_inbound_adapters: Option<HttpInboundAdaptersSpec>,
http_outbound_adapters: Option<HttpOutboundAdaptersSpec>,
}
impl AlloraSpec {
pub fn new(version: u32, channels: ChannelsSpec) -> Self {
Self {
version,
channels,
filters: None,
services: None,
http_inbound_adapters: None,
http_outbound_adapters: None,
}
}
pub fn new_with_filters(
version: u32,
channels: ChannelsSpec,
filters: Option<FiltersSpec>,
) -> Self {
Self {
version,
channels,
filters,
services: None,
http_inbound_adapters: None,
http_outbound_adapters: None,
}
}
pub fn with_filters(mut self, filters: FiltersSpec) -> Self {
self.filters = Some(filters);
self
}
pub fn with_services(mut self, services: ServiceActivatorsSpec) -> Self {
self.services = Some(services);
self
}
pub fn with_http_inbound_adapters(mut self, adapters: HttpInboundAdaptersSpec) -> Self {
self.http_inbound_adapters = Some(adapters);
self
}
pub fn with_http_outbound_adapters(mut self, adapters: HttpOutboundAdaptersSpec) -> Self {
self.http_outbound_adapters = Some(adapters);
self
}
pub fn version(&self) -> u32 {
self.version
}
pub fn channels_spec(&self) -> &ChannelsSpec {
&self.channels
}
pub fn filters_spec(&self) -> Option<&FiltersSpec> {
self.filters.as_ref()
}
pub fn services_spec(&self) -> Option<&ServiceActivatorsSpec> {
self.services.as_ref()
}
pub fn http_inbound_adapters_spec(&self) -> Option<&HttpInboundAdaptersSpec> {
self.http_inbound_adapters.as_ref()
}
pub fn http_outbound_adapters_spec(&self) -> Option<&HttpOutboundAdaptersSpec> {
self.http_outbound_adapters.as_ref()
}
pub fn into_channels_spec(self) -> ChannelsSpec {
self.channels
}
pub fn into_filters_spec(self) -> Option<FiltersSpec> {
self.filters
}
pub fn into_services_spec(self) -> Option<ServiceActivatorsSpec> {
self.services
}
pub fn into_http_inbound_adapters_spec(self) -> Option<HttpInboundAdaptersSpec> {
self.http_inbound_adapters
}
pub fn into_http_outbound_adapters_spec(self) -> Option<HttpOutboundAdaptersSpec> {
self.http_outbound_adapters
}
}