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.



448
449
450
451
# File 'lib/lumberjack/beats/server.rb', line 448

def initialize(window_size)
  @window_size = window_size
  @every = (window_size / ACK_RATIO).round
end

Instance Method Details

#ack?(sequence) ⇒ Boolean

Returns:

  • (Boolean)


453
454
455
456
457
458
459
460
461
# File 'lib/lumberjack/beats/server.rb', line 453

def ack?(sequence)
  if @window_size == sequence
    true
  elsif @every != 0 && sequence % @every == 0
    true
  else
    false
  end
end

#ack_frame(sequence) ⇒ Object



463
464
465
# File 'lib/lumberjack/beats/server.rb', line 463

def ack_frame(sequence)
  ["2A", sequence].pack("A*N")
end