PROTON-1737: add option to allow configuring max frame size when using the reactor
diff --git a/proton-j/src/main/java/org/apache/qpid/proton/reactor/ReactorOptions.java b/proton-j/src/main/java/org/apache/qpid/proton/reactor/ReactorOptions.java
index 5863f7c..8957aa6 100644
--- a/proton-j/src/main/java/org/apache/qpid/proton/reactor/ReactorOptions.java
+++ b/proton-j/src/main/java/org/apache/qpid/proton/reactor/ReactorOptions.java
@@ -22,6 +22,7 @@
public class ReactorOptions {
private boolean enableSaslByDefault = true;
+ private int maxFrameSize;
/**
* Sets whether SASL will be automatically enabled with ANONYMOUS as the mechanism,
@@ -46,4 +47,23 @@
public boolean isEnableSaslByDefault() {
return this.enableSaslByDefault;
}
+
+ /**
+ * Sets the maximum frame size value to announce in the Open frame.
+ *
+ * @param maxFrameSize The frame size in bytes.
+ */
+ public void setMaxFrameSize(int maxFrameSize) {
+ this.maxFrameSize = maxFrameSize;
+ }
+
+ /**
+ * Gets the maximum frame size to be announced in the Open frame.
+ *
+ * @return the frame size in bytes or 0 if none is set.
+ * @see #setMaxFrameSize(int)
+ */
+ public int getMaxFrameSize() {
+ return maxFrameSize;
+ }
}
diff --git a/proton-j/src/main/java/org/apache/qpid/proton/reactor/impl/AcceptorImpl.java b/proton-j/src/main/java/org/apache/qpid/proton/reactor/impl/AcceptorImpl.java
index 7275113..eec8e70 100644
--- a/proton-j/src/main/java/org/apache/qpid/proton/reactor/impl/AcceptorImpl.java
+++ b/proton-j/src/main/java/org/apache/qpid/proton/reactor/impl/AcceptorImpl.java
@@ -73,6 +73,12 @@
conn_recs.set(ReactorImpl.CONNECTION_PEER_ADDRESS_KEY, Address.class, addr);
}
Transport trans = Proton.transport();
+
+ int maxFrameSizeOption = reactor.getOptions().getMaxFrameSize();
+ if (maxFrameSizeOption != 0) {
+ trans.setMaxFrameSize(maxFrameSizeOption);
+ }
+
if(reactor.getOptions().isEnableSaslByDefault()) {
Sasl sasl = trans.sasl();
sasl.server();
diff --git a/proton-j/src/main/java/org/apache/qpid/proton/reactor/impl/IOHandler.java b/proton-j/src/main/java/org/apache/qpid/proton/reactor/impl/IOHandler.java
index 0594d32..81b85ff 100644
--- a/proton-j/src/main/java/org/apache/qpid/proton/reactor/impl/IOHandler.java
+++ b/proton-j/src/main/java/org/apache/qpid/proton/reactor/impl/IOHandler.java
@@ -101,6 +101,11 @@
}
Transport transport = Proton.transport();
+ int maxFrameSizeOption = reactor.getOptions().getMaxFrameSize();
+ if (maxFrameSizeOption != 0) {
+ transport.setMaxFrameSize(maxFrameSizeOption);
+ }
+
if (reactor.getOptions().isEnableSaslByDefault()) {
Sasl sasl = transport.sasl();
sasl.client();