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
The newest version!
/**
* Copyright 2016-2019 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.Function;
import java.util.function.IntUnaryOperator;
import java.util.function.LongFunction;
import java.util.function.LongSupplier;
import java.util.function.LongUnaryOperator;
import java.util.function.Supplier;
import java.util.function.ToIntFunction;
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 LongUnaryOperator supplyInitialId;
private LongUnaryOperator supplyReplyId;
private LongSupplier supplyTrace;
private ToIntFunction supplyTypeId;
private LongSupplier supplyGroupId;
private Supplier supplyBufferPool;
private LongFunction groupBudgetClaimer;
private LongFunction groupBudgetReleaser;
private Function supplyCounter;
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 setInitialIdSupplier(
LongUnaryOperator supplyInitialId)
{
this.supplyInitialId = supplyInitialId;
return this;
}
@Override
public StreamFactoryBuilder setReplyIdSupplier(
LongUnaryOperator supplyReplyId)
{
this.supplyReplyId = supplyReplyId;
return this;
}
@Override
public StreamFactoryBuilder setGroupIdSupplier(
LongSupplier supplyGroupId)
{
this.supplyGroupId = supplyGroupId;
return this;
}
@Override
public StreamFactoryBuilder setTraceSupplier(
LongSupplier supplyTrace)
{
this.supplyTrace = supplyTrace;
return this;
}
@Override
public StreamFactoryBuilder setTypeIdSupplier(
ToIntFunction supplyTypeId)
{
this.supplyTypeId = supplyTypeId;
return this;
}
@Override
public StreamFactoryBuilder setGroupBudgetClaimer(
LongFunction groupBudgetClaimer)
{
this.groupBudgetClaimer = groupBudgetClaimer;
return this;
}
@Override
public StreamFactoryBuilder setGroupBudgetReleaser(
LongFunction groupBudgetReleaser)
{
this.groupBudgetReleaser = groupBudgetReleaser;
return this;
}
@Override
public StreamFactoryBuilder setBufferPoolSupplier(
Supplier supplyBufferPool)
{
this.supplyBufferPool = supplyBufferPool;
return this;
}
@Override
public StreamFactoryBuilder setCounterSupplier(
Function supplyCounter)
{
this.supplyCounter = supplyCounter;
return this;
}
@Override
public StreamFactory build()
{
final BufferPool bufferPool = supplyBufferPool.get();
return new ServerStreamFactory(
config,
router,
writeBuffer,
bufferPool,
supplyInitialId,
supplyReplyId,
supplyGroupId,
supplyTrace,
supplyTypeId,
supplyCounter,
correlations,
groupBudgetClaimer,
groupBudgetReleaser);
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy