⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dataeventobservable.java

📁 自己写的一个聊天的小程序 请多多指教
💻 JAVA
字号:
/* * Copyright (c) 2003 - 2007, Silvio Meier and Tobias Reinhard * * All rights reserved. *  * Redistribution and use in source and binary forms,  * with or without modification, are permitted provided  * that the following conditions are met: * *   o Redistributions of source code must retain the above  *     copyright notice, this list of conditions and the  *     following disclaimer. *   o Redistributions in binary form must reproduce the above  *     copyright notice, this list of conditions and the  *     following disclaimer in the documentation and/or other  *     materials provided with the distribution. *   o The names of its contributors may not be used to endorse  *     or promote products derived from this software without  *     specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */package net.sf.cscc;import java.util.Enumeration;import java.util.Vector;/** *  This class provides the functionality for observing the incoming *  data event queue of the communication system. * *	@author             Silvio Meier (SM) *	@copyright          Silvio Meier, Tobias Reinhard, 2003 *	@history            2003-05-09 SM First Version *                      2003-05-14 SM working on additional methods and events, *                                    correction of some comments. *                      2003-05-20 TR Comments corrected *                      2006-11-02 SM Comments revised. *	@version            $Date: 2007/07/01 17:04:06 $, $Author: reode_orm $, $Revision: 1.1 $ */class DataEventObservable {    /**     * Contains a list of objects implementing the {@link net.sf.cscc.DataEventObserver}     * or the {@link net.sf.cscc.DataEventReceivingObserver} interface.     */    private Vector observers;    /**     *   This constructor initializes the observable object.     *     *   @pre true     *   @post observers != null     */    public DataEventObservable() {        observers = new Vector();    }    /**     *   Removes a given observer from the list of data event observers.     *   If the given observer is not in the observer list, nothing happens.     *     *   @pre o != null     *   @post ((observers.size())@pre == (observers.size())@post + 1 &&     *          (obervers.contains(o))@pre) || (!(observers.contains(o))     *   @param o Observer which should be eliminated from the observer list.     */    public synchronized  void removeDataEventObserver(DataEventBaseObserver o) {        observers.remove(o);    }    /**     *   Notifies all observers in the observer list by sending them the given     *   data event. The observers have to implement either the     *   {@link net.sf.cscc.DataEventReceivingObserver}     *   or the {@link net.sf.cscc.DataEventObserver} interface.     *   If the observer does only implement the super interface     *   {@link net.sf.cscc.DataEventBaseObserver}, no event is     *   propagated to the observer.     *     *   @pre de != null     *   @post true     *   @param de DataEvent object which is sent to the observers.     *   @return Returns true after the delivery of the data event to     *           all observers, ie. all the observers got the event data.     *           Afterwards, the delivered event is ready to be removed     *           from the queue.     */    public synchronized  boolean notifyDataEventObservers(DataEvent de) {        boolean dequeue = true;        Enumeration e = observers.elements();        while (e.hasMoreElements()) {            Object o = e.nextElement();            if (o instanceof DataEventObserver) {                ((DataEventObserver)o).receiveEvent();                dequeue = false;            }            else {                if (o instanceof DataEventReceivingObserver) {                    ((DataEventReceivingObserver)o).receiveEvent(de);                }            }        }        return dequeue;    }    /**     *   Adds an oberver to the observer list. In the case the observer is     *   already in the list, it is added again, so     *   that multiple event notifications can happen. The observer may not     *   be null!     *     *   @pre  o != null     *   @post ((observers.size())@pre == (observers.size())@post - 1     *   @param o Observer to add to the list     */    public synchronized void addDataObserver(DataEventBaseObserver o) {        observers.add(o);    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -