Example usage for io.netty.buffer ByteBuf writeBytes

List of usage examples for io.netty.buffer ByteBuf writeBytes

Introduction

In this page you can find the example usage for io.netty.buffer ByteBuf writeBytes.

Prototype

public abstract ByteBuf writeBytes(ByteBuffer src);

Source Link

Document

Transfers the specified source buffer's data to this buffer starting at the current writerIndex until the source buffer's position reaches its limit, and increases the writerIndex by the number of the transferred bytes.

Usage

From source file:com.necla.simba.server.gateway.server.frontend.FrontendFrameDecoder.java

License:Apache License

private ByteBuf decompress(ChannelHandlerContext ctx, ByteBuf frame) throws Exception {
    int readableBytes = frame.readableBytes();
    if (frame.hasArray()) {
        inflater.setInput(frame.array(), 0, readableBytes);
    } else {//  w ww .  j a v  a 2s.  co m
        byte[] array = new byte[frame.readableBytes()];
        frame.getBytes(0, array);
        inflater.setInput(array);
    }
    int totalLength = 0;
    List<ByteBuf> all = new LinkedList<ByteBuf>();
    int multiplier = 2;
    alldone: while (true) {

        int maxOutputLength = inflater.getRemaining() * multiplier;
        // multiplier keeps increasing, so we will keep picking
        // larger and larger buffers the more times we have to loop
        // around, i.e., the more we realize that the data was very
        // heavily compressed, the larger our buffers are going to be.
        multiplier += 1;
        ByteBuf decompressed = ctx.alloc().heapBuffer(maxOutputLength);
        while (!inflater.needsInput()) {
            byte[] outArray = decompressed.array();
            int outIndex = decompressed.arrayOffset() + decompressed.writerIndex();
            int length = outArray.length - outIndex;
            if (length == 0)
                break;
            try {
                //LOG.debug("here1");
                int outputLength = inflater.inflate(outArray, outIndex, length);
                totalLength += outputLength;
                //LOG.debug("here2");

                if (outputLength > 0)
                    decompressed.writerIndex(decompressed.writerIndex() + outputLength);
            } catch (DataFormatException e) {
                throw new Exception("Could not inflate" + e.getMessage());
            }
            if (inflater.finished()) {
                all.add(decompressed);
                break alldone;
            }

        }
        all.add(decompressed);
    }
    inflater.reset();
    if (all.size() == 1)
        return all.get(0);
    else {
        ByteBuf allData = ctx.alloc().heapBuffer(totalLength);
        for (ByteBuf b : all) {
            //LOG.debug("capacity=" + allData.capacity());
            allData.writeBytes(b);
            b.release();
        }
        return allData;
    }

}

From source file:com.neoba.FacebookUserCreateMessage.java

ByteBuf result() throws JSONException {
    ByteBuf reply = isnametaken ? buffer(6) : buffer(6 + suggestionssize);
    reply.writeByte(Constants.VERSION);/*  w  w  w . j a  v a 2s  . c  o m*/
    reply.writeByte(Constants.USER_CREATE);
    if (!isnametaken) {
        reply.writeInt(Constants.W_SUCCESS);
        reply.writeInt(fuser.getFriends().length());
        for (int i = 0; i < fuser.getFriends().length(); i++) {
            reply.writeLong(Long.parseLong(fuser.getFriends().getJSONObject(i).getString("id")));
            reply.writeInt(fuser.getFriends().getJSONObject(i).getString("username").length());
            reply.writeBytes(fuser.getFriends().getJSONObject(i).getString("username").getBytes());
        }

    } else
        reply.writeInt(Constants.W_ERR_DUP_USERNAME);
    return reply;
}

From source file:com.netflix.client.netty.udp.HelloUdpServer.java

License:Apache License

public UdpServer<DatagramPacket, DatagramPacket> createServer() {
    UdpServer<DatagramPacket, DatagramPacket> server = RxNetty.createUdpServer(port,
            new ConnectionHandler<DatagramPacket, DatagramPacket>() {
                @Override//from  w  w  w.jav a 2s  .c  om
                public Observable<Void> handle(
                        final ObservableConnection<DatagramPacket, DatagramPacket> newConnection) {
                    return newConnection.getInput().flatMap(new Func1<DatagramPacket, Observable<Void>>() {
                        @Override
                        public Observable<Void> call(final DatagramPacket received) {
                            return Observable.interval(delay, TimeUnit.MILLISECONDS).take(1)
                                    .flatMap(new Func1<Long, Observable<Void>>() {
                                        @Override
                                        public Observable<Void> call(Long aLong) {
                                            InetSocketAddress sender = received.sender();
                                            System.out.println("Received datagram. Sender: " + sender);
                                            ByteBuf data = newConnection.getChannelHandlerContext().alloc()
                                                    .buffer(WELCOME_MSG_BYTES.length);
                                            data.writeBytes(WELCOME_MSG_BYTES);
                                            return newConnection
                                                    .writeAndFlush(new DatagramPacket(data, sender));
                                        }
                                    });
                        }
                    });
                }
            });
    System.out.println("UDP hello server started at port: " + port);
    return server;
}

From source file:com.netflix.hystrix.contrib.rxnetty.metricsstream.HystrixMetricsStreamHandler.java

License:Apache License

@SuppressWarnings("unchecked")
private void writeMetric(String json, HttpServerResponse<O> response) {
    byte[] bytes = json.getBytes(Charset.defaultCharset());
    ByteBuf byteBuf = UnpooledByteBufAllocator.DEFAULT.buffer(bytes.length + EXTRA_SPACE);
    byteBuf.writeBytes(HEADER);
    byteBuf.writeBytes(bytes);/* ww w.  j a  v  a2  s . com*/
    byteBuf.writeBytes(FOOTER);
    response.writeAndFlush((O) byteBuf);
}

From source file:com.netflix.ribbon.examples.rx.common.RecommendationServiceFallbackHandler.java

License:Apache License

@Override
public Observable<ByteBuf> getFallback(HystrixExecutableInfo<?> hystrixInfo,
        Map<String, Object> requestProperties) {
    byte[] bytes = Movie.ORANGE_IS_THE_NEW_BLACK.toString().getBytes(Charset.defaultCharset());
    ByteBuf byteBuf = UnpooledByteBufAllocator.DEFAULT.buffer(bytes.length);
    byteBuf.writeBytes(bytes);
    return Observable.just(byteBuf);
}

From source file:com.netflix.ribbon.examples.rx.common.RxMovieTransformer.java

License:Apache License

@Override
public ByteBuf call(Movie movie, ByteBufAllocator byteBufAllocator) {
    byte[] bytes = movie.toString().getBytes(Charset.defaultCharset());
    ByteBuf byteBuf = byteBufAllocator.buffer(bytes.length);
    byteBuf.writeBytes(bytes);
    return byteBuf;
}

From source file:com.netflix.ribbon.examples.rx.RxMovieServer.java

License:Apache License

private Observable<Void> handleRecommendationsByUserId(HttpServerRequest<ByteBuf> request,
        HttpServerResponse<ByteBuf> response) {
    System.out.println("HTTP request -> recommendations by user id request: " + request.getPath());
    final String userId = userIdFromPath(request.getPath());
    if (userId == null) {
        response.setStatus(HttpResponseStatus.BAD_REQUEST);
        return response.close();
    }// w  w w  . j a va  2 s  . c o m
    if (!userRecommendations.containsKey(userId)) {
        response.setStatus(HttpResponseStatus.NOT_FOUND);
        return response.close();
    }

    StringBuilder builder = new StringBuilder();
    for (String movieId : userRecommendations.get(userId)) {
        System.out.println("    returning: " + movies.get(movieId));
        builder.append(movies.get(movieId)).append('\n');
    }

    ByteBuf byteBuf = UnpooledByteBufAllocator.DEFAULT.buffer();
    byteBuf.writeBytes(builder.toString().getBytes(Charset.defaultCharset()));

    response.write(byteBuf);
    return response.close();
}

From source file:com.netflix.ribbon.examples.rx.RxMovieServer.java

License:Apache License

private Observable<Void> handleRecommendationsBy(HttpServerRequest<ByteBuf> request,
        HttpServerResponse<ByteBuf> response) {
    System.out.println(format("HTTP request -> recommendations by multiple criteria: %s?%s", request.getPath(),
            request.getQueryString()));//w w w . j  ava2s .co m
    List<String> category = request.getQueryParameters().get("category");
    List<String> ageGroup = request.getQueryParameters().get("ageGroup");
    if (category.isEmpty() || ageGroup.isEmpty()) {
        response.setStatus(HttpResponseStatus.BAD_REQUEST);
        return response.close();
    }

    boolean any = false;
    StringBuilder builder = new StringBuilder();
    for (Movie movie : movies.values()) {
        if (movie.getCategory().equals(category.get(0)) && movie.getAgeGroup().equals(ageGroup.get(0))) {
            System.out.println("    returning: " + movie);
            builder.append(movie).append('\n');
            any = true;
        }
    }
    if (!any) {
        System.out.println("No movie matched the given criteria:");
        for (Movie movie : movies.values()) {
            System.out.print("    ");
            System.out.println(movie);
        }
    }

    ByteBuf byteBuf = UnpooledByteBufAllocator.DEFAULT.buffer();
    byteBuf.writeBytes(builder.toString().getBytes(Charset.defaultCharset()));

    response.write(byteBuf);
    return response.close();
}

From source file:com.netflix.ribbon.transport.netty.udp.HelloUdpServer.java

License:Apache License

public UdpServer<DatagramPacket, DatagramPacket> createServer() {
    UdpServer<DatagramPacket, DatagramPacket> server = RxNetty.createUdpServer(port,
            new ConnectionHandler<DatagramPacket, DatagramPacket>() {
                @Override//from  ww w. j ava  2  s  . com
                public Observable<Void> handle(
                        final ObservableConnection<DatagramPacket, DatagramPacket> newConnection) {
                    return newConnection.getInput().flatMap(new Func1<DatagramPacket, Observable<Void>>() {
                        @Override
                        public Observable<Void> call(final DatagramPacket received) {
                            return Observable.interval(delay, TimeUnit.MILLISECONDS).take(1)
                                    .flatMap(new Func1<Long, Observable<Void>>() {
                                        @Override
                                        public Observable<Void> call(Long aLong) {
                                            InetSocketAddress sender = received.sender();
                                            System.out.println("Received datagram. Sender: " + sender);
                                            ByteBuf data = newConnection.getChannel().alloc()
                                                    .buffer(WELCOME_MSG_BYTES.length);
                                            data.writeBytes(WELCOME_MSG_BYTES);
                                            return newConnection
                                                    .writeAndFlush(new DatagramPacket(data, sender));
                                        }
                                    });
                        }
                    });
                }
            });
    System.out.println("UDP hello server started at port: " + port);
    return server;
}

From source file:com.netty.grpc.proxy.demo.handler.GrpcProxyBackendHandler.java

License:Apache License

@Override
public void channelRead(final ChannelHandlerContext ctx, Object msg) {
    ByteBuf buf = (ByteBuf) msg;//from   w ww . j av  a  2 s  .c  o m
    System.out.println("channelRead:" + ByteBufUtil.hexDump((buf)));
    while (buf.readableBytes() > 0) {

        int payload = buf.readUnsignedMedium();
        int frameType = buf.readByte();
        Http2Flags flags = new Http2Flags(buf.readUnsignedByte());
        int streamId = readUnsignedInt(buf);
        ByteBuf payloadBuf = buf.readBytes(payload);
        ByteBuf copy = ctx.alloc().buffer();
        System.out.println("frame_type:" + frameType + "," + ByteBufUtil.hexDump((payloadBuf)));
        switch (frameType) {
        case Http2FrameTypes.SETTINGS:
            handleSettingFrame(ctx, flags);
            break;
        case Http2FrameTypes.WINDOW_UPDATE:
            handleWindowsUpdateFrame(ctx);
            break;
        case Http2FrameTypes.HEADERS:

            copy.writeMedium(payload);
            copy.writeByte(frameType);
            copy.writeByte(flags.value());
            copy.writeInt(streamId);
            copy.writeBytes(payloadBuf);
            forward(ctx, copy);
            break;
        case Http2FrameTypes.DATA:
            copy.writeMedium(payload);
            copy.writeByte(frameType);
            copy.writeByte(flags.value());
            copy.writeInt(streamId);
            copy.writeBytes(payloadBuf);
            forward(ctx, copy);
            break;
        default:
            break;

        }
    }

}