Skip to content

Commit

Permalink
buffer: allow to configure default buffer initial capacity
Browse files Browse the repository at this point in the history
- set initial capacity to 1024 bytes
  • Loading branch information
jknack committed May 26, 2024
1 parent f95df82 commit e87069e
Show file tree
Hide file tree
Showing 4 changed files with 51 additions and 4 deletions.
14 changes: 14 additions & 0 deletions jooby/src/main/java/io/jooby/buffer/DataBufferFactory.java
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,20 @@
* @see DataBuffer
*/
public interface DataBufferFactory {
/**
* Buffer of a default initial capacity. Default capacity is <code>1024</code> bytes.
*
* @return buffer of a default initial capacity.
*/
int getDefaultInitialCapacity();

/**
* Set default buffer initial capacity.
*
* @param defaultInitialCapacity Default initial buffer capacity.
* @return This buffer factory.
*/
DataBufferFactory setDefaultInitialCapacity(int defaultInitialCapacity);

/**
* Allocate a data buffer of a default initial capacity. Depending on the underlying
Expand Down
15 changes: 13 additions & 2 deletions jooby/src/main/java/io/jooby/buffer/DefaultDataBufferFactory.java
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ public class DefaultDataBufferFactory implements DataBufferFactory {
* @see #DefaultDataBufferFactory()
* @see #DefaultDataBufferFactory(boolean)
*/
public static final int DEFAULT_INITIAL_CAPACITY = 4096;
public static final int DEFAULT_INITIAL_CAPACITY = 1024;

/**
* Shared instance based on the default constructor.
Expand All @@ -35,7 +35,7 @@ public class DefaultDataBufferFactory implements DataBufferFactory {

private final boolean preferDirect;

private final int defaultInitialCapacity;
private int defaultInitialCapacity;

/**
* Creates a new {@code DefaultDataBufferFactory} with default settings.
Expand Down Expand Up @@ -69,6 +69,17 @@ public DefaultDataBufferFactory(boolean preferDirect, int defaultInitialCapacity
this.defaultInitialCapacity = defaultInitialCapacity;
}

@Override
public int getDefaultInitialCapacity() {
return defaultInitialCapacity;
}

@Override
public DataBufferFactory setDefaultInitialCapacity(int defaultInitialCapacity) {
this.defaultInitialCapacity = defaultInitialCapacity;
return this;
}

@Override
public DefaultDataBuffer allocateBuffer() {
return allocateBuffer(this.defaultInitialCapacity);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,7 @@ public class NettyDataBufferFactory implements DataBufferFactory {
}

private final ByteBufAllocator byteBufAllocator;
private int defaultInitialCapacity = 1024;

/**
* Create a new {@code NettyDataBufferFactory} based on the given factory.
Expand All @@ -63,10 +64,20 @@ public ByteBufAllocator getByteBufAllocator() {
return this.byteBufAllocator;
}

@Override
public int getDefaultInitialCapacity() {
return defaultInitialCapacity;
}

@Override
public NettyDataBufferFactory setDefaultInitialCapacity(int defaultInitialCapacity) {
this.defaultInitialCapacity = defaultInitialCapacity;
return this;
}

@Override
public NettyDataBuffer allocateBuffer() {
ByteBuf byteBuf = this.byteBufAllocator.buffer();
return new NettyDataBuffer(byteBuf, this);
return allocateBuffer(defaultInitialCapacity);
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,17 @@ public LeakAwareDataBufferFactory(DataBufferFactory delegate) {
this.delegate = delegate;
}

@Override
public int getDefaultInitialCapacity() {
return delegate.getDefaultInitialCapacity();
}

@Override
public DataBufferFactory setDefaultInitialCapacity(int defaultInitialCapacity) {
delegate.setDefaultInitialCapacity(defaultInitialCapacity);
return this;
}

/**
* Checks whether all the data buffers allocated by this factory have also been released. If not,
* then an {@link AssertionError} is thrown. Typically used from a JUnit <em>after</em> method.
Expand Down

0 comments on commit e87069e

Please sign in to comment.