org.reaktivity.nukleus.http2.internal.ServerStreamFactoryBuilder Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of nukleus-http2 Show documentation
Show all versions of nukleus-http2 Show documentation
HTTP/2 Nukleus Implementation
/**
* Copyright 2016-2017 The Reaktivity Project
*
* The Reaktivity Project licenses this file to you under the Apache License,
* version 2.0 (the "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at:
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations
* under the License.
*/
package org.reaktivity.nukleus.http2.internal;
import java.util.function.LongSupplier;
import java.util.function.Supplier;
import org.agrona.MutableDirectBuffer;
import org.agrona.collections.Long2ObjectHashMap;
import org.reaktivity.nukleus.buffer.BufferPool;
import org.reaktivity.nukleus.route.RouteManager;
import org.reaktivity.nukleus.stream.StreamFactory;
import org.reaktivity.nukleus.stream.StreamFactoryBuilder;
public final class ServerStreamFactoryBuilder implements StreamFactoryBuilder
{
private final Http2Configuration config;
private final Long2ObjectHashMap correlations;
private RouteManager router;
private MutableDirectBuffer writeBuffer;
private LongSupplier supplyStreamId;
private LongSupplier supplyCorrelationId;
private Supplier supplyBufferPool;
ServerStreamFactoryBuilder(
Http2Configuration config)
{
this.config = config;
this.correlations = new Long2ObjectHashMap<>();
}
@Override
public ServerStreamFactoryBuilder setRouteManager(
RouteManager router)
{
this.router = router;
return this;
}
@Override
public ServerStreamFactoryBuilder setWriteBuffer(
MutableDirectBuffer writeBuffer)
{
this.writeBuffer = writeBuffer;
return this;
}
@Override
public ServerStreamFactoryBuilder setStreamIdSupplier(
LongSupplier supplyStreamId)
{
this.supplyStreamId = supplyStreamId;
return this;
}
@Override
public ServerStreamFactoryBuilder setCorrelationIdSupplier(
LongSupplier supplyCorrelationId)
{
this.supplyCorrelationId = supplyCorrelationId;
return this;
}
@Override
public StreamFactoryBuilder setBufferPoolSupplier(
Supplier supplyBufferPool)
{
this.supplyBufferPool = supplyBufferPool;
return this;
}
@Override
public StreamFactory build()
{
final BufferPool bufferPool = supplyBufferPool.get();
return new ServerStreamFactory(config, router, writeBuffer, bufferPool, supplyStreamId,
supplyCorrelationId, correlations);
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy