Java 类io.netty.channel.RecvByteBufAllocator 实例源码
项目:netty4.0.27Learn
文件:NioDatagramChannel.java
@Override
protected int doReadMessages(List<Object> buf) throws Exception {
DatagramChannel ch = javaChannel();
DatagramChannelConfig config = config();
RecvByteBufAllocator.Handle allocHandle = this.allocHandle;
if (allocHandle == null) {
this.allocHandle = allocHandle = config.getRecvByteBufAllocator().newHandle();
}
ByteBuf data = allocHandle.allocate(config.getAllocator());
boolean free = true;
try {
ByteBuffer nioData = data.internalNioBuffer(data.writerIndex(), data.writableBytes());
int pos = nioData.position();
InetSocketAddress remoteAddress = (InetSocketAddress) ch.receive(nioData);
if (remoteAddress == null) {
return 0;
}
int readBytes = nioData.position() - pos;
data.writerIndex(data.writerIndex() + readBytes);
allocHandle.record(readBytes);
buf.add(new DatagramPacket(data, localAddress(), remoteAddress));
free = false;
return 1;
} catch (Throwable cause) {
PlatformDependent.throwException(cause);
return -1;
} finally {
if (free) {
data.release();
}
}
}
项目:netty4.0.27Learn
文件:NioSctpChannel.java
@Override
protected int doReadMessages(List<Object> buf) throws Exception {
SctpChannel ch = javaChannel();
RecvByteBufAllocator.Handle allocHandle = this.allocHandle;
if (allocHandle == null) {
this.allocHandle = allocHandle = config().getRecvByteBufAllocator().newHandle();
}
ByteBuf buffer = allocHandle.allocate(config().getAllocator());
boolean free = true;
try {
ByteBuffer data = buffer.internalNioBuffer(buffer.writerIndex(), buffer.writableBytes());
int pos = data.position();
MessageInfo messageInfo = ch.receive(data, null, notificationHandler);
if (messageInfo == null) {
return 0;
}
buf.add(new SctpMessage(messageInfo, buffer.writerIndex(buffer.writerIndex() + data.position() - pos)));
free = false;
return 1;
} catch (Throwable cause) {
PlatformDependent.throwException(cause);
return -1;
} finally {
int bytesRead = buffer.readableBytes();
allocHandle.record(bytesRead);
if (free) {
buffer.release();
}
}
}
项目:netty4study
文件:NioDatagramChannel.java
@Override
protected int doReadMessages(List<Object> buf) throws Exception {
DatagramChannel ch = javaChannel();
DatagramChannelConfig config = config();
RecvByteBufAllocator.Handle allocHandle = this.allocHandle;
if (allocHandle == null) {
this.allocHandle = allocHandle = config.getRecvByteBufAllocator().newHandle();
}
ByteBuf data = allocHandle.allocate(config.getAllocator());
boolean free = true;
try {
ByteBuffer nioData = data.internalNioBuffer(data.writerIndex(), data.writableBytes());
int pos = nioData.position();
InetSocketAddress remoteAddress = (InetSocketAddress) ch.receive(nioData);
if (remoteAddress == null) {
return 0;
}
int readBytes = nioData.position() - pos;
data.writerIndex(data.writerIndex() + readBytes);
allocHandle.record(readBytes);
buf.add(new DatagramPacket(data, localAddress(), remoteAddress));
free = false;
return 1;
} catch (Throwable cause) {
PlatformDependent.throwException(cause);
return -1;
} finally {
if (free) {
data.release();
}
}
}
项目:netty4study
文件:NioSctpChannel.java
@Override
protected int doReadMessages(List<Object> buf) throws Exception {
SctpChannel ch = javaChannel();
RecvByteBufAllocator.Handle allocHandle = this.allocHandle;
if (allocHandle == null) {
this.allocHandle = allocHandle = config().getRecvByteBufAllocator().newHandle();
}
ByteBuf buffer = allocHandle.allocate(config().getAllocator());
boolean free = true;
try {
ByteBuffer data = buffer.internalNioBuffer(buffer.writerIndex(), buffer.writableBytes());
int pos = data.position();
MessageInfo messageInfo = ch.receive(data, null, notificationHandler);
if (messageInfo == null) {
return 0;
}
buf.add(new SctpMessage(messageInfo, buffer.writerIndex(buffer.writerIndex() + (data.position() - pos))));
free = false;
return 1;
} catch (Throwable cause) {
PlatformDependent.throwException(cause);
return -1;
} finally {
int bytesRead = buffer.readableBytes();
allocHandle.record(bytesRead);
if (free) {
buffer.release();
}
}
}
项目:netty-netty-5.0.0.Alpha1
文件:NioDatagramChannel.java
@Override
protected int doReadMessages(List<Object> buf) throws Exception {
DatagramChannel ch = javaChannel();
DatagramChannelConfig config = config();
RecvByteBufAllocator.Handle allocHandle = this.allocHandle;
if (allocHandle == null) {
this.allocHandle = allocHandle = config.getRecvByteBufAllocator().newHandle();
}
ByteBuf data = allocHandle.allocate(config.getAllocator());
boolean free = true;
try {
ByteBuffer nioData = data.internalNioBuffer(data.writerIndex(), data.writableBytes());
int pos = nioData.position();
InetSocketAddress remoteAddress = (InetSocketAddress) ch.receive(nioData);
if (remoteAddress == null) {
return 0;
}
int readBytes = nioData.position() - pos;
data.writerIndex(data.writerIndex() + readBytes);
allocHandle.record(readBytes);
buf.add(new DatagramPacket(data, localAddress(), remoteAddress));
free = false;
return 1;
} catch (Throwable cause) {
PlatformDependent.throwException(cause);
return -1;
} finally {
if (free) {
data.release();
}
}
}
项目:netty-netty-5.0.0.Alpha1
文件:NioSctpChannel.java
@Override
protected int doReadMessages(List<Object> buf) throws Exception {
SctpChannel ch = javaChannel();
RecvByteBufAllocator.Handle allocHandle = this.allocHandle;
if (allocHandle == null) {
this.allocHandle = allocHandle = config().getRecvByteBufAllocator().newHandle();
}
ByteBuf buffer = allocHandle.allocate(config().getAllocator());
boolean free = true;
try {
ByteBuffer data = buffer.internalNioBuffer(buffer.writerIndex(), buffer.writableBytes());
int pos = data.position();
MessageInfo messageInfo = ch.receive(data, null, notificationHandler);
if (messageInfo == null) {
return 0;
}
buf.add(new SctpMessage(messageInfo, buffer.writerIndex(buffer.writerIndex() + (data.position() - pos))));
free = false;
return 1;
} catch (Throwable cause) {
PlatformDependent.throwException(cause);
return -1;
} finally {
int bytesRead = buffer.readableBytes();
allocHandle.record(bytesRead);
if (free) {
buffer.release();
}
}
}
项目:kcp-netty
文件:UkcpClientChannelConfig.java
@Override
UkcpClientChannelConfig setRecvByteBufAllocator(RecvByteBufAllocator allocator);
项目:kcp-netty
文件:UkcpServerChannelConfig.java
@Override
UkcpServerChannelConfig setRecvByteBufAllocator(RecvByteBufAllocator allocator);
项目:UdpServerSocketChannel
文件:NioUdpServerChannel.java
@SuppressWarnings("deprecation")
@Override
protected int doReadMessages(List<Object> list) throws Exception {
DatagramChannel javaChannel = javaChannel();
RecvByteBufAllocator.Handle allocatorHandle = unsafe().recvBufAllocHandle();
ByteBuf buffer = allocatorHandle.allocate(config.getAllocator());
allocatorHandle.attemptedBytesRead(buffer.writableBytes());
boolean freeBuffer = true;
try {
//read message
ByteBuffer nioBuffer = buffer.internalNioBuffer(buffer.writerIndex(), buffer.writableBytes());
int nioPos = nioBuffer.position();
InetSocketAddress inetSocketAddress = (InetSocketAddress) javaChannel.receive(nioBuffer);
if (inetSocketAddress == null) {
return 0;
}
allocatorHandle.lastBytesRead(nioBuffer.position() - nioPos);
buffer.writerIndex(buffer.writerIndex() + allocatorHandle.lastBytesRead());
//allocate new channel or use existing one and push message to it
UdpChannel udpchannel = channels.get(inetSocketAddress);
if ((udpchannel == null) || !udpchannel.isOpen()) {
udpchannel = new UdpChannel(this, inetSocketAddress);
channels.put(inetSocketAddress, udpchannel);
list.add(udpchannel);
udpchannel.addBuffer(buffer);
freeBuffer = false;
return 1;
} else {
udpchannel.addBuffer(buffer);
freeBuffer = false;
if (udpchannel.isRegistered()) {
udpchannel.read();
}
return 0;
}
} catch (Throwable t) {
PlatformDependent.throwException(t);
return -1;
} finally {
if (freeBuffer) {
buffer.release();
}
}
}
项目:UdpServerSocketChannel
文件:UdpServerChannelConfig.java
@Override
public ServerSocketChannelConfig setRecvByteBufAllocator(RecvByteBufAllocator alloc) {
super.setRecvByteBufAllocator(alloc);
return this;
}
项目:spring-boot-netty
文件:ChannelOptions.java
public void setRecvBufAllocator(final RecvByteBufAllocator allocator) {
options.put(ChannelOption.RCVBUF_ALLOCATOR, allocator);
}
项目:netty4.0.27Learn
文件:UdtChannelConfig.java
@Override
UdtChannelConfig setRecvByteBufAllocator(RecvByteBufAllocator allocator);
项目:netty4.0.27Learn
文件:DefaultUdtServerChannelConfig.java
@Override
public UdtServerChannelConfig setRecvByteBufAllocator(RecvByteBufAllocator allocator) {
super.setRecvByteBufAllocator(allocator);
return this;
}
项目:netty4.0.27Learn
文件:UdtServerChannelConfig.java
@Override
UdtServerChannelConfig setRecvByteBufAllocator(RecvByteBufAllocator allocator);
项目:netty4.0.27Learn
文件:DefaultUdtChannelConfig.java
@Override
public UdtChannelConfig setRecvByteBufAllocator(RecvByteBufAllocator allocator) {
super.setRecvByteBufAllocator(allocator);
return this;
}
项目:netty4.0.27Learn
文件:SocketChannelConfig.java
@Override
SocketChannelConfig setRecvByteBufAllocator(RecvByteBufAllocator allocator);
项目:netty4.0.27Learn
文件:OioServerSocketChannelConfig.java
@Override
OioServerSocketChannelConfig setRecvByteBufAllocator(RecvByteBufAllocator allocator);
项目:netty4.0.27Learn
文件:DefaultOioSocketChannelConfig.java
@Override
public OioSocketChannelConfig setRecvByteBufAllocator(RecvByteBufAllocator allocator) {
super.setRecvByteBufAllocator(allocator);
return this;
}
项目:netty4.0.27Learn
文件:DefaultOioServerSocketChannelConfig.java
@Override
public OioServerSocketChannelConfig setRecvByteBufAllocator(RecvByteBufAllocator allocator) {
super.setRecvByteBufAllocator(allocator);
return this;
}
项目:netty4.0.27Learn
文件:OioSocketChannelConfig.java
@Override
OioSocketChannelConfig setRecvByteBufAllocator(RecvByteBufAllocator allocator);
项目:netty4.0.27Learn
文件:DefaultSocketChannelConfig.java
@Override
public SocketChannelConfig setRecvByteBufAllocator(RecvByteBufAllocator allocator) {
super.setRecvByteBufAllocator(allocator);
return this;
}
项目:netty4.0.27Learn
文件:DefaultServerSocketChannelConfig.java
@Override
public ServerSocketChannelConfig setRecvByteBufAllocator(RecvByteBufAllocator allocator) {
super.setRecvByteBufAllocator(allocator);
return this;
}
项目:netty4.0.27Learn
文件:DatagramChannelConfig.java
@Override
DatagramChannelConfig setRecvByteBufAllocator(RecvByteBufAllocator allocator);
项目:netty4.0.27Learn
文件:DefaultDatagramChannelConfig.java
@Override
public DatagramChannelConfig setRecvByteBufAllocator(RecvByteBufAllocator allocator) {
super.setRecvByteBufAllocator(allocator);
return this;
}
项目:netty4.0.27Learn
文件:ServerSocketChannelConfig.java
@Override
ServerSocketChannelConfig setRecvByteBufAllocator(RecvByteBufAllocator allocator);
项目:netty4.0.27Learn
文件:SctpChannelConfig.java
@Override
SctpChannelConfig setRecvByteBufAllocator(RecvByteBufAllocator allocator);
项目:netty4.0.27Learn
文件:DefaultSctpServerChannelConfig.java
@Override
public SctpServerChannelConfig setRecvByteBufAllocator(RecvByteBufAllocator allocator) {
super.setRecvByteBufAllocator(allocator);
return this;
}
项目:netty4.0.27Learn
文件:OioSctpChannel.java
@Override
protected int doReadMessages(List<Object> msgs) throws Exception {
if (!readSelector.isOpen()) {
return 0;
}
int readMessages = 0;
final int selectedKeys = readSelector.select(SO_TIMEOUT);
final boolean keysSelected = selectedKeys > 0;
if (!keysSelected) {
return readMessages;
}
Set<SelectionKey> reableKeys = readSelector.selectedKeys();
try {
for (SelectionKey ignored : reableKeys) {
RecvByteBufAllocator.Handle allocHandle = this.allocHandle;
if (allocHandle == null) {
this.allocHandle = allocHandle = config().getRecvByteBufAllocator().newHandle();
}
ByteBuf buffer = allocHandle.allocate(config().getAllocator());
boolean free = true;
try {
ByteBuffer data = buffer.nioBuffer(buffer.writerIndex(), buffer.writableBytes());
MessageInfo messageInfo = ch.receive(data, null, notificationHandler);
if (messageInfo == null) {
return readMessages;
}
data.flip();
msgs.add(new SctpMessage(messageInfo, buffer.writerIndex(buffer.writerIndex() + data.remaining())));
free = false;
readMessages ++;
} catch (Throwable cause) {
PlatformDependent.throwException(cause);
} finally {
int bytesRead = buffer.readableBytes();
allocHandle.record(bytesRead);
if (free) {
buffer.release();
}
}
}
} finally {
reableKeys.clear();
}
return readMessages;
}
项目:netty4.0.27Learn
文件:DefaultSctpChannelConfig.java
@Override
public SctpChannelConfig setRecvByteBufAllocator(RecvByteBufAllocator allocator) {
super.setRecvByteBufAllocator(allocator);
return this;
}
项目:netty4.0.27Learn
文件:SctpServerChannelConfig.java
@Override
SctpServerChannelConfig setRecvByteBufAllocator(RecvByteBufAllocator allocator);
项目:netty4.0.27Learn
文件:RxtxChannelConfig.java
@Override
RxtxChannelConfig setRecvByteBufAllocator(RecvByteBufAllocator allocator);
项目:netty4.0.27Learn
文件:DefaultRxtxChannelConfig.java
@Override
public RxtxChannelConfig setRecvByteBufAllocator(RecvByteBufAllocator allocator) {
super.setRecvByteBufAllocator(allocator);
return this;
}
项目:netty4.0.27Learn
文件:DomainSocketChannelConfig.java
@Override
DomainSocketChannelConfig setRecvByteBufAllocator(RecvByteBufAllocator allocator);
项目:netty4.0.27Learn
文件:EpollChannelConfig.java
@Override
public EpollChannelConfig setRecvByteBufAllocator(RecvByteBufAllocator allocator) {
super.setRecvByteBufAllocator(allocator);
return this;
}
项目:netty4.0.27Learn
文件:EpollServerChannelConfig.java
@Override
public EpollServerChannelConfig setRecvByteBufAllocator(RecvByteBufAllocator allocator) {
super.setRecvByteBufAllocator(allocator);
return this;
}
项目:netty4.0.27Learn
文件:EpollDomainSocketChannelConfig.java
@Override
public EpollDomainSocketChannelConfig setRecvByteBufAllocator(RecvByteBufAllocator allocator) {
super.setRecvByteBufAllocator(allocator);
return this;
}
项目:netty4.0.27Learn
文件:EpollDatagramChannelConfig.java
@Override
public EpollDatagramChannelConfig setRecvByteBufAllocator(RecvByteBufAllocator allocator) {
super.setRecvByteBufAllocator(allocator);
return this;
}
项目:netty4.0.27Learn
文件:EpollSocketChannelConfig.java
@Override
public EpollSocketChannelConfig setRecvByteBufAllocator(RecvByteBufAllocator allocator) {
super.setRecvByteBufAllocator(allocator);
return this;
}
项目:netty4.0.27Learn
文件:EpollServerSocketChannelConfig.java
@Override
public EpollServerSocketChannelConfig setRecvByteBufAllocator(RecvByteBufAllocator allocator) {
super.setRecvByteBufAllocator(allocator);
return this;
}
项目:netty4study
文件:UdtChannelConfig.java
@Override
UdtChannelConfig setRecvByteBufAllocator(RecvByteBufAllocator allocator);