@Override
    public void channelRead(ChannelHandlerContext ctx, Object msg) throws Exception {

        try {

            if (msg instanceof HttpResponse) {
                response = (HttpResponse) msg;
                if (!HttpResponseStatus.OK.equals(response.getStatus())) {
                    Bomber.instance().failed.incrementAndGet();
                }
            }

            if (msg instanceof HttpContent) {
                HttpContent content = (HttpContent) msg;
                if (content.content().capacity() > 0) {
                    contentStr = new String(content.content().array());
                }
                logger.debug("http content received {}", contentStr);
            }

            if (msg instanceof LastHttpContent) {

                if (HttpResponseStatus.OK.equals(response.getStatus())) {

                    if ("\r\n".equals(contentStr)) {
                        Bomber.instance().notFound0.incrementAndGet();
                        return;
                    }

                    if ("1\r\n".equals(contentStr)) {
                        Bomber.instance().notFound1.incrementAndGet();
                        return;
                    }

                    Bomber.instance().successful.incrementAndGet();

                    int responseTime = (int) (System.currentTimeMillis() - requestBeginTime);

                    Bomber.instance().responseTime.add(responseTime);

                    synchronized (waiter) {
                        responseReceived = true;
                        waiter.notify();
                    }

                }


            }
        } catch (Exception e) {
            logger.error("ResponseClientHandler", e);
            Bomber.instance().failed.incrementAndGet();
        }

    }