Search in sources :

Example 26 with Struct

use of org.apache.kafka.common.protocol.types.Struct in project kafka by apache.

the class LeaderAndIsrRequest method toStruct.

@Override
protected Struct toStruct() {
    short version = version();
    Struct struct = new Struct(ApiKeys.LEADER_AND_ISR.requestSchema(version));
    struct.set(CONTROLLER_ID_KEY_NAME, controllerId);
    struct.set(CONTROLLER_EPOCH_KEY_NAME, controllerEpoch);
    List<Struct> partitionStatesData = new ArrayList<>(partitionStates.size());
    for (Map.Entry<TopicPartition, PartitionState> entry : partitionStates.entrySet()) {
        Struct partitionStateData = struct.instance(PARTITION_STATES_KEY_NAME);
        TopicPartition topicPartition = entry.getKey();
        partitionStateData.set(TOPIC_KEY_NAME, topicPartition.topic());
        partitionStateData.set(PARTITION_KEY_NAME, topicPartition.partition());
        PartitionState partitionState = entry.getValue();
        partitionStateData.set(CONTROLLER_EPOCH_KEY_NAME, partitionState.controllerEpoch);
        partitionStateData.set(LEADER_KEY_NAME, partitionState.leader);
        partitionStateData.set(LEADER_EPOCH_KEY_NAME, partitionState.leaderEpoch);
        partitionStateData.set(ISR_KEY_NAME, partitionState.isr.toArray());
        partitionStateData.set(ZK_VERSION_KEY_NAME, partitionState.zkVersion);
        partitionStateData.set(REPLICAS_KEY_NAME, partitionState.replicas.toArray());
        partitionStatesData.add(partitionStateData);
    }
    struct.set(PARTITION_STATES_KEY_NAME, partitionStatesData.toArray());
    List<Struct> leadersData = new ArrayList<>(liveLeaders.size());
    for (Node leader : liveLeaders) {
        Struct leaderData = struct.instance(LIVE_LEADERS_KEY_NAME);
        leaderData.set(END_POINT_ID_KEY_NAME, leader.id());
        leaderData.set(HOST_KEY_NAME, leader.host());
        leaderData.set(PORT_KEY_NAME, leader.port());
        leadersData.add(leaderData);
    }
    struct.set(LIVE_LEADERS_KEY_NAME, leadersData.toArray());
    return struct;
}
Also used : TopicPartition(org.apache.kafka.common.TopicPartition) Node(org.apache.kafka.common.Node) ArrayList(java.util.ArrayList) HashMap(java.util.HashMap) Map(java.util.Map) Struct(org.apache.kafka.common.protocol.types.Struct)

Example 27 with Struct

use of org.apache.kafka.common.protocol.types.Struct in project kafka by apache.

the class LeaderAndIsrResponse method toStruct.

@Override
protected Struct toStruct(short version) {
    Struct struct = new Struct(ApiKeys.LEADER_AND_ISR.responseSchema(version));
    List<Struct> responseDatas = new ArrayList<>(responses.size());
    for (Map.Entry<TopicPartition, Errors> response : responses.entrySet()) {
        Struct partitionData = struct.instance(PARTITIONS_KEY_NAME);
        TopicPartition partition = response.getKey();
        partitionData.set(PARTITIONS_TOPIC_KEY_NAME, partition.topic());
        partitionData.set(PARTITIONS_PARTITION_KEY_NAME, partition.partition());
        partitionData.set(PARTITIONS_ERROR_CODE_KEY_NAME, response.getValue().code());
        responseDatas.add(partitionData);
    }
    struct.set(PARTITIONS_KEY_NAME, responseDatas.toArray());
    struct.set(ERROR_CODE_KEY_NAME, error.code());
    return struct;
}
Also used : Errors(org.apache.kafka.common.protocol.Errors) TopicPartition(org.apache.kafka.common.TopicPartition) ArrayList(java.util.ArrayList) Map(java.util.Map) HashMap(java.util.HashMap) Struct(org.apache.kafka.common.protocol.types.Struct)

Example 28 with Struct

use of org.apache.kafka.common.protocol.types.Struct in project kafka by apache.

the class LeaveGroupResponse method toStruct.

@Override
public Struct toStruct(short version) {
    Struct struct = new Struct(ApiKeys.LEAVE_GROUP.responseSchema(version));
    struct.set(ERROR_CODE_KEY_NAME, error.code());
    return struct;
}
Also used : Struct(org.apache.kafka.common.protocol.types.Struct)

Example 29 with Struct

use of org.apache.kafka.common.protocol.types.Struct in project kafka by apache.

the class ListGroupsResponse method toStruct.

@Override
protected Struct toStruct(short version) {
    Struct struct = new Struct(ApiKeys.LIST_GROUPS.responseSchema(version));
    struct.set(ERROR_CODE_KEY_NAME, error.code());
    List<Struct> groupList = new ArrayList<>();
    for (Group group : groups) {
        Struct groupStruct = struct.instance(GROUPS_KEY_NAME);
        groupStruct.set(GROUP_ID_KEY_NAME, group.groupId);
        groupStruct.set(PROTOCOL_TYPE_KEY_NAME, group.protocolType);
        groupList.add(groupStruct);
    }
    struct.set(GROUPS_KEY_NAME, groupList.toArray());
    return struct;
}
Also used : ArrayList(java.util.ArrayList) Struct(org.apache.kafka.common.protocol.types.Struct)

Example 30 with Struct

use of org.apache.kafka.common.protocol.types.Struct in project kafka by apache.

the class ListOffsetRequest method toStruct.

@Override
protected Struct toStruct() {
    short version = version();
    Struct struct = new Struct(ApiKeys.LIST_OFFSETS.requestSchema(version));
    Map<TopicPartition, ?> targetTimes = partitionTimestamps == null ? offsetData : partitionTimestamps;
    Map<String, Map<Integer, Object>> topicsData = CollectionUtils.groupDataByTopic(targetTimes);
    struct.set(REPLICA_ID_KEY_NAME, replicaId);
    List<Struct> topicArray = new ArrayList<>();
    for (Map.Entry<String, Map<Integer, Object>> topicEntry : topicsData.entrySet()) {
        Struct topicData = struct.instance(TOPICS_KEY_NAME);
        topicData.set(TOPIC_KEY_NAME, topicEntry.getKey());
        List<Struct> partitionArray = new ArrayList<>();
        for (Map.Entry<Integer, Object> partitionEntry : topicEntry.getValue().entrySet()) {
            if (version == 0) {
                PartitionData offsetPartitionData = (PartitionData) partitionEntry.getValue();
                Struct partitionData = topicData.instance(PARTITIONS_KEY_NAME);
                partitionData.set(PARTITION_KEY_NAME, partitionEntry.getKey());
                partitionData.set(TIMESTAMP_KEY_NAME, offsetPartitionData.timestamp);
                partitionData.set(MAX_NUM_OFFSETS_KEY_NAME, offsetPartitionData.maxNumOffsets);
                partitionArray.add(partitionData);
            } else {
                Long timestamp = (Long) partitionEntry.getValue();
                Struct partitionData = topicData.instance(PARTITIONS_KEY_NAME);
                partitionData.set(PARTITION_KEY_NAME, partitionEntry.getKey());
                partitionData.set(TIMESTAMP_KEY_NAME, timestamp);
                partitionArray.add(partitionData);
            }
        }
        topicData.set(PARTITIONS_KEY_NAME, partitionArray.toArray());
        topicArray.add(topicData);
    }
    struct.set(TOPICS_KEY_NAME, topicArray.toArray());
    return struct;
}
Also used : ArrayList(java.util.ArrayList) Struct(org.apache.kafka.common.protocol.types.Struct) TopicPartition(org.apache.kafka.common.TopicPartition) HashMap(java.util.HashMap) Map(java.util.Map)

Aggregations

Struct (org.apache.kafka.common.protocol.types.Struct)63 ArrayList (java.util.ArrayList)32 Map (java.util.Map)22 HashMap (java.util.HashMap)19 ByteBuffer (java.nio.ByteBuffer)18 TopicPartition (org.apache.kafka.common.TopicPartition)10 Test (org.junit.Test)5 List (java.util.List)4 ByteBufferSend (org.apache.kafka.common.network.ByteBufferSend)4 Errors (org.apache.kafka.common.protocol.Errors)4 LinkedHashMap (java.util.LinkedHashMap)3 Node (org.apache.kafka.common.Node)2 Send (org.apache.kafka.common.network.Send)2 ApiKeys (org.apache.kafka.common.protocol.ApiKeys)2 ArrayOf (org.apache.kafka.common.protocol.types.ArrayOf)2 Field (org.apache.kafka.common.protocol.types.Field)2 Schema (org.apache.kafka.common.protocol.types.Schema)2 ResponseHeader (org.apache.kafka.common.requests.ResponseHeader)2 Subscription (org.apache.kafka.clients.consumer.internals.PartitionAssignor.Subscription)1 MultiSend (org.apache.kafka.common.network.MultiSend)1