亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? mmlclienthandler.java.svn-base

?? java實現的socket連接池,使用了apache的objectpool
?? SVN-BASE
字號:
// $dateCreated:2006-8-20-12:05:38 userCreated:pippo
package com.vms.ts.simulator.mmlserver;

import java.io.IOException;
import java.io.InputStream;
import java.net.SocketException;
import java.net.SocketTimeoutException;

import org.apache.commons.lang.ArrayUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.quickserver.net.AppException;
import org.quickserver.net.ConnectionLostException;
import org.quickserver.net.server.AuthStatus;
import org.quickserver.net.server.ClientEvent;
import org.quickserver.net.server.ClientHandler;
import org.quickserver.net.server.impl.BlockingClientHandler;
import org.quickserver.util.Assertion;
import org.quickserver.util.MyString;

/**
 * @author pippo
 */
public class MMLClientHandler extends BlockingClientHandler implements ClientHandler {

    private static Log logger = LogFactory.getLog(MMLClientHandler.class);

    public MMLClientHandler(int instanceCount) {
        super(instanceCount);
    }

    public MMLClientHandler() {
        super();
    }

    /*
     * (非 Javadoc)
     *
     * @see org.quickserver.net.server.impl.BasicClientHandler#setInputStream(java.io.InputStream)
     */
    protected void setInputStream(InputStream in) throws IOException {
        this.in = in;
    }

    /*
     * (非 Javadoc)
     *
     * @see java.lang.Runnable#run()
     */
    public void run() {
        if (unprocessedClientEvents.size() == 0) {
            logger.info("No unprocessed ClientEvents!");
            return;
        }

        ClientEvent currentEvent = (ClientEvent) unprocessedClientEvents.remove(0);

        if (logger.isInfoEnabled()) {
            StringBuffer sb = new StringBuffer();
            sb.append("Running ").append(getName());
            sb.append(" using ");
            sb.append(Thread.currentThread().getName());
            sb.append(" for ");

            synchronized (clientEvents) {
                if (clientEvents.size() > 1) {
                    sb.append(currentEvent + ", Current Events - " + clientEvents);
                } else {
                    sb.append(currentEvent);
                }
            }
            logger.info(sb.toString());
        }

        if (currentEvent == null) {
            threadEvent.set(null);
            return;
        } else {
            threadEvent.set(currentEvent);
        }

        try {
            if (socket == null)
                throw new SocketException("Socket was null!");
            prepareForRun();
            if (getThreadEvent() == ClientEvent.MAX_CON_BLOCKING)
                processMaxConnection(currentEvent);

            try {
                if (getThreadEvent() == ClientEvent.RUN_BLOCKING) {
                    clientEventHandler.gotConnected(this);

                    if (authorised == false) {
                        if (clientAuthenticationHandler == null && authenticator == null) {
                            authorised = true;
                        } else {
                            if (clientAuthenticationHandler != null) {
                                AuthStatus authStatus = null;
                                do {
                                    authStatus = processAuthorisation();
                                } while (authStatus == AuthStatus.FAILURE);

                                if (authStatus == AuthStatus.SUCCESS)
                                    authorised = true;
                            } else {
                                processAuthorisation();
                            }
                        }
                    }// end of authorised
                    processRead();
                }
            } catch (SocketException e) {
                logger.info("SocketException - Client [" + getHostAddress() + "]: " + e.getMessage());
                // e.printStackTrace();
                lost = true;
            } catch (AppException e) {
                // errors from Application
                logger.info("AppException " + Thread.currentThread().getName() + ": " + e.getMessage());
            } catch (javax.net.ssl.SSLException e) {
                lost = true;
                if (Assertion.isEnabled()) {
                    logger.info("SSLException - Client [" + getHostAddress() + "] " + Thread.currentThread().getName()
                            + ": " + e);
                } else {
                    logger.warn("SSLException - Client [" + getHostAddress() + "]: " + e);
                }
            } catch (ConnectionLostException e) {
                lost = true;
                if (e.getMessage() != null)
                    logger.info("Connection lost " + Thread.currentThread().getName() + ": " + e.getMessage());
                else
                    logger.info("Connection lost " + Thread.currentThread().getName());
            } catch (IOException e) {
                lost = true;
                logger.debug("IOError " + Thread.currentThread().getName() + ": " + e);
            } catch (AssertionError er) {
                logger.warn("[AssertionError] " + getName() + " " + er);
                if (logger.isInfoEnabled()) {
                    logger.info("StackTrace " + Thread.currentThread().getName() + ": " + MyString.getStackTrace(er));
                }
                assertionSystemExit();
            } catch (Error er) {
                logger.warn("[Error] " + er);
                if (logger.isInfoEnabled()) {
                    logger.info("StackTrace " + Thread.currentThread().getName() + ": " + MyString.getStackTrace(er));
                }
                if (Assertion.isEnabled()) {
                    assertionSystemExit();
                }
                lost = true;
            } catch (RuntimeException re) {
                logger.warn("[RuntimeException] " + MyString.getStackTrace(re));
                if (Assertion.isEnabled()) {
                    assertionSystemExit();
                }
                lost = true;
            }

            if (getThreadEvent() != ClientEvent.MAX_CON_BLOCKING) {
                notifyCloseOrLost();
            }

            if (connection) {
                logger.info(Thread.currentThread().getName() + " calling closeConnection()");
                closeConnection();
            }
        } catch (javax.net.ssl.SSLException se) {
            logger.warn("SSLException " + Thread.currentThread().getName() + " - " + se);
        } catch (IOException ie) {
            logger.warn("IOError " + Thread.currentThread().getName() + " - Closing Client : " + ie);
        } catch (RuntimeException re) {
            logger.warn("[RuntimeException] " + getName() + " " + Thread.currentThread().getName() + " - "
                    + MyString.getStackTrace(re));
            if (Assertion.isEnabled()) {
                assertionSystemExit();
            }
        } catch (Exception e) {
            logger.warn("Error " + Thread.currentThread().getName() + " - Event:" + getThreadEvent() + " - Socket:"
                    + socket + " : " + e);
            logger.debug("StackTrace: " + getName() + "\n" + MyString.getStackTrace(e));
            if (Assertion.isEnabled()) {
                assertionSystemExit();
            }
        } catch (Error e) {
            logger.warn("Error " + Thread.currentThread().getName() + " - Event:" + getThreadEvent() + " - Socket:"
                    + socket + " : " + e);
            logger.debug("StackTrace: " + getName() + "\n" + MyString.getStackTrace(e));
            if (Assertion.isEnabled()) {
                assertionSystemExit();
            }
        }

        synchronized (this) {
            try {
                if (socket != null && socket.isClosed() == false) {
                    logger.info("Closing Socket");
                    socket.close();
                }
            } catch (Exception re) {
                logger.warn("Error closing Socket/Channel: " + re);
            }
        }// end synchronized

        willClean = true;
        returnClientData();

        boolean returnClientHandler = false;
        synchronized (lockObj) {
            returnClientHandler = checkReturnClientHandler();
        }

        if (returnClientHandler) {
            returnClientHandler(); // return to pool
        }
    }

    /*
     * (非 Javadoc)
     *
     * @see org.quickserver.net.server.ClientHandler#sendClientBinary(byte[], int, int)
     */
    public void sendClientBinary(byte data[], int off, int len) throws IOException {
        if (isConnected()) {
            b_out.write(data, off, len);
            b_out.flush();
        } else {
            logger.warn("Client not connected.");
        }
    }

    /*
     * (非 Javadoc)
     *
     * @see org.quickserver.net.server.impl.BasicClientHandler#readInputStream()
     */
    protected byte[] readInputStream() throws IOException {
        if (logger.isDebugEnabled())
            logger.debug("begin read command from inputStream");
        byte[] head = new byte[8];
        byte[] b = null;
        in.read(head);
        int messageLength = Integer.parseInt(new String(ArrayUtils.subarray(head, 4, 8)), 16);
        if (logger.isDebugEnabled())
            logger.debug("received command length is:" + messageLength);
        b = new byte[messageLength + 8];
        in.read(b);
        if (messageLength == 4 && "HBHBB7BDB7BD".equals(new String(b))) {
            if (logger.isDebugEnabled())
                logger.debug("received ping command from mml client!");
            return readInputStream(in);
        } else
            return b;
    }

    /*
     * (非 Javadoc)
     *
     * @see org.quickserver.net.server.impl.BasicClientHandler#readInputStream(java.io.InputStream)
     */
    protected static byte[] readInputStream(InputStream _in) throws IOException {
        byte[] head = new byte[8];
        byte[] b = null;
        _in.read(head);
        int messageLength = Integer.parseInt(new String(ArrayUtils.subarray(head, 4, 8)), 16);
        if (logger.isDebugEnabled())
            logger.debug("received command length is:" + messageLength);
        b = new byte[messageLength + 8];
        _in.read(b);
        if (messageLength == 4 && "HBHBB7BDB7BD".equals(new String(b))) {
            if (logger.isDebugEnabled())
                logger.debug("received ping command from mml client!");
            return readInputStream(_in);
        } else
            return b;
    }

    /**
     * processRead
     *
     * @throws IOException
     * @throws ClassNotFoundException
     * @throws AppException
     */
    private void processRead() throws IOException, ClassNotFoundException, AppException {
        if (logger.isDebugEnabled())
            logger.debug("begin processRead");
        AuthStatus authStatus = null;

        byte[] recByte = null; // 1.4
        while (connection) {
            try {
                recByte = this.readInputStream();
                if (recByte == null) {
                    lost = true;
                    break;
                }
                String command = new String(recByte);
                if (logger.isDebugEnabled())
                    logger.debug("recieved command is :" + command);
                clientCommandHandler.handleCommand(this, command);
                updateLastCommunicationTime();
                while (authStatus == AuthStatus.FAILURE)
                    authStatus = processAuthorisation();
                if (authStatus == AuthStatus.SUCCESS)
                    authorised = true;
            } catch (SocketTimeoutException e) {
                handleTimeout(e);
            }
        }
    }
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产一区在线观看视频| 日韩欧美国产wwwww| 欧美一区二区在线不卡| 夜夜嗨av一区二区三区四季av| 午夜激情一区二区三区| 国产成人午夜精品5599| 欧美日韩精品二区第二页| 日韩一区欧美小说| 国产麻豆精品视频| 亚洲精品在线观看网站| 亚洲国产另类精品专区| 91免费看片在线观看| 亚洲精品在线观| 麻豆成人91精品二区三区| 欧美色手机在线观看| 亚洲免费成人av| 成人app在线| 国产三级一区二区三区| 精品亚洲欧美一区| 欧美一区二区三区系列电影| 亚洲aaa精品| 欧美性色黄大片手机版| 一区二区成人在线视频| 91色婷婷久久久久合中文| 国产日韩精品久久久| 狠狠色综合日日| 日韩免费电影网站| 奇米综合一区二区三区精品视频| 欧美日韩久久久久久| 亚洲国产wwwccc36天堂| 中文在线免费一区三区高中清不卡| 麻豆91在线播放| 久久在线免费观看| 韩国女主播一区| 国产午夜精品美女毛片视频| 国产久卡久卡久卡久卡视频精品| 久久久久一区二区三区四区| 国产一区二区三区视频在线播放| 久久嫩草精品久久久久| 成人爽a毛片一区二区免费| 国产精品久久二区二区| 91视频观看免费| 无码av免费一区二区三区试看 | 亚洲电影视频在线| 在线欧美小视频| 亚洲国产一区二区a毛片| 欧美日韩免费观看一区三区| 日韩影院免费视频| 26uuu亚洲综合色欧美| 国产乱子轮精品视频| 国产精品久久免费看| 色国产综合视频| 日本最新不卡在线| 久久久久国产精品免费免费搜索| 波多野结衣中文一区| 一区二区三区欧美日| 欧美日韩www| 国产精品69毛片高清亚洲| 亚洲美女屁股眼交3| 91精品国模一区二区三区| 激情欧美一区二区三区在线观看| 国产精品乱人伦一区二区| 欧美无乱码久久久免费午夜一区 | 狠狠色狠狠色综合系列| 久久久久久毛片| 欧美中文字幕不卡| 精品系列免费在线观看| 亚洲乱码中文字幕综合| 欧美一区二区三区公司| 成人av网址在线观看| 337p日本欧洲亚洲大胆精品| 欧美r级电影在线观看| 国产一区二区三区精品欧美日韩一区二区三区 | 欧美在线免费播放| 国产在线播放一区二区三区| 亚洲免费观看视频| 久久综合九色综合97婷婷女人| 91社区在线播放| 国产成人精品综合在线观看| 亚洲一区二区在线视频| 国产精品乱码人人做人人爱 | 日韩不卡一二三区| 亚洲三级在线免费观看| 精品国产一二三区| 欧美日韩一区二区三区高清| 福利一区二区在线观看| 日韩国产高清在线| 亚洲卡通欧美制服中文| 国产日本欧洲亚洲| 欧美一区二区三区在线观看视频 | 99精品视频一区| 国产精品一区二区三区乱码| 秋霞午夜av一区二区三区| 亚洲摸摸操操av| 国产精品不卡在线观看| 久久久五月婷婷| 精品福利av导航| 欧美一区二区精美| 欧美一区二区在线不卡| 欧美日韩一区二区在线观看 | 91蜜桃视频在线| 粉嫩av一区二区三区| 久草这里只有精品视频| 麻豆国产精品视频| 美女一区二区三区在线观看| 日韩av高清在线观看| 性感美女久久精品| 亚洲一区二区三区影院| 亚洲一区国产视频| 亚洲成av人片一区二区梦乃| 亚洲同性同志一二三专区| 亚洲人成小说网站色在线| 成人免费视频在线观看| 亚洲天堂精品视频| 亚洲综合久久av| 午夜精品久久久久久久久久| 亚洲成人综合在线| 日韩av一二三| 精品中文字幕一区二区小辣椒| 蜜臀精品久久久久久蜜臀| 久久不见久久见中文字幕免费| 免费欧美在线视频| 欧美亚洲一区二区在线观看| 欧美四级电影网| 欧美精品v国产精品v日韩精品 | 激情综合一区二区三区| 黑人巨大精品欧美一区| 国产东北露脸精品视频| 成人avav在线| 91成人看片片| 7777精品伊人久久久大香线蕉的 | 色综合天天综合色综合av| 色悠悠久久综合| 欧美日韩免费电影| 欧美一级黄色录像| 欧美精品一区二区三区久久久| 久久精品一区四区| 亚洲女同一区二区| 五月婷婷综合网| 美美哒免费高清在线观看视频一区二区| 日韩精品一级中文字幕精品视频免费观看| 日本最新不卡在线| 成人妖精视频yjsp地址| 欧美色国产精品| 久久久亚洲午夜电影| 亚洲精品成人少妇| 久久成人免费电影| 色综合激情五月| 日韩丝袜美女视频| 中文字幕亚洲一区二区av在线| 亚洲一区二区偷拍精品| 国产乱子轮精品视频| 91黄色免费网站| 国产色爱av资源综合区| 亚洲电影一区二区三区| 国产不卡视频在线播放| 欧美另类一区二区三区| 欧美国产一区二区在线观看 | 懂色av一区二区三区免费看| 欧美艳星brazzers| 日本一区二区三区久久久久久久久不| 亚洲国产aⅴ天堂久久| 丁香婷婷综合激情五月色| 欧美一区二区在线看| 亚洲色图制服诱惑 | 国产精品乱码人人做人人爱| 日本不卡在线视频| 色综合一个色综合| 国产农村妇女毛片精品久久麻豆| 日韩国产欧美视频| 在线精品视频免费观看| 国产精品私人影院| 久久se精品一区精品二区| 色欧美片视频在线观看在线视频| 2020国产精品自拍| 日韩电影免费一区| 色94色欧美sute亚洲线路一久| 国产女同性恋一区二区| 九一久久久久久| 欧美一区二区私人影院日本| 亚洲一区中文在线| 色综合视频在线观看| 国产精品网友自拍| 国产成人综合在线观看| 欧美xingq一区二区| 日本aⅴ亚洲精品中文乱码| 日韩欧美高清一区| 奇米精品一区二区三区在线观看 | 亚洲欧美在线观看| 国产suv一区二区三区88区| 久久综合999| 韩国在线一区二区| 久久日一线二线三线suv| 九九**精品视频免费播放| 日韩视频在线你懂得| 奇米四色…亚洲| 欧美一区二区女人| 精品一区二区三区视频在线观看| 日韩一级二级三级| 久久97超碰国产精品超碰|