Class: Kafka::Protocol::ListOffsetRequest

Inherits:
Object
  • Object
show all
Defined in:
lib/kafka/protocol/list_offset_request.rb

Overview

A request to list the available offsets for a set of topics/partitions.

API Specification

OffsetRequest => ReplicaId [TopicName [Partition Time MaxNumberOfOffsets]]
  ReplicaId => int32
  IsolationLevel => int8
  TopicName => string
  Partition => int32
  Time => int64

Constant Summary collapse

ISOLATION_READ_UNCOMMITTED =
0
ISOLATION_READ_COMMITTED =
1

Instance Method Summary collapse

Constructor Details

#initialize(topics:) ⇒ ListOffsetRequest

Returns a new instance of ListOffsetRequest

Parameters:

  • topics (Hash)

21
22
23
24
# File 'lib/kafka/protocol/list_offset_request.rb', line 21

def initialize(topics:)
  @replica_id = REPLICA_ID
  @topics = topics
end

Instance Method Details

#api_keyObject


30
31
32
# File 'lib/kafka/protocol/list_offset_request.rb', line 30

def api_key
  LIST_OFFSET_API
end

#api_versionObject


26
27
28
# File 'lib/kafka/protocol/list_offset_request.rb', line 26

def api_version
  2
end

#encode(encoder) ⇒ Object


38
39
40
41
42
43
44
45
46
47
48
49
50
# File 'lib/kafka/protocol/list_offset_request.rb', line 38

def encode(encoder)
  encoder.write_int32(@replica_id)
  encoder.write_int8(ISOLATION_READ_COMMITTED)

  encoder.write_array(@topics) do |topic, partitions|
    encoder.write_string(topic)

    encoder.write_array(partitions) do |partition|
      encoder.write_int32(partition.fetch(:partition))
      encoder.write_int64(partition.fetch(:time))
    end
  end
end

#response_classObject


34
35
36
# File 'lib/kafka/protocol/list_offset_request.rb', line 34

def response_class
  Protocol::ListOffsetResponse
end