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

📄 mresponsemanager.java

📁 httptunnel.jar httptunnel java 源码
💻 JAVA
字号:
package net.jumperz.app.httptunnel.MREYE;

import java.io.*;
import java.net.*;
import java.util.*;
import net.jumperz.util.*;
import net.jumperz.app.httptunnel.*;

public final class MResponseManager
{
private HashMap socketTimeMap; //socket and time
private ArrayList responseList;
private MREYE rEye;

public static final long INTERVAL = 4000;
public static final long TIMEOUT  = 10000;
public static final int  KEEP     = 4;
private static MResponseManager instance;
//----------------------------------------------------------------------------------------------
public static final MResponseManager getInstance()
{
if( instance == null )
	{
	instance = new MResponseManager();
	}
return instance;
}
//----------------------------------------------------------------------------------------------
private MResponseManager()
{
rEye = MREYE.getInstance();
socketTimeMap = new HashMap();
responseList = new ArrayList();
}
//----------------------------------------------------------------------------------------------
/**
 * If a socket is waiting too long, send NOOP and close socket.
 */
public final synchronized void timerTimer()
{
Iterator p = socketTimeMap.keySet().iterator();
while( p.hasNext() )
	{
	Socket socket = ( Socket )p.next();
	Integer timeWait = ( Integer ) socketTimeMap.get( socket );
	int intTimeWait = timeWait.intValue();
	intTimeWait += INTERVAL;
	if( intTimeWait > TIMEOUT )
		{
		p.remove();
		rEye.sendNOOP( socket );
		}
	else
		{
		socketTimeMap.put( socket, new Integer( intTimeWait ) );
		}
	}
}
//----------------------------------------------------------------------------------------------
public final synchronized void addSocket( Socket socket )
{
if( responseList.size() == 0
 && socketTimeMap.size() >= KEEP
  )
	{
		//if there are many sockets already,
		//send NOOP immediatery.
	rEye.sendNOOP( socket );
	}
else
	{
	Integer timeWait = new Integer( 0 ); 
	socketTimeMap.put( socket, timeWait ); 
	checkData();
	}
}
//----------------------------------------------------------------------------------------------
public final synchronized void putResponse( MResponse response )
{
responseList.add( response );
checkData();
}
//----------------------------------------------------------------------------------------------
public final synchronized void checkData()
{
Iterator p = socketTimeMap.keySet().iterator();
if( p.hasNext() )
	{
	if( !responseList.isEmpty() )
		{
		Socket socket = ( Socket )p.next();
		p.remove();
		MResponse response = ( MResponse )( responseList.remove( 0 ) );
		rEye.sendResponse( socket, response );
		}
	}
}
//----------------------------------------------------------------------------------------------
}

⌨️ 快捷键说明

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