Class: Lumberjack::Beats::AckingProtocolV2

Inherits:
Object
  • Object
show all
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

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

Returns:

  • (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