Hello, i'm picking up on an old project and it's using Netty 3.2.4, I was 
wondering I could get some help or someone to point me in the right 
direction with this. (I've checked the what's new and noteworthy in 4.0 

Basically I'm using netty for inter-channel communication between servers. 
The center server is the main one, it interconnects with a login and world 

My remote listener is something like this: 

    public RemoteServerListener(String password, boolean useNio) {
        this.interServerPassword = password;
        ChannelFactory chFactory;
        if (useNio) {
            chFactory = new NioServerSocketChannelFactory(
        } else {
            chFactory = new OioServerSocketChannelFactory(
        this.bootstrap = new ServerBootstrap(chFactory);
        this.bootstrap.setPipelineFactory(() -> {
            ChannelPipeline pipeline = Channels.pipeline();
            pipeline.addLast("decoder", new InterServerPacketDecoder());
            pipeline.addLast("encoder", new InterServerPacketEncoder());
            pipeline.addLast("handler", new CenterServerHandler());
            return pipeline;
        bootstrap.setOption("child.bufferFactory", new 

    public boolean bind(int port) {
        try {
            bootstrap.bind(new InetSocketAddress(port));
            LOG.log(Level.INFO, "Listening on port {0}", port);
            return true;
        } catch (ChannelException ex) {
            LOG.log(Level.SEVERE, "Could not bind on port " + port, ex);
            return false;

So I know that Netty 4 no longer uses OIO so I could get rid of that and 
what not. But the way I initiate this is in my main center server class 
like this:

 public void init() { 
      listener = new RemoteServerListener(authKey, useNio);
if (listener.bind(port))
LOG.log(Level.INFO, "Center Server is online.");

I noticed that in Netty 4, they have the shutdown and bind hooks directly 
in the Server/Client. How would I still achieve this?

Another thing i'm confused about is in my netty 3 I have this:

 public static final ChannelLocal<CenterRemoteSession> sessions = new 

Followed my by CenterServerHandler :

   private class CenterServerHandler extends SimpleChannelUpstreamHandler {

        public void channelOpen(ChannelHandlerContext ctx, 
ChannelStateEvent e) throws Exception {
            LOG.log(Level.FINEST, "Trying to accept remote server from 
{0}", e.getChannel().getRemoteAddress());

        public void channelConnected(ChannelHandlerContext ctx, 
ChannelStateEvent e) throws Exception {
            LOG.log(Level.FINE, "Remote server connected from {0}", 
            sessions.set(e.getChannel(), new 
CenterRemoteSession(e.getChannel(), interServerPassword));

        public void channelDisconnected(ChannelHandlerContext ctx, 
ChannelStateEvent e) throws Exception {
            LOG.log(Level.FINE, "Remote server from {0} disconnected", 

        public void channelClosed(ChannelHandlerContext ctx, 
ChannelStateEvent e) throws Exception {
            LOG.log(Level.FINEST, "Removing remote server from {0}", 

        public void messageReceived(ChannelHandlerContext ctx, MessageEvent 
e) {
            sessions.get(e.getChannel()).process((byte[]) e.getMessage());

        public void exceptionCaught(ChannelHandlerContext ctx, 
ExceptionEvent e) {
            LOG.log(Level.FINE, "Exception raised in internal network 
facing code (remote server " + e.getChannel().getRemoteAddress() + ")", 

In Netty 4 there is no ChannelLocal, so how would I go about doing this?

I also know that in netty 4, that channelDisconnected and channelClosed has 
been merged into one. so which method would I use since my above 2 methods 
for closed and disconnected do 2 different things.

Also one of my game server handler has this: 
 private class GameServerHandler extends 
IdleStateAwareChannelUpstreamHandler {


You received this message because you are subscribed to the Google Groups 
"Netty discussions" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to netty+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
For more options, visit https://groups.google.com/d/optout.

Reply via email to