📄 databasecachedaemonrunningstate.java.svn-base
字号:
package com.infobank.superchannel.daemon.databasecache;import java.rmi.NoSuchObjectException;import java.rmi.server.UnicastRemoteObject;import java.util.Queue;import java.util.concurrent.atomic.AtomicReference;import com.infobank.superchannel.daemon.GenericState;import com.infobank.superchannel.daemon.GenericDaemon;import com.infobank.superchannel.pojo.BlackList;import com.infobank.superchannel.pojo.TextMessage;import com.infobank.superchannel.util.DaemonTaskExecutor;/** * @author Xiaoguang Sun * @version 类说明: 数据库缓冲服务器运行状态 */public class DatabaseCacheDaemonRunningState extends DatabaseCacheDaemonState { // 当前状态说明 private final static String state="Running"; /** * 私有构造函数,保证此类只能拥有单个实例存在 */ private DatabaseCacheDaemonRunningState(){ } /** * 暂停守护进程 */ public boolean pause() { return false; //getDaemon().setState(DatabaseCacheDaemonPausedState.getInstance()); //return true; } /** * 重新启动守护进程 */ public boolean restart() { return false; } /** * 继续运行暂停中的守护进程 */ public boolean resume() { return false; } /** * 启动守护进程 */ public boolean start() { return false; } /** * 停止守护进程 */ public boolean stop() { // 将当前状态切换成为运行到停止的中间状态 getDaemon().setState(DatabaseCacheDaemonRunningToStoppedTransitionState.getInstance()); try{ // 撤销RMI绑定 while(!UnicastRemoteObject.unexportObject(getDaemon(), true)){ Thread.sleep(1000); } }catch(NoSuchObjectException ex){ getDaemon().setState(getInstance()); return false; } catch(InterruptedException ex){ getDaemon().setState(getInstance()); return false; } // 更换状态为停止态 getDaemon().setState(DatabaseCacheDaemonStoppedState.getInstance()); // 停止任务执行器 DaemonTaskExecutor.fini(getDaemon()); // 强制将内存中的状态数据回写回数据库 getDaemon().stateForceUpdateStatusQueue(); return true; } /** * 取得此状态机的单件实例 * @return 此状态机的单件实例 */ public static DatabaseCacheDaemonState getInstance(){ return instance.get(); } /** * 此状态机的单件实例 */ private static AtomicReference<DatabaseCacheDaemonRunningState> instance=new AtomicReference<DatabaseCacheDaemonRunningState>(new DatabaseCacheDaemonRunningState()); /** * 新增待发信息到待发信息队列 * @param messages 待发消息 * @pararm tag message tag * @return 操作是否成功 */ @Override public boolean addNewMessage(Queue<TextMessage> messages,String tag) { getDaemon().stateAddNewMessage(messages,tag); return true; } /** * 取出信息状态待更新队列中所有状态待更新的信息 * @return 信息状态待更新队列中所有状态待更新的信息 */ @Override public Queue<TextMessage> getPendingStatusUpdate() { return getDaemon().stateGetPendingStatusUpdate(); } /** * 将所给信息的新状态更新回数据库 * @param status 信息新状态更新请求 * @return 操作是否成功 */ @Override public boolean updateMessageStatus(Queue<TextMessage> status) { getDaemon().stateUpdateMessageStatus(status); return true; } /** * 取出待发短信息队列中所有的信息 * @param tag message tag * @return 待发短信息队列中所有的信息 */ @Override public Queue<TextMessage> getNewMessage(String tag) { return getDaemon().stateGetNewMessage(tag); } /** * 当前数据库缓冲服务器是否可运行 * @return 当前数据库缓冲服务器是否可运行 */ @Override public boolean isRunnable() { return true; } /** * 当前数据库缓冲服务器是否出于暂停态 * @return 当前数据库缓冲服务器是否出于暂停态 */ @Override public boolean isPaused() { return false; } /** * 重新加载守护进程配置 */ public boolean reload() { return false; } /** * 获取守护进程当前状态 */ public String getState(){ return state; } @Override public void setBlackList(BlackList blacklist) { getDaemon().stateSetBlackList(blacklist); } @Override public boolean newIncomingMessage(Queue<TextMessage> messages) { return getDaemon().stateNewIncomingMessage(messages); } @Override public Queue<TextMessage> getNewIncomingMessage() { return getDaemon().stateGetNewIncomingMessage(); }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -