📄 channelstatusmonitorimpl.java
字号:
package com.infobank.superchannel.admin.monitor.implementation;import java.rmi.RemoteException;import java.rmi.registry.LocateRegistry;import java.rmi.registry.Registry;import java.rmi.server.UnicastRemoteObject;import java.util.List;import org.apache.commons.configuration.Configuration;import com.infobank.superchannel.admin.monitor.ChannelStatusMonitor;import com.infobank.superchannel.admin.monitor.MessageLauncherStatusMonitor;import com.infobank.superchannel.daemon.messagelauncher.MessageLauncherDaemon;import com.infobank.superchannel.daemon.messagelauncher.channel.ChannelPlugin;import com.infobank.superchannel.observer.implementation.CompoundChannelStatusObserver;import com.infobank.superchannel.observer.implementation.FilePersistenceChannelStatusObserver;import com.infobank.superchannel.observer.implementation.MemoryPersistenceChannelStatusObserver;import com.infobank.superchannel.pojo.ChannelInfo;import com.infobank.superchannel.pojo.ControllerUserToken;import com.infobank.superchannel.pojo.GenericLog;import com.infobank.superchannel.pojo.TextMessageLog;import com.infobank.superchannel.util.DaemonConfiguration;/** * @author Xiaoguang Sun * @version 类说明: 通道状态监控器实现 */public class ChannelStatusMonitorImpl implements ChannelStatusMonitor { // 通道状态复合观察者对象 private CompoundChannelStatusObserver observer=null; // 通道插件对象 private ChannelPlugin channel=null; /** * 构造函数 * @param channel 通道插件对象 */ public ChannelStatusMonitorImpl(MessageLauncherDaemon daemon,ChannelPlugin channel){ this.channel=channel; try{ observer=new CompoundChannelStatusObserver(new FilePersistenceChannelStatusObserver(daemon)); UnicastRemoteObject.exportObject(this, 0); channel.attachObserver(observer); } catch(RemoteException ex){ System.err.println("fatal error: could not bind monitor to registry"); throw new RuntimeException("fatal error: could not bind monitor to registry"); } } /** * 构造函数 * @param observer 观察者对象 * @return 此通道累计发送短信息数目 * @deprecated 注意,此方法仅供测试程序使用 */ public ChannelStatusMonitorImpl(MemoryPersistenceChannelStatusObserver observer){ this.observer=new CompoundChannelStatusObserver(observer); } /** * 取得此通道消息发送平均所用时间(单位毫秒:1000毫秒=1秒) * @param token 用户访问令牌 * @return 此通道消息发送平均所用时间 */ public int getAverageTimeUsagePerMessage(ControllerUserToken token) { return observer.getAverageTimeUsagePerMessage(token); } /** * 取得此通道描述信息 * @param token 用户访问令牌 * @return 此通道描述信息 */ public ChannelInfo getChannelInfo(ControllerUserToken token) { return channel.getChannelInfo(); } /** * 取得此通道自上次调用此方法后所发送的所有短信息的日志 * @param token 用户访问令牌 * @return 此通道自上次调用此方法后所发送的所有短信息的日志 */ public List<TextMessageLog> getDeliverMessageLog(ControllerUserToken token) { return observer.getDeliverMessageLog(token); } /** * 取得此通道累计发送短信息数目 * @param token 用户访问令牌 * @return 此通道累计发送短信息数目 */ public int getNumberOfSentMessages(ControllerUserToken token) { return observer.getNumberOfSentMessages(token); } /** * 为当前用户访问令牌建立监控信息绑定 * @param token 用户访问令牌 * @return 操作是否成功 */ public boolean attach(ControllerUserToken token){ return observer.attachObserver(token, new MemoryPersistenceChannelStatusObserver()); } /** * 为当前用户访问令牌解除监控信息绑定 * @param token 用户访问令牌 * @return 操作是否成功 */ public boolean detach(ControllerUserToken token){ return observer.detachObserver(token); } /** * 获取自上次调用此方法后产生的所有通用日志 * @param token 用户访问令牌 * @return 自上次调用此方法后产生的所有通用日志 */ public List<GenericLog> getGenericLog(ControllerUserToken token){ return observer.getGenericLog(token); } /** * 取得此通道累计发送短信息失败次数 * @param token 用户访问令牌 * @return 此通道累计发送短信息失败次数 */ public int getNumberOfFailedMessages(ControllerUserToken token){ return observer.getNumberOfFailedMessages(token); } /** * 取得此通道累计发送短信息成功次数 * @param token 用户访问令牌 * @return 此通道累计发送短信息成功次数 */ public int getNumberOfSuccessfulMessages(ControllerUserToken token){ return observer.getNumberOfSuccessfulMessages(token); } /** * 获取当前被监控组件的状态 * @param token 用户访问令牌 * @return 当前被监控组件的状态 */ public String getState(ControllerUserToken token){ return channel.getState(); }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -