• 开源一个简易轻量的reactor网络框架


    github

    https://github.com/sea-boat/net-reactor

    net-reactor

    it’s a simple and easy net framework with nio mode written by java

    reactor model

    reactor

    how-to

    just simply like:

    public class MyHandler implements Handler {
    
        private static final Logger LOGGER = LoggerFactory.getLogger(MyHandler.class);
        private long readSize;
    
        /**
         * The logic to deal with the received data.
         *  
         * It means that reactor will trigger this function once the data is received.
         * @throws IOException 
         */
        public void handle(FrontendConnection connection) throws IOException {
            Buffer buff = connection.getReadBuffer();
            readSize = +readSize + buff.position();
            LOGGER.info(connection.getId() + " connection has receive " + readSize);
    
        }
    
    }
    Handler handler = new MyHandler();
    ReactorPool reactorPool = new ReactorPool(Runtime.getRuntime().availableProcessors(), handler);
    new Acceptor(reactorPool, acceptorName, host, port).start();

    adding a connection event or a connection multi-event:

    public class RegisterHandler implements ConnectionEventHandler {
        private static final Logger LOGGER = LoggerFactory
                .getLogger(RegisterHandler.class);
    
        private static int INTERESTED = ConnectionEvents.REGISTE;
    
        public void event(FrontendConnection connection) {
            if ((event & INTERESTED) != 0) {
                //do something here 
            }
        }
    
    }
    Handler handler = new NetHandler();
    ConnectionEventHandler connectionEventHandler = new RegisterHandler();
    ReactorPool reactorPool = new ReactorPool(Runtime.getRuntime().availableProcessors(), handler);
    Acceptor acceptor = new Acceptor(reactorPool, acceptorName, host, port);
    acceptor.addConnectionEventHandler(connectionEventHandler);
    acceptor.start();
    public class ConnectionLogHandler implements ConnectionEventHandler {
        private static final Logger LOGGER = LoggerFactory
                .getLogger(ConnectionLogHandler.class);
        private static int INTERESTED = ConnectionEvents.ACCEPT
                | ConnectionEvents.CLOSE;
    
        public void event(Connection connection, int event) {
            if ((event & INTERESTED) != 0) {
                if ((event & ConnectionEvents.ACCEPT) != 0)
                    LOGGER.info("accept connection,id is " + connection.getId());
                if ((event & ConnectionEvents.CLOSE) != 0)
                    LOGGER.info("close connection,id is " + connection.getId());
            }
        }
    }

    implements the connection

    public class XXXConnection extends Connection {
    
        private String name;
    
        public XXXConnection(SocketChannel channel, long id, Reactor reactor) {
            super(channel, id, reactor);
        }
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
    }
    public class XXXConnectionFactory implements ConnectionFactory {
    
        public XXXConnection createConnection(SocketChannel channel, long id,
                Reactor reactor) {
            return new XXXConnection(channel, id, reactor);
        }
    
    }
    Acceptor acceptor = new Acceptor(reactorPool, acceptorName, host,port);
    acceptor.setConnectionFactory(new xxxConnectionFactory());

    ========广告时间========

    鄙人的新书《Tomcat内核设计剖析》已经在京东销售了。有须要的朋友能够到 https://item.jd.com/12185360.html 进行预定。

    感谢各位朋友。

    为什么写《Tomcat内核设计剖析》

    =========================

  • 相关阅读:
    stax(和dom4j功能一样,这个是基于流的一种处理方式)
    JAXB(xml和对象的转换)
    wsdl理解
    webservice心得
    ZT 分智网博客 – 职场、面试技巧、职业规划
    discern concern fifth sixth
    ZT I Believe I Can Fly(我相信我能飞)
    ZT 理解class.forName()
    ZT 第9章 Framework的启动过程
    android 智能指针的学习先看邓凡平的书扫盲 再看前面两片博客提升
  • 原文地址:https://www.cnblogs.com/blfbuaa/p/7375302.html
Copyright © 2020-2023  润新知