2017-07-24 2 views
1

J'essaie de savoir quand utiliser Unpooled dans Netty. Quelques exemples montrent enveloppé l'octet [] dans Unpooled.wrappedBuffer, et quelques exemples montrent quequand utiliser Unpooled dans netty

ctx.writeAndFlush(bytes); // where bytes is just byte[] 

est-il une ligne directrice sur le moment d'utiliser non mis en commun?

Répondre

0

Le passage d'un byte[] à une méthode Netty write équivaut à passer un ByteBuf non groupé. Nous pouvons voir cela dans le code source pour ByteArrayEncoder, qui appelle en interne Unpooled#wrappedBuffer(byte[]):

@Override 
protected void encode(ChannelHandlerContext ctx, byte[] msg, List<Object> out) throws Exception { 
    out.add(Unpooled.wrappedBuffer(msg)); 
} 

Par conséquent, il n'y a pas de différence sous-jacente entre le passage byte[] et passer un ByteBuf vous créé en appelant Unpooled#wrappedBuffer(byte[]). Ce dernier est peut-être plus explicite lorsqu'il s'agit d'appeler l'utilisation d'un tampon non-poolé, dans le cas où l'utilisation de pooled vs unpooled est significative dans le contexte d'une application particulière. Si vous avez besoin de plus de détails sur les buffers mis en pool, la page wiki de Netty "New and noteworthy in 4.0" a une bonne introduction dans la section Pooled buffers.