Class: Lumberjack::Beats::AckingProtocolV2
- Inherits:
-
Object
- Object
- Lumberjack::Beats::AckingProtocolV2
- Defined in:
- lib/lumberjack/beats/server.rb
Overview
Allow lumberjack to send partial ack back to the producer only V2 client support partial Acks
Send Ack on every 20% of the data, so with default settings every 200 events This should reduce the congestion on retransmit.
Constant Summary collapse
- ACK_RATIO =
5
Instance Method Summary collapse
- #ack?(sequence) ⇒ Boolean
- #ack_frame(sequence) ⇒ Object
-
#initialize(window_size) ⇒ AckingProtocolV2
constructor
A new instance of AckingProtocolV2.
Constructor Details
#initialize(window_size) ⇒ AckingProtocolV2
Returns a new instance of AckingProtocolV2.
572 573 574 575 |
# File 'lib/lumberjack/beats/server.rb', line 572 def initialize(window_size) @window_size = window_size @every = (window_size / ACK_RATIO).round end |
Instance Method Details
#ack?(sequence) ⇒ Boolean
577 578 579 580 581 582 583 584 585 |
# File 'lib/lumberjack/beats/server.rb', line 577 def ack?(sequence) if @window_size == sequence true elsif @every != 0 && sequence % @every == 0 true else false end end |
#ack_frame(sequence) ⇒ Object
587 588 589 |
# File 'lib/lumberjack/beats/server.rb', line 587 def ack_frame(sequence) ["2A", sequence].pack("A*N") end |