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

? 歡迎來(lái)到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? alarmmanager.java

?? 關(guān)于 RFID 讀寫器的相關(guān)內(nèi)容
?? JAVA
字號(hào):
/*
 * Copyright (C) 2007 ETH Zurich
 *
 * This file is part of Fosstrak (www.fosstrak.org).
 *
 * Fosstrak is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public
 * License version 2.1, as published by the Free Software Foundation.
 *
 * Fosstrak is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
 * Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public
 * License along with Fosstrak; if not, write to the Free
 * Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
 * Boston, MA  02110-1301  USA
 */

package org.fosstrak.reader.rprm.core.mgmt.alarm;

import java.util.Hashtable;

import org.fosstrak.reader.rprm.core.NotificationChannel;
import org.fosstrak.reader.rprm.core.ReadPoint;
import org.fosstrak.reader.rprm.core.ReaderDevice;
import org.fosstrak.reader.rprm.core.Source;
import org.fosstrak.reader.rprm.core.mgmt.IOPort;
import org.fosstrak.reader.rprm.core.mgmt.OperationalStatus;
import org.apache.log4j.Logger;

/**
 * This class manages the alarm generation. On the one hand it is a thread which
 * polls some managed objects for some information which may lead to the
 * generation of alarms, on the other hand it provides a method to raise
 * alarms.
 */
public class AlarmManager extends Thread {
	
	/**
	 * The polling interval in milliseconds.
	 */
	private static final long POLL_INTERVAL = 3000;
	
	/**
	 * The logger.
	 */
	private static Logger log = Logger.getLogger(AlarmManager.class);
	
	/**
	 * The alarm processor whose <code>process()</code> method will be called
	 * in order to raise an alarm.
	 */
	private AlarmProcessor alarmProcessor;
	
	/**
	 * The reader device.
	 */
	private ReaderDevice readerDevice;
	
	/**
	 * The table which contains the times of the last fired alarms.
	 */
	private Hashtable<AlarmControl, Long> lastFiredTimes;
	
	/**
	 * The free memory alarm.
	 */
	private FreeMemoryAlarm freeMemoryAlarm;
	
	/**
	 * Constructor.
	 * 
	 * @param alarmProcessor
	 *            The alarm processor whose <code>process()</code> method will
	 *            be called in order to raise an alarm
	 * @param readerDevice
	 *            The reader device
	 */
	public AlarmManager(AlarmProcessor alarmProcessor, ReaderDevice readerDevice) {
		this.alarmProcessor = alarmProcessor;
		this.readerDevice = readerDevice;
		lastFiredTimes = new Hashtable<AlarmControl, Long>();
		freeMemoryAlarm = null;
	}

	/**
	 * The main loop of the polling thread.
	 */
	@Override
	public void run() {
		while (true) {

			// free memory alarm
			EdgeTriggeredAlarmControl freeMemAlarmControl = readerDevice
					.getFreeMemoryAlarmControl();
			if (isEdgeTriggeredAlarmReadyForFire(readerDevice.getFreeMemory(),
					freeMemAlarmControl)) {
				if (freeMemoryAlarm == null)
					freeMemoryAlarm = new FreeMemoryAlarm("FreeMemoryAlarm",
							freeMemAlarmControl.getLevel(), readerDevice);
				if (!alarmIsSuppressed(freeMemAlarmControl)) {
					fireAlarm_(freeMemoryAlarm, freeMemAlarmControl);
					freeMemoryAlarm = null;
				} else {
					freeMemoryAlarm.suppress();
					log.debug(freeMemoryAlarm.getName() + " suppressed");
				}
			}

			// other alarms...
			
			// operational status alarms
			readerDevice.getOperStatus();
			ReadPoint[] readPoints = readerDevice.getAllReadPoints();
			for (int i = 0; i < readPoints.length; i++) {
				readPoints[i].getOperStatus();
			}
			IOPort[] ioPorts = readerDevice.getAllIOPorts();
			for (int i = 0; i < ioPorts.length; i++) {
				ioPorts[i].getOperStatus();
			}
			NotificationChannel[] notifChans = readerDevice.getAllNotificationChannels();
			for (int i = 0; i < notifChans.length; i++) {
				notifChans[i].getOperStatus();
			}
			Source[] sources = readerDevice.getAllSources();
			for (int i = 0; i < sources.length; i++) {
				sources[i].getOperStatus();
			}

			try {
				Thread.sleep(AlarmManager.POLL_INTERVAL);
			} catch (InterruptedException ignore) { }

		}
	}
	
	/**
	 * Checks whether an edge-triggered alarm can be fired (does not care about
	 * the suppress interval - use the <code>isSuppressed</code> method).
	 * 
	 * @param value
	 *            The current value of the corresponding managed object field
	 * @param alarmControl
	 *            The alarm control
	 * @return <code>true</code> if it can be fired, <code>false</code>
	 *         otherwise
	 */
	private boolean isEdgeTriggeredAlarmReadyForFire(long value,
			EdgeTriggeredAlarmControl alarmControl) {
		if (alarmControl.getEnabled()) {
			boolean fallingEdge = alarmControl.getDirection() == EdgeTriggeredAlarmDirection.FALLING;
			if (alarmControl.getStatus() == EdgeTriggeredAlarmStatus.FIRED) {
				if (fallingEdge) {
					if (value > alarmControl.getRearmThreshold())
						alarmControl.setStatus(EdgeTriggeredAlarmStatus.ARMED);
				} else {
					if (value < alarmControl.getRearmThreshold())
						alarmControl.setStatus(EdgeTriggeredAlarmStatus.ARMED);
				}
			}
			if (alarmControl.getStatus() == EdgeTriggeredAlarmStatus.ARMED) {
				if (fallingEdge) {
					if (value < alarmControl.getAlarmThreshold()) {
						return true;
					}
				} else {
					if (value > alarmControl.getAlarmThreshold()) {
						return true;
					}
				}
			}
		}
		return false;
	}
	
	/**
	 * Checks whether an alarm is suppressed using its <code>AlarmControl</code>
	 * object.
	 * 
	 * @param alarmControl
	 *            The alarm control
	 * @return <code>true</code> if it is suppressed, <code>false</code>
	 *         otherwise
	 */
	private boolean alarmIsSuppressed(AlarmControl alarmControl) {
		Long lastFiredTime = lastFiredTimes.get(alarmControl);
		return !((lastFiredTime == null) || (System.currentTimeMillis()
				- lastFiredTime > alarmControl.getSuppressInterval() * 1000));
	}
	
	/**
	 * Fires an alarm.
	 * 
	 * @param alarm
	 *            The alarm
	 * @param alarmControl
	 *            The alarm control
	 */
	private void fireAlarm_(Alarm alarm, AlarmControl alarmControl) {
		alarmProcessor.process(alarm);
		lastFiredTimes.remove(alarmControl);
		lastFiredTimes.put(alarmControl, System.currentTimeMillis());
		if (alarmControl instanceof EdgeTriggeredAlarmControl) {
			((EdgeTriggeredAlarmControl) alarmControl)
					.setStatus(EdgeTriggeredAlarmStatus.FIRED);
		}
		log.debug(alarm.getName() + " fired");
	}
	
	/**
	 * Fires an alarm iff all relevant conditions are fulfilled.
	 * 
	 * @param alarm
	 *            The alarm
	 * @param alarmControl
	 *            The alarm control
	 */
	public void fireAlarm(Alarm alarm, AlarmControl alarmControl) {
		if (alarmControl.getEnabled()) {
			try {
				if (alarm instanceof TTOperStatusAlarm) {
					TTOperStatusAlarm operStatusAlarm = (TTOperStatusAlarm)alarm;
					TTOperationalStatusAlarmControl operStatusAlarmControl = (TTOperationalStatusAlarmControl)alarmControl;
					if ((operStatusAlarmControl.getTriggerFromState() == OperationalStatus.ANY)
							|| (operStatusAlarmControl.getTriggerToState() == OperationalStatus.ANY)
							|| (operStatusAlarm.getFromState() == operStatusAlarmControl
									.getTriggerFromState())
							|| (operStatusAlarm.getToState() == operStatusAlarmControl
									.getTriggerToState())) {
						if (!alarmIsSuppressed(operStatusAlarmControl)) {
							fireAlarm_(operStatusAlarm, operStatusAlarmControl);
						} else {
							operStatusAlarm.suppress();
							log
									.debug(operStatusAlarm.getName()
											+ " suppressed");
						}
					}
				} else if (alarmControl instanceof EdgeTriggeredAlarmControl) {
					EdgeTriggeredAlarmControl edgeTriggeredAlarmControl = (EdgeTriggeredAlarmControl)alarmControl;
					if (edgeTriggeredAlarmControl.getStatus() == EdgeTriggeredAlarmStatus.ARMED) {
						if (!alarmIsSuppressed(edgeTriggeredAlarmControl)) {
							fireAlarm_(alarm, edgeTriggeredAlarmControl);
						} else {
							alarm.suppress();
							log.debug(alarm.getName() + " suppressed");
						}
					}
				} else {
					if (!alarmIsSuppressed(alarmControl)) {
						fireAlarm_(alarm, alarmControl);
					} else {
						alarm.suppress();
						log.debug(alarm.getName() + " suppressed");
					}
				}
			} catch (ClassCastException cce) {
				log.error("Alarm and AlarmControl don't match.");
			}
		}
	}

}

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩一区二区在线看片| 综合久久国产九一剧情麻豆| 色婷婷综合久色| 国产福利一区二区三区视频在线 | 欧美不卡123| 日本韩国一区二区| 北条麻妃一区二区三区| 久久爱www久久做| 亚洲18影院在线观看| 国产精品久久久爽爽爽麻豆色哟哟 | 日本丶国产丶欧美色综合| 国产精品一二三| 免费欧美在线视频| 奇米888四色在线精品| 一二三四区精品视频| 亚洲欧美国产三级| 亚洲婷婷综合久久一本伊一区| 国产日韩三级在线| 国产亚洲综合av| 精品福利av导航| 欧美成人精品1314www| 日韩免费在线观看| xfplay精品久久| 国产午夜亚洲精品理论片色戒 | 91久久线看在观草草青青| 91一区二区三区在线观看| 99re热这里只有精品视频| 91在线你懂得| 欧美性xxxxxxxx| 欧美一级二级三级乱码| 日韩一区二区三区高清免费看看| 91精品综合久久久久久| 欧美一区二区视频网站| 久久久精品免费观看| 亚洲乱码国产乱码精品精的特点| 亚洲综合成人在线| 日本v片在线高清不卡在线观看| 精品一区二区久久久| 国产不卡在线视频| 欧美精品18+| 精品少妇一区二区三区在线视频| 精品国产91洋老外米糕| 国产欧美日产一区| 中文字幕一区二区三区乱码在线 | 欧美日韩在线免费视频| 91麻豆精品国产91久久久久久| 日韩精品一区二区三区蜜臀 | 国产拍揄自揄精品视频麻豆| 国产欧美精品国产国产专区| 国产精品夫妻自拍| 亚洲一区二区三区美女| 精品一区精品二区高清| 国产精品伊人色| av电影天堂一区二区在线观看| 欧美色图一区二区三区| 欧美一级久久久久久久大片| 久久天天做天天爱综合色| 亚洲一二三级电影| 国产一二三精品| 在线观看成人免费视频| xnxx国产精品| 色综合欧美在线视频区| 91精品国产综合久久福利软件| 国产精品欧美综合在线| 日本女人一区二区三区| 91蝌蚪porny| 久久婷婷色综合| 亚洲欧美日韩国产手机在线| 美女视频一区二区| 欧美亚洲丝袜传媒另类| 国产精品第五页| 国内精品伊人久久久久av一坑 | 自拍偷拍国产亚洲| 国产精品一区二区果冻传媒| 正在播放一区二区| 亚洲女女做受ⅹxx高潮| 国产精品影视在线| 欧美福利视频一区| 国产女人aaa级久久久级| 亚洲图片一区二区| 国产**成人网毛片九色 | 国产午夜三级一区二区三| 日韩vs国产vs欧美| 成人免费视频视频| 久久久久亚洲蜜桃| 国产麻豆精品视频| 欧美大尺度电影在线| 亚洲福中文字幕伊人影院| 成人av电影在线播放| 久久精品一二三| 久久国产精品色婷婷| 欧美日韩一级大片网址| 亚洲一区影音先锋| 在线观看av一区| 国产综合色在线视频区| 日韩精品一区二区三区视频在线观看| 秋霞午夜鲁丝一区二区老狼| 在线不卡中文字幕播放| 理论片日本一区| 国产欧美日韩久久| 欧美国产精品一区| 成人av在线播放网站| 国产精品麻豆久久久| 一本大道久久a久久综合 | 欧美乱妇23p| 视频一区免费在线观看| 91黄色免费网站| 亚洲卡通动漫在线| 在线观看91精品国产麻豆| 日本视频一区二区| 久久久国产午夜精品| 成人av在线资源网| 亚洲综合免费观看高清完整版| 6080日韩午夜伦伦午夜伦| 国产一区二区三区高清播放| 国产日韩欧美制服另类| 色综合天天综合网天天狠天天| 一区二区三区在线免费播放| 91精品国产欧美日韩| 国产精品一区二区男女羞羞无遮挡| 久久精品无码一区二区三区| 成人动漫一区二区| 爽爽淫人综合网网站| 久久综合九色综合97婷婷女人 | www国产精品av| 丰满亚洲少妇av| 亚洲国产视频a| 久久久久国产精品麻豆| 欧美丝袜丝nylons| 处破女av一区二区| 免费视频最近日韩| 国产欧美日本一区视频| 欧美视频在线观看一区二区| 丁香六月综合激情| 麻豆精品在线播放| 国产女人水真多18毛片18精品视频| 欧美三级三级三级| 97久久精品人人爽人人爽蜜臀| 久久精品久久99精品久久| 亚洲二区在线观看| 日韩毛片高清在线播放| 久久久久久久综合色一本| 欧美日韩国产综合一区二区| 91色九色蝌蚪| 成人网男人的天堂| 国模冰冰炮一区二区| 日韩va亚洲va欧美va久久| 亚洲日本青草视频在线怡红院 | 亚洲成人免费影院| 亚洲免费观看高清完整版在线 | 麻豆专区一区二区三区四区五区| 亚洲欧美日韩在线不卡| 久久精品人人做| 久久先锋影音av| 久久久精品免费网站| 日韩视频在线永久播放| 日韩精品一区二区三区在线| 91精品国产高清一区二区三区蜜臀| 国产盗摄一区二区| 国产精品性做久久久久久| 国产精品一品视频| 成人妖精视频yjsp地址| 国产v综合v亚洲欧| 国产成人免费视频网站| 成人国产精品免费观看视频| 风间由美一区二区三区在线观看| 成人高清视频在线观看| 精品理论电影在线观看| 精品入口麻豆88视频| 欧美xxxx老人做受| 国产欧美日韩视频一区二区 | 国产精品久久久久久一区二区三区 | 麻豆精品视频在线观看视频| 麻豆国产精品官网| 91香蕉视频污| 欧美精品乱码久久久久久| 国产日韩欧美在线一区| 亚洲成人免费av| 成人综合婷婷国产精品久久免费| 欧美在线视频不卡| 国产视频一区在线播放| 午夜精品免费在线观看| av成人免费在线观看| 欧美精品一区二区三区很污很色的| 一区二区免费视频| 国产成人啪午夜精品网站男同| 欧美日韩中文另类| 国产精品久久久久一区| 激情欧美一区二区| 91精品久久久久久蜜臀| 亚洲三级理论片| 成人性视频免费网站| 久久众筹精品私拍模特| 青青青伊人色综合久久| 欧美日韩精品三区| 亚洲高清免费视频| 色88888久久久久久影院野外| 中文幕一区二区三区久久蜜桃| 极品少妇xxxx精品少妇| 日韩欧美一区二区久久婷婷|