class Lumberjack::Beats::AckingProtocolV1

Public Class Methods

new(window_size) click to toggle source
# File lib/lumberjack/beats/server.rb, line 428
def initialize(window_size)
  @next_ack = nil
  @window_size = window_size
end

Public Instance Methods

ack?(sequence) click to toggle source
# File lib/lumberjack/beats/server.rb, line 433
def ack?(sequence)
  # The first encoded event will contain the sequence number
  # this is needed to know when we should ack.
  @next_ack = compute_next_ack(sequence) if @next_ack.nil?
  sequence == @next_ack
end
ack_frame(sequence) click to toggle source
# File lib/lumberjack/beats/server.rb, line 440
def ack_frame(sequence)
  ["1A", sequence].pack("A*N")
end

Private Instance Methods

compute_next_ack(sequence) click to toggle source
# File lib/lumberjack/beats/server.rb, line 445
def compute_next_ack(sequence)
  (sequence + @window_size - 1) % SEQUENCE_MAX
end