@@ -151,9 +151,11 @@ type Config struct {
151151 Listeners []* CtrlListenerConfig
152152 }
153153 Link struct {
154- Listeners []map [interface {}]interface {}
155- Dialers []map [interface {}]interface {}
156- Heartbeats channel.HeartbeatOptions
154+ Listeners []map [interface {}]interface {}
155+ Dialers []map [interface {}]interface {}
156+ Heartbeats channel.HeartbeatOptions
157+ PayloadSenderQueueSize int
158+ AckSenderQueueSize int
157159 }
158160 Dialers map [string ]xgress.OptionsData
159161 Listeners []ListenerBinding
@@ -205,6 +207,9 @@ const (
205207
206208 DefaultLinkHeartbeatSendInterval = 10 * time .Second
207209 DefaultLinkUnresponsiveTimeout = time .Minute
210+
211+ DefaultLinkPayloadSenderQueueSize = 128
212+ DefaultLinkAckSenderQueueSize = 64
208213)
209214
210215// CreateBackup will attempt to use the current path value to create a backup of
@@ -574,6 +579,8 @@ func LoadConfigWithOptions(path string, loadIdentity bool) (*Config, error) {
574579 cfg .Link .Heartbeats = * channel .DefaultHeartbeatOptions ()
575580 cfg .Link .Heartbeats .SendInterval = DefaultLinkHeartbeatSendInterval
576581 cfg .Link .Heartbeats .CloseUnresponsiveTimeout = DefaultLinkUnresponsiveTimeout
582+ cfg .Link .PayloadSenderQueueSize = DefaultLinkPayloadSenderQueueSize
583+ cfg .Link .AckSenderQueueSize = DefaultLinkAckSenderQueueSize
577584
578585 if value , found := cfgmap ["link" ]; found {
579586 if submap , ok := value .(map [interface {}]interface {}); ok {
@@ -629,6 +636,28 @@ func LoadConfigWithOptions(path string, loadIdentity bool) (*Config, error) {
629636 cfg .Link .Heartbeats = * options
630637 }
631638 }
639+
640+ if value , found := submap ["payloadSenderQueueSize" ]; found {
641+ if intVal , ok := value .(int ); ok {
642+ if intVal < 1 {
643+ return nil , fmt .Errorf ("[link/payloadSenderQueueSize] must be at least 1, got %d" , intVal )
644+ }
645+ cfg .Link .PayloadSenderQueueSize = intVal
646+ } else {
647+ return nil , fmt .Errorf ("[link/payloadSenderQueueSize] must be an integer, got %T" , value )
648+ }
649+ }
650+
651+ if value , found := submap ["ackSenderQueueSize" ]; found {
652+ if intVal , ok := value .(int ); ok {
653+ if intVal < 1 {
654+ return nil , fmt .Errorf ("[link/ackSenderQueueSize] must be at least 1, got %d" , intVal )
655+ }
656+ cfg .Link .AckSenderQueueSize = intVal
657+ } else {
658+ return nil , fmt .Errorf ("[link/ackSenderQueueSize] must be an integer, got %T" , value )
659+ }
660+ }
632661 }
633662 }
634663
0 commit comments