Search in sources :

Example 16 with Send

use of org.apache.kafka.common.network.Send in project kafka by apache.

the class FetchResponse method toSend.

public Send toSend(Struct responseStruct, int throttleTimeMs, String dest, RequestHeader requestHeader) {
    Struct responseHeader = new ResponseHeader(requestHeader.correlationId()).toStruct();
    // write the total size and the response header
    ByteBuffer buffer = ByteBuffer.allocate(responseHeader.sizeOf() + 4);
    buffer.putInt(responseHeader.sizeOf() + responseStruct.sizeOf());
    responseHeader.writeTo(buffer);
    buffer.rewind();
    List<Send> sends = new ArrayList<>();
    sends.add(new ByteBufferSend(dest, buffer));
    addResponseData(responseStruct, throttleTimeMs, dest, sends);
    return new MultiSend(dest, sends);
}
Also used : MultiSend(org.apache.kafka.common.network.MultiSend) ByteBufferSend(org.apache.kafka.common.network.ByteBufferSend) ArrayList(java.util.ArrayList) ByteBuffer(java.nio.ByteBuffer) Struct(org.apache.kafka.common.protocol.types.Struct) ByteBufferSend(org.apache.kafka.common.network.ByteBufferSend) MultiSend(org.apache.kafka.common.network.MultiSend) Send(org.apache.kafka.common.network.Send)

Example 17 with Send

use of org.apache.kafka.common.network.Send in project apache-kafka-on-k8s by banzaicloud.

the class SaslAuthenticatorTest method sendKafkaRequestReceiveResponse.

private AbstractResponse sendKafkaRequestReceiveResponse(String node, ApiKeys apiKey, AbstractRequest request) throws IOException {
    RequestHeader header = new RequestHeader(apiKey, request.version(), "someclient", nextCorrelationId++);
    Send send = request.toSend(node, header);
    selector.send(send);
    ByteBuffer responseBuffer = waitForResponse();
    return NetworkClient.parseResponse(responseBuffer, header);
}
Also used : RequestHeader(org.apache.kafka.common.requests.RequestHeader) ByteBuffer(java.nio.ByteBuffer) Send(org.apache.kafka.common.network.Send) NetworkSend(org.apache.kafka.common.network.NetworkSend)

Example 18 with Send

use of org.apache.kafka.common.network.Send in project apache-kafka-on-k8s by banzaicloud.

the class MockSelector method completeDelayedReceives.

private void completeDelayedReceives() {
    for (Send completedSend : completedSends) {
        Iterator<DelayedReceive> delayedReceiveIterator = delayedReceives.iterator();
        while (delayedReceiveIterator.hasNext()) {
            DelayedReceive delayedReceive = delayedReceiveIterator.next();
            if (delayedReceive.source().equals(completedSend.destination())) {
                completedReceives.add(delayedReceive.receive());
                delayedReceiveIterator.remove();
            }
        }
    }
}
Also used : Send(org.apache.kafka.common.network.Send) NetworkSend(org.apache.kafka.common.network.NetworkSend)

Example 19 with Send

use of org.apache.kafka.common.network.Send in project apache-kafka-on-k8s by banzaicloud.

the class FetchResponse method toSend.

@Override
protected Send toSend(String dest, ResponseHeader responseHeader, short apiVersion) {
    Struct responseHeaderStruct = responseHeader.toStruct();
    Struct responseBodyStruct = toStruct(apiVersion);
    // write the total size and the response header
    ByteBuffer buffer = ByteBuffer.allocate(responseHeaderStruct.sizeOf() + 4);
    buffer.putInt(responseHeaderStruct.sizeOf() + responseBodyStruct.sizeOf());
    responseHeaderStruct.writeTo(buffer);
    buffer.rewind();
    Queue<Send> sends = new ArrayDeque<>();
    sends.add(new ByteBufferSend(dest, buffer));
    addResponseData(responseBodyStruct, throttleTimeMs, dest, sends);
    return new MultiSend(dest, sends);
}
Also used : MultiSend(org.apache.kafka.common.network.MultiSend) ByteBufferSend(org.apache.kafka.common.network.ByteBufferSend) ByteBuffer(java.nio.ByteBuffer) ArrayDeque(java.util.ArrayDeque) Struct(org.apache.kafka.common.protocol.types.Struct) MultiSend(org.apache.kafka.common.network.MultiSend) Send(org.apache.kafka.common.network.Send) ByteBufferSend(org.apache.kafka.common.network.ByteBufferSend)

Example 20 with Send

use of org.apache.kafka.common.network.Send in project apache-kafka-on-k8s by banzaicloud.

the class NetworkClient method doSend.

private void doSend(ClientRequest clientRequest, boolean isInternalRequest, long now, AbstractRequest request) {
    String nodeId = clientRequest.destination();
    RequestHeader header = clientRequest.makeHeader(request.version());
    if (log.isDebugEnabled()) {
        int latestClientVersion = clientRequest.apiKey().latestVersion();
        if (header.apiVersion() == latestClientVersion) {
            log.trace("Sending {} {} with correlation id {} to node {}", clientRequest.apiKey(), request, clientRequest.correlationId(), nodeId);
        } else {
            log.debug("Using older server API v{} to send {} {} with correlation id {} to node {}", header.apiVersion(), clientRequest.apiKey(), request, clientRequest.correlationId(), nodeId);
        }
    }
    Send send = request.toSend(nodeId, header);
    InFlightRequest inFlightRequest = new InFlightRequest(header, clientRequest.createdTimeMs(), clientRequest.destination(), clientRequest.callback(), clientRequest.expectResponse(), isInternalRequest, request, send, now);
    this.inFlightRequests.add(inFlightRequest);
    selector.send(inFlightRequest.send);
}
Also used : RequestHeader(org.apache.kafka.common.requests.RequestHeader) Send(org.apache.kafka.common.network.Send)

Aggregations

Send (org.apache.kafka.common.network.Send)24 ByteBuffer (java.nio.ByteBuffer)16 Test (org.junit.jupiter.api.Test)8 Struct (org.apache.kafka.common.protocol.types.Struct)5 ByteBufferSend (org.apache.kafka.common.network.ByteBufferSend)4 NetworkSend (org.apache.kafka.common.network.NetworkSend)4 ByteBufferAccessor (org.apache.kafka.common.protocol.ByteBufferAccessor)3 ByteBufferChannel (org.apache.kafka.common.requests.ByteBufferChannel)3 RequestHeader (org.apache.kafka.common.requests.RequestHeader)3 Benchmark (org.openjdk.jmh.annotations.Benchmark)3 ListenerName (org.apache.kafka.common.network.ListenerName)2 MultiSend (org.apache.kafka.common.network.MultiSend)2 MemoryRecords (org.apache.kafka.common.record.MemoryRecords)2 UnalignedMemoryRecords (org.apache.kafka.common.record.UnalignedMemoryRecords)2 Test (org.junit.Test)2 ArrayDeque (java.util.ArrayDeque)1 ArrayList (java.util.ArrayList)1 LinkedList (java.util.LinkedList)1 ApiVersionsResponseData (org.apache.kafka.common.message.ApiVersionsResponseData)1 ApiVersionCollection (org.apache.kafka.common.message.ApiVersionsResponseData.ApiVersionCollection)1