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);