package com.eactive.eai.rms.onl.server;//package com.eactive.eai.rms.onl.server;
//
//import java.util.Iterator;
//import java.util.List;
//import java.util.Set;
//
//import org.apache.commons.collections.keyvalue.MultiKey;
//import org.apache.commons.collections.map.MultiKeyMap;
//import org.apache.commons.logging.Log;
//import org.apache.commons.logging.LogFactory;
//import org.apache.mina.common.IoSession;
//import org.apache.mina.handler.demux.DemuxingIoHandler;
//import org.apache.mina.handler.demux.MessageHandler;
//import org.apache.mina.handler.demux.UnknownMessageTypeException;
//import org.apache.mina.util.SessionLog;
//import org.springframework.beans.factory.annotation.Autowired;
//
//import com.eactive.eai.rms.onl.server.handler.IMessageHandler;
//import com.eactive.eai.rms.onl.vo.MonitorDataVo;
//
///**
// * The Class UdpServerSessionHandler.
// * <ul>
// * <li>1. Function :EAI Framework���� ���� ���ŵ� UDP/IP�� SessionHandler�Դϴ�. </li>
// * <li>2. Summary :��ϵ� Handler�� ���� ���ŵ� ��ü�� ó�� �մϴ�.</li>
// * <li>3. Notification :</li>
// * </ul>
// * 
// * @author  : $Author: �ڱ⼷ $
// * @version : $Revision: 1.6 $
// */
//public class UdpServerSessionHandler extends DemuxingIoHandler {
//
//    private MultiKeyMap sessions = new MultiKeyMap();
//
//    /**
//     * Instantiates a new udp server session handler.
//     * 
//     * @param handlerList the handler list
//     */
//    @Autowired
//    public void setHandlers(List<IMessageHandler> handlerList) {
//        for (Iterator it = handlerList.iterator(); it.hasNext();) {
//            IMessageHandler handler = (IMessageHandler) it.next();
//            addMessageHandler(handler.targetClass(), handler);
//        }
//    }
//
//    /* (non-Javadoc)
//     * @see org.apache.mina.common.IoHandlerAdapter#exceptionCaught(org.apache.mina.common.IoSession, java.lang.Throwable)
//     */
//    @Override
//    public void exceptionCaught(IoSession session, Throwable cause)
//            throws Exception {
//        SessionLog.warn(session, cause.getMessage(), cause);
//    }
//    @Override
//    public void sessionOpened(IoSession session) throws Exception {
//    	System.out.println("sessionOpened="+session);
//    }
//    
//    @Override
//    public void sessionClosed(IoSession session) throws Exception {
//    	System.out.println("sessionClosed="+session);
//    }
//
//    @SuppressWarnings("unchecked")
//    public Set<MultiKey> getSessionKeys() {
//        return sessions.keySet();
//    }
//
//    public IoSession getSession(String hostName, String instanceName) {
//        return (IoSession) sessions.get(hostName, instanceName);
//    }
//
//    public void addSession(String hostName, String instanceName,
//            IoSession session) {
//        sessions.put(hostName, instanceName, session);
//    }
//
//    public void executeCommand(MonitorDataVo command) {
//        IoSession session = (IoSession) sessions.get(command.getHostName(),
//            command.getInstanceName());
//        session.write(command);
//    }
//
//    @Override
//    public void messageReceived(IoSession session, Object message)
//            throws Exception {
//    	MessageHandler<Object> handler = findHandler(message.getClass());
//        if (handler != null) {
//        	Logger logger = Logger.getLogger(handler.getClass());
//            if (logger.isDebugEnabled()) {
//                logger.debug("RECEIVED MESSAGE : "
//                        + message.getClass().getName());
//            }
//
//            MonitorDataVo monitorDataVo = (MonitorDataVo) message;
//
//            addSession(monitorDataVo.getHostName(),
//                monitorDataVo.getInstanceName(), session);
//                     
//            handler.messageReceived(session, message);
//        } else {
////            throw new UnknownMessageTypeException(
////                    "No message handler found for message: " + message);
//        }
//    }
//}