Search in sources :

Example 1 with ReadHandler

use of com.hazelcast.internal.networking.ReadHandler in project hazelcast by hazelcast.

the class ClientSocketReaderInitializer method init.

@Override
public void init(final ClientConnection connection, SocketReader reader) throws IOException {
    reader.initInputBuffer(IOUtil.newByteBuffer(bufferSize, direct));
    ReadHandler readHandler = new ClientMessageReadHandler(reader.getNormalFramesReadCounter(), new ClientMessageReadHandler.MessageHandler() {

        private final ClientConnectionManager connectionManager = connection.getConnectionManager();

        @Override
        public void handleMessage(ClientMessage message) {
            connectionManager.handleClientMessage(message, connection);
        }
    });
    reader.initReadHandler(readHandler);
}
Also used : ClientMessageReadHandler(com.hazelcast.client.impl.protocol.util.ClientMessageReadHandler) ClientMessageReadHandler(com.hazelcast.client.impl.protocol.util.ClientMessageReadHandler) ReadHandler(com.hazelcast.internal.networking.ReadHandler) ClientMessage(com.hazelcast.client.impl.protocol.ClientMessage) ClientConnectionManager(com.hazelcast.client.connection.ClientConnectionManager)

Example 2 with ReadHandler

use of com.hazelcast.internal.networking.ReadHandler in project hazelcast by hazelcast.

the class SocketReaderInitializerImpl method init.

@Override
public void init(TcpIpConnection connection, SocketReader reader) throws IOException {
    TcpIpConnectionManager connectionManager = connection.getConnectionManager();
    IOService ioService = connectionManager.getIoService();
    ByteBuffer protocolBuffer = reader.getProtocolBuffer();
    SocketChannelWrapper socketChannel = reader.getSocketChannel();
    int readBytes = socketChannel.read(protocolBuffer);
    if (readBytes == -1) {
        throw new EOFException("Could not read protocol type!");
    }
    if (readBytes == 0 && connectionManager.isSSLEnabled()) {
        // when using SSL, we can read 0 bytes since data read from socket can be handshake frames.
        return;
    }
    if (protocolBuffer.hasRemaining()) {
        // we have not yet received all protocol bytes
        return;
    }
    ReadHandler readHandler;
    String protocol = bytesToString(protocolBuffer.array());
    SocketWriter socketWriter = connection.getSocketWriter();
    if (CLUSTER.equals(protocol)) {
        initInputBuffer(connection, reader, ioService.getSocketReceiveBufferSize());
        connection.setType(MEMBER);
        socketWriter.setProtocol(CLUSTER);
        readHandler = ioService.createReadHandler(connection);
    } else if (CLIENT_BINARY_NEW.equals(protocol)) {
        initInputBuffer(connection, reader, ioService.getSocketClientReceiveBufferSize());
        socketWriter.setProtocol(CLIENT_BINARY_NEW);
        readHandler = new ClientReadHandler(reader.getNormalFramesReadCounter(), connection, ioService);
    } else {
        ByteBuffer inputBuffer = initInputBuffer(connection, reader, ioService.getSocketReceiveBufferSize());
        socketWriter.setProtocol(TEXT);
        inputBuffer.put(protocolBuffer.array());
        readHandler = new TextReadHandler(connection);
        connectionManager.incrementTextConnections();
    }
    if (readHandler == null) {
        throw new IOException("Could not initialize ReadHandler!");
    }
    reader.initReadHandler(readHandler);
}
Also used : IOService(com.hazelcast.nio.IOService) SocketChannelWrapper(com.hazelcast.internal.networking.SocketChannelWrapper) TextReadHandler(com.hazelcast.nio.ascii.TextReadHandler) ReadHandler(com.hazelcast.internal.networking.ReadHandler) EOFException(java.io.EOFException) StringUtil.bytesToString(com.hazelcast.util.StringUtil.bytesToString) IOException(java.io.IOException) SocketWriter(com.hazelcast.internal.networking.SocketWriter) TextReadHandler(com.hazelcast.nio.ascii.TextReadHandler) ByteBuffer(java.nio.ByteBuffer) IOUtil.newByteBuffer(com.hazelcast.nio.IOUtil.newByteBuffer)

Aggregations

ReadHandler (com.hazelcast.internal.networking.ReadHandler)2 ClientConnectionManager (com.hazelcast.client.connection.ClientConnectionManager)1 ClientMessage (com.hazelcast.client.impl.protocol.ClientMessage)1 ClientMessageReadHandler (com.hazelcast.client.impl.protocol.util.ClientMessageReadHandler)1 SocketChannelWrapper (com.hazelcast.internal.networking.SocketChannelWrapper)1 SocketWriter (com.hazelcast.internal.networking.SocketWriter)1 IOService (com.hazelcast.nio.IOService)1 IOUtil.newByteBuffer (com.hazelcast.nio.IOUtil.newByteBuffer)1 TextReadHandler (com.hazelcast.nio.ascii.TextReadHandler)1 StringUtil.bytesToString (com.hazelcast.util.StringUtil.bytesToString)1 EOFException (java.io.EOFException)1 IOException (java.io.IOException)1 ByteBuffer (java.nio.ByteBuffer)1