Package com.ettrema.mail.pop

Source Code of com.ettrema.mail.pop.PopIOHandlerAdapter

package com.ettrema.mail.pop;

import com.ettrema.mail.Event;
import com.ettrema.mail.Filter;
import com.ettrema.mail.FilterChain;
import org.apache.mina.core.service.IoHandlerAdapter;
import org.apache.mina.core.service.TransportMetadata;
import org.apache.mina.core.session.IdleStatus;
import org.apache.mina.core.session.IoSession;
import org.apache.mina.transport.socket.SocketSessionConfig;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class PopIOHandlerAdapter extends IoHandlerAdapter {

    private final static Logger log = LoggerFactory.getLogger(PopIOHandlerAdapter.class);

    MinaPopServer server;

    public PopIOHandlerAdapter(MinaPopServer server) {
        super();
        this.server = server;
    }

    @Override
    public void exceptionCaught(IoSession session, Throwable t) throws Exception {
        t.printStackTrace();
        session.close();
    }

    @Override
    public void messageReceived(final IoSession session, final Object msg) throws Exception {
        log.info("pop message: " + msg);
        PopMessageEvent event = new PopMessageEvent(session, msg);
        Filter terminal = new Filter() {

            public void doEvent(FilterChain chain, Event event) {
                MinaPopServer.sess(session).messageReceived(session, msg);
            }
        };
        FilterChain chain = new FilterChain(server.filters, terminal);
        chain.doEvent(event);
    }

    @Override
    public void sessionCreated(IoSession session) throws Exception {
        log.info("Session created...");
        ((SocketSessionConfig) session.getConfig()).setReceiveBufferSize(2048);
        ((SocketSessionConfig) session.getConfig()).setIdleTime(IdleStatus.BOTH_IDLE, 10);
        PopSession sess = new PopSession(session, server.resourceFactory);
        session.setAttribute("stateMachine", sess);
    }
}
TOP

Related Classes of com.ettrema.mail.pop.PopIOHandlerAdapter

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.