Search in sources :

Example 1 with BeatsFrameException

use of org.apache.nifi.processors.beats.frame.BeatsFrameException in project nifi by apache.

the class BeatsSocketChannelHandler method processBuffer.

@Override
protected void processBuffer(final SocketChannel socketChannel, final ByteBuffer socketBuffer) throws InterruptedException, IOException {
    // get total bytes in buffer
    final int total = socketBuffer.remaining();
    final InetAddress sender = socketChannel.socket().getInetAddress();
    try {
        // go through the buffer parsing the packet command
        for (int i = 0; i < total; i++) {
            byte currByte = socketBuffer.get();
            // if we found the end of a frame, handle the frame and mark the buffer
            if (decoder.process(currByte)) {
                final List<BeatsFrame> frames = decoder.getFrames();
                for (BeatsFrame frame : frames) {
                    logger.debug("Received Beats frame with transaction {} and command {}", new Object[] { frame.getSeqNumber(), frame.getSeqNumber() });
                    // Ignore the WINDOW SIZE type frames as they contain no payload.
                    if (frame.getFrameType() != 0x57) {
                        final SocketChannelResponder responder = new SocketChannelResponder(socketChannel);
                        frameHandler.handle(frame, responder, sender.toString());
                    }
                }
                socketBuffer.mark();
            }
        }
        logger.debug("Done processing buffer");
    } catch (final BeatsFrameException rfe) {
        logger.error("Error reading Beats frames due to {}", new Object[] { rfe.getMessage() }, rfe);
        // if an invalid frame or bad data was sent then the decoder will be left in a
        // corrupted state, so lets close the connection and cause the client to re-establish
        dispatcher.completeConnection(key);
    }
}
Also used : BeatsFrame(org.apache.nifi.processors.beats.frame.BeatsFrame) SocketChannelResponder(org.apache.nifi.processor.util.listen.response.socket.SocketChannelResponder) BeatsFrameException(org.apache.nifi.processors.beats.frame.BeatsFrameException) InetAddress(java.net.InetAddress)

Example 2 with BeatsFrameException

use of org.apache.nifi.processors.beats.frame.BeatsFrameException in project nifi by apache.

the class BeatsSSLSocketChannelHandler method processBuffer.

@Override
protected void processBuffer(final SSLSocketChannel sslSocketChannel, final SocketChannel socketChannel, final int bytesRead, final byte[] buffer) throws InterruptedException, IOException {
    final InetAddress sender = socketChannel.socket().getInetAddress();
    try {
        // go through the buffer parsing the packet command
        for (int i = 0; i < bytesRead; i++) {
            byte currByte = buffer[i];
            // if we found the end of a frame, handle the frame and mark the buffer
            if (decoder.process(currByte)) {
                final List<BeatsFrame> frames = decoder.getFrames();
                // A list of events has been generated
                for (BeatsFrame frame : frames) {
                    logger.debug("Received Beats frame with transaction {} and command {}", new Object[] { frame.getSeqNumber(), frame.getSeqNumber() });
                    // Ignore the WINDOWS type frames as they contain no payload.
                    if (frame.getFrameType() != 0x57) {
                        final SSLSocketChannelResponder responder = new SSLSocketChannelResponder(socketChannel, sslSocketChannel);
                        frameHandler.handle(frame, responder, sender.toString());
                    }
                }
            }
        }
        logger.debug("Done processing buffer");
    } catch (final BeatsFrameException rfe) {
        logger.error("Error reading Beats frames due to {}", new Object[] { rfe.getMessage() }, rfe);
        // if an invalid frame or bad data was sent then the decoder will be left in a
        // corrupted state, so lets close the connection and cause the client to re-establish
        dispatcher.completeConnection(key);
    }
}
Also used : BeatsFrame(org.apache.nifi.processors.beats.frame.BeatsFrame) BeatsFrameException(org.apache.nifi.processors.beats.frame.BeatsFrameException) SSLSocketChannelResponder(org.apache.nifi.processor.util.listen.response.socket.SSLSocketChannelResponder) InetAddress(java.net.InetAddress)

Aggregations

InetAddress (java.net.InetAddress)2 BeatsFrame (org.apache.nifi.processors.beats.frame.BeatsFrame)2 BeatsFrameException (org.apache.nifi.processors.beats.frame.BeatsFrameException)2 SSLSocketChannelResponder (org.apache.nifi.processor.util.listen.response.socket.SSLSocketChannelResponder)1 SocketChannelResponder (org.apache.nifi.processor.util.listen.response.socket.SocketChannelResponder)1