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

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

?? remotemonitorcontrol.java

?? Myjxta的源代碼 基于JXTA的P2P即時通信系統
?? JAVA
?? 第 1 頁 / 共 2 頁
字號:
/* * Copyright (c) [2005] [Jeffrey Moore] * * Redistributions in source code form must reproduce the above copyright and  * this condition. * * The contents of this file are subject to the Sun Project JXTA License  * Version 1.1 (the "License"); you may not use this file except in compliance  * with the License. A copy of the License is available at  * http://www.jxta.org/jxta_license.html. * *//* * RemoteMonitorControl.java * * Created on April 9, 2005, 10:06 AM */package net.jxta.myjxta.plugins.vijxta;import net.jxta.endpoint.ByteArrayMessageElement;import net.jxta.endpoint.MessageElement;import net.jxta.logging.Logging;import net.jxta.myjxta.dialog.DialogListener;import net.jxta.myjxta.dialog.DialogMessage;import javax.imageio.ImageIO;import javax.imageio.ImageReader;import javax.imageio.stream.MemoryCacheImageInputStream;import javax.swing.*;import java.awt.*;import java.awt.image.BufferedImage;import java.io.ByteArrayInputStream;import java.util.Iterator;import java.util.LinkedList;import java.util.logging.Level;import java.util.logging.Logger;/** * This class represents a video monitor of a remote video data feed.  The remote * data are images passed via DialogMessage's. This calss also acts as a DialogListener * for all incoming messages.  Video messages are parsed here while Command * messages are send to CallControl. * * @author jamoore */public final class RemoteMonitorControl extends Thread implements DialogListener, Monitor {    private static final Logger LOG = Logger.getLogger(RemoteMonitorControl.class.getName());    private ViJxtaCallControl viJxtaCallControl = null;    private LinkedList incomingBuffer = null;    private int monitorState = STOPPED;    private int receiveState = STOPPED;    private MyLock bufferStarvedLock = null;    private String originator = null;    private int imageCompression = 0;    private int imagesPerMessage = 0;    private long timeOfLastMessage = 0;    private long lastReceivedMessage = 0;    private int messagesReceived = 0;    private int bytesReceived = 0;    private int imageSize = 0;    private int averageImageSize = 0;    private final long averageImageDecodeTime = 0;    private long imageDecodeTime = 0;    private Dimension formatSize = null;    private String formatType = null;    private RemoteMonitorCanvas monitorComponent = null;    private boolean receive = false;    private long imageDrawTime = 0;    private final long averageImageDrawTime = 0;    private MyLock pausedLock = null;    /**     * Creates a new instance of RemoteMonitorControl     */    public RemoteMonitorControl(ViJxtaCallControl viJxtaCallControl) {        LOG.setLevel(Level.INFO);        if (Logging.SHOW_INFO && LOG.isLoggable(Level.INFO)) {            LOG.info("RemoteMonitorControl Instantiated");        }        this.viJxtaCallControl = viJxtaCallControl;        getCallControl().getDialog().addListener(this);        incomingBuffer = new LinkedList();        bufferStarvedLock = new MyLock();        pausedLock = new MyLock();    }    public void run() {        if (Logging.SHOW_INFO && LOG.isLoggable(Level.INFO)) {            LOG.info("Receive Thread : RUN");        }        while (true) {            try {                if (getReceiveState() == this.STOPPED) {                    if (Logging.SHOW_INFO && LOG.isLoggable(Level.INFO)) {                        LOG.info("run : Stopped");                    }                    //we should send any remaining data in buffer first                    break;                }                if (getReceiveState() == this.PAUSED) {                    if (Logging.SHOW_INFO && LOG.isLoggable(Level.INFO)) {                        LOG.info("run : Paused");                    }                    synchronized (pausedLock) {                        pausedLock.wait();                    }                }                if (incomingBuffer.size() > 0) {                    displayImage();                } else {                    synchronized (bufferStarvedLock) {                        bufferStarvedLock.setLocked(true);                        bufferStarvedLock.wait();                    }                }            } catch (Exception e) {                e.printStackTrace();            }        }        if (Logging.SHOW_INFO && LOG.isLoggable(Level.INFO)) {            LOG.info("Receive Thread: Ended");        }    }    public void receive(DialogMessage msg) {        if (Logging.SHOW_INFO && LOG.isLoggable(Level.INFO)) {            //LOG.info ("Begin receive (DialogMessage)");            //LOG.info("ReceiveDialogMessage");        }        lastReceivedMessage = System.currentTimeMillis();        /** retrieve the messages command */        String sessionCommand = getMessageSessionCommand(msg);        if (sessionCommand.equals(ViJxtaCallControl.COMMAND_VIJXTA_DATA)) {            if (this.isReceive() && getCallControl().getProtocolState() == ViJxtaCallControl.SESSION_VIJXTA_INCALL) {                receiveViJxtaData(msg);            }        } else {            if (getOriginator() == null) {                setOriginator(msg.getOriginator());            }            /** otherwise it is a session command that we need to deal with */            getCallControl().callControl(sessionCommand, msg);        }    }    private String getMessageSessionCommand(DialogMessage msg) {        String command = null;        MessageElement me = msg.getMessageElement(ViJxtaCallControl.TAG_SESSION_COMMAND);        if (me != null) {            command = me.toString();        } else {            if (Logging.SHOW_INFO && LOG.isLoggable(Level.INFO)) {                LOG.info("sessionMessageCommandElement is null");            }        }        return command;    }    public void receiveViJxtaData(DialogMessage msg) {        this.timeOfLastMessage = System.currentTimeMillis();        byte[] imageBytes = getImageBytes(msg);        if (imageBytes != null) {            incomingBuffer.addLast(new ByteArrayInputStream(imageBytes));            this.messagesReceived += 1;            this.bytesReceived += imageBytes.length;            boolean locked = bufferStarvedLock.isLocked();            if (locked && incomingBuffer.size() > 0) {                synchronized (bufferStarvedLock) {                    bufferStarvedLock.setLocked(false);                    bufferStarvedLock.notifyAll();                }            }        } else {            if (Logging.SHOW_INFO && LOG.isLoggable(Level.INFO)) {                LOG.info("reveiceViJxtaData : image data is null");            }        }    }    private byte[] getImageBytes(DialogMessage msg) {        byte[] imageBytes = null;        MessageElement me = msg.getMessageElement(ViJxtaCallControl.TAG_IMAGE_DATA);        if (me != null) {            ByteArrayMessageElement imageDataElelment =                    (ByteArrayMessageElement) me;            imageBytes = me.getBytes(true);        } else {            if (Logging.SHOW_INFO && LOG.isLoggable(Level.INFO)) {                LOG.info("imageMessageElement is null");            }        }        this.imageSize = imageBytes.length;        if (averageImageSize != 0) {            this.averageImageSize = (averageImageSize + imageBytes.length) / 2;        } else {            this.averageImageSize = imageBytes.length;        }        return imageBytes;    }    public void startMonitor() {        this.setMonitorState(STARTED);        if (Logging.SHOW_INFO && LOG.isLoggable(Level.INFO)) {            LOG.info("startMonitor");        }    }    public void startReceive() {        this.setReceiveState(STARTED);        this.start();        if (Logging.SHOW_INFO && LOG.isLoggable(Level.INFO)) {            LOG.info("startReceive");        }    }    public void stopReceive() {        this.setReceiveState(STOPPED);        if (Logging.SHOW_INFO && LOG.isLoggable(Level.INFO)) {            LOG.info("stopMonitor");        }    }    public void pauseReceive() {        this.setReceiveState(PAUSED);    }    public void resumeReceive() {        this.setReceiveState(STARTED);        synchronized (pausedLock) {            pausedLock.notifyAll();        }    }    public void obtainHardware() {        /** no hardware to obtain so we just setup the monitor */        if (this.getFormatSize() != null) {            monitorComponent = new RemoteMonitorCanvas(this.getFormatSize());        } else {            if (Logging.SHOW_INFO && LOG.isLoggable(Level.INFO)) {                LOG.info("Cannot instantiate RemoteMonitor - Format size is NULL.");            }

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产成人精品午夜视频免费| 国产精品嫩草99a| 欧美tk—视频vk| 久久久久久麻豆| 一区二区三区高清在线| 日本美女一区二区| 粉嫩av一区二区三区| 欧美做爰猛烈大尺度电影无法无天| 91精品国产aⅴ一区二区| 国产午夜精品理论片a级大结局 | 视频一区免费在线观看| 国产精品一区二区免费不卡| 色综合天天在线| 天天操天天色综合| 国产一区二区视频在线播放| 色综合久久中文字幕| 欧美xxxxx裸体时装秀| 国产婷婷一区二区| 午夜精品久久久久影视| 国产精品一区免费视频| 在线观看91视频| 久久女同互慰一区二区三区| 亚洲一线二线三线久久久| 国产精品99久久久久久久女警 | 亚洲综合另类小说| 极品少妇xxxx精品少妇| 一本色道久久综合精品竹菊| 欧美大黄免费观看| 亚洲男人的天堂一区二区| 极品尤物av久久免费看| 欧美中文字幕不卡| 欧美国产精品久久| 日本午夜一区二区| 在线看日本不卡| 国产女人水真多18毛片18精品视频| 亚洲成人一区在线| 国产suv精品一区二区883| 91精品国产乱| 亚洲午夜久久久| 91在线观看污| 欧美激情一区二区三区在线| 男人的天堂亚洲一区| 色综合久久中文字幕综合网| 国产欧美一区二区精品秋霞影院| 日韩二区三区四区| 欧美自拍偷拍一区| 成人欧美一区二区三区视频网页 | 91精品国产高清一区二区三区| 亚洲三级在线看| 懂色av一区二区三区免费观看| 亚洲国产精品尤物yw在线观看| 国产精品自拍av| 日韩精品一区二| 日本亚洲天堂网| 欧美手机在线视频| 亚洲精品成人少妇| 97aⅴ精品视频一二三区| 亚洲国产精品精华液2区45| 黄网站免费久久| 欧美刺激脚交jootjob| 亚洲成人av电影在线| 色网站国产精品| 亚洲欧美日韩国产手机在线| 成人激情免费电影网址| 欧美经典三级视频一区二区三区| 久久超碰97中文字幕| 日韩欧美成人激情| 免费观看日韩av| 日韩一级完整毛片| 蜜桃视频第一区免费观看| 91精品国模一区二区三区| 亚洲国产日韩a在线播放性色| 在线观看亚洲一区| 亚洲一二三四区| 欧美午夜精品久久久久久超碰 | 91丨porny丨户外露出| 中文字幕在线不卡国产视频| 成人av动漫网站| 亚洲三级视频在线观看| 91麻豆精东视频| 亚洲综合偷拍欧美一区色| 欧美主播一区二区三区美女| 亚洲线精品一区二区三区八戒| 欧美视频在线一区| 性久久久久久久久久久久| 91精品国产综合久久久久久久| 日本不卡在线视频| 精品国产污网站| 国产91丝袜在线观看| 亚洲色图自拍偷拍美腿丝袜制服诱惑麻豆| 94-欧美-setu| 亚洲福利一区二区三区| 欧美一区二区三区喷汁尤物| 精品亚洲porn| 久久精品视频一区二区三区| av一区二区三区黑人| 一区二区三区中文字幕电影 | 五月天一区二区| 欧美一区二区成人| 国产毛片精品一区| 亚洲私人黄色宅男| 91精品麻豆日日躁夜夜躁| 国产在线一区二区综合免费视频| 中文字幕av一区二区三区| 在线视频一区二区免费| 蜜臀久久99精品久久久久久9| 久久久久久电影| 色婷婷综合久久久中文一区二区| 五月综合激情婷婷六月色窝| www激情久久| 91免费在线视频观看| 日本欧美一区二区三区| 国产欧美一区二区三区在线老狼| 91久久精品网| 精品制服美女久久| 成人国产精品免费观看视频| 亚洲一区二区三区爽爽爽爽爽| 欧美本精品男人aⅴ天堂| 99精品久久久久久| 六月丁香综合在线视频| 1024成人网| 欧美va亚洲va| 日本韩国一区二区三区| 久久精品国产精品亚洲红杏| 最新日韩在线视频| 日韩视频免费观看高清完整版| av男人天堂一区| 蜜桃视频一区二区三区在线观看| 国产三级欧美三级日产三级99| 在线观看视频欧美| 国产九九视频一区二区三区| 亚洲国产日韩综合久久精品| 国产欧美日韩综合| 4438x亚洲最大成人网| 99re这里只有精品首页| 久久国产生活片100| 一区二区三区在线观看国产| 亚洲精品一线二线三线无人区| 色综合久久久久综合| 国产麻豆一精品一av一免费| 午夜视黄欧洲亚洲| 中文字幕日韩精品一区| 久久丝袜美腿综合| 欧美久久久久久蜜桃| 91偷拍与自偷拍精品| 国产美女精品人人做人人爽| 亚洲r级在线视频| 亚洲人成伊人成综合网小说| 精品国产制服丝袜高跟| 欧美日韩一区精品| 91丨九色丨尤物| 国产成人精品一区二区三区网站观看| 日韩高清一级片| 亚洲一区免费观看| 亚洲日本护士毛茸茸| 韩国女主播一区| 七七婷婷婷婷精品国产| 亚洲综合网站在线观看| 亚洲三级免费电影| 日本一区二区三区四区在线视频 | 久久99精品视频| 亚洲成人激情自拍| 亚洲精品乱码久久久久久久久| 国产精品丝袜久久久久久app| 欧美变态tickle挠乳网站| 欧美丰满少妇xxxxx高潮对白 | 性久久久久久久| 一区二区在线观看av| 中文字幕中文在线不卡住| 欧美国产日韩亚洲一区| 国产亚洲人成网站| 久久九九影视网| 久久久99免费| 久久久精品影视| 国产日韩欧美精品电影三级在线| 精品久久久久一区二区国产| 日韩欧美久久久| 精品久久久久久久久久久院品网| 91精品国产色综合久久 | 国产美女娇喘av呻吟久久| 久久精品国产77777蜜臀| 美洲天堂一区二卡三卡四卡视频| 日韩精品一级二级 | 91福利精品第一导航| 97久久超碰国产精品电影| 91香蕉视频mp4| 色成人在线视频| 欧美影院一区二区三区| 欧美日韩你懂的| 欧美老肥妇做.爰bbww| 欧美一区二区三区免费视频| 欧美一区三区四区| 日韩女优毛片在线| 亚洲精品在线三区| 国产欧美日韩在线视频| 国产精品欧美精品| 亚洲精品日韩综合观看成人91| 亚洲一区在线观看网站| 日本伊人午夜精品| 国模套图日韩精品一区二区|