📄 tail.java
字号:
package com.hoten.tail;
import java.io.*;
import java.util.*;
import java.net.*;
import com.hoten.util.*;
/**
* <p>Title: </p>
* <p>Description: </p>
* <p>Copyright: Copyright (c) 2002</p>
* <p>Company: </p>
* @author not attributable
* @version 1.0
*/
public class Tail implements Runnable {
private TailList list = TailList.getInstance();
private TailInfo info = null;
private String _logFile = MOParam.getInstance().logFile;
private DBAccess dbAccess = new DBAccess();
private static boolean flag=true;
private DatagramSocket socket;
public Tail() {
try {
creatSocket();
}
catch (Exception ex) {
}
}
public static void stopThread(){
flag=false;
}
private void creatSocket()throws Exception{
socket = new DatagramSocket();
}
public void run(){
Log.printEvent("监控系统启动",_logFile);
int i = 0;
try {
/** 未被中断情况下正常运行 */
while(flag){
/** 取到并删处MO消息队列中的一条消息 */
info = (TailInfo)list.remove();
/** 若消息队列为空,暂停一段时间再继续循环获取消息 */
if(info==null){
if(i==0){
TailTools.setTailFlag(dbAccess);
}
i++;
if(i==60*3) i=0;
Thread.currentThread().sleep(1000);
continue;
}
/** 若消息体为空,则将相应消息特殊标记,存入公共出错模块,否则正常处理 */
try {
doTail(info);
}
catch (Exception ex) {
try {
socket.close();
creatSocket();
}
catch (Exception x) {
}
Log.printError(ex,"","",_logFile);
}
info=null;
Thread.currentThread().sleep(10);
}
}
/** InterruptedException异常 */
catch (InterruptedException ex) {
}
dbAccess.release();
Log.printEvent("监控系统退出",_logFile);
}
private void doTail(TailInfo info)throws Exception{
if(socket.isClosed()){
creatSocket();
}
DatagramPacket dp = getPacket(info);
sendPacket(dp);
}
private DatagramPacket getPacket(TailInfo info)throws Exception{
DatagramPacket dp= new DatagramPacket(info.getData(),info.getData().length,InetAddress.getByName(info.getHost()),info.getPort());
return dp;
}
private void sendPacket(DatagramPacket packet)throws Exception{
socket.send(packet);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -