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

📄 mpoolingclient.java

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

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

public final class MPoolingClient
implements MCommand, MSubject1
{
private static final long INTERVAL = 10000;
private static MPoolingClient instance;
private boolean suspended;
private boolean stopped = false;
private MSubject1 subject = new MSubject1Impl();
//--------------------------------------------------------------------------------------------
public static final synchronized MPoolingClient getInstance()
{
if( instance == null )
	{
	instance = new MPoolingClient();
	}
return instance;
}
//--------------------------------------------------------------------------------------------
private MPoolingClient()
{
//private constructor( Singleton pattern ).
}
//--------------------------------------------------------------------------------------------
public final void execute()
{
while( !stopped )
	{
	suspended = ( MSessionManager.getInstance().getSessionCount() == 0 );
	synchronized( this )
		{
		while( suspended )
			{
			try
				{
				wait();
				}
			catch( InterruptedException e )
				{
				break;
				}
			}
		}
	doit();
	}
}
//--------------------------------------------------------------------------------------------
public final void breakCommand()
{
stopped = true;
Thread.currentThread().interrupt();
}
//--------------------------------------------------------------------------------------------
public final synchronized void resume()
{
if( suspended == true )
	{
	suspended = false;
	notify();
	}
}
//--------------------------------------------------------------------------------------------
private void doit()
{
MTunnelData tunnelData = new MTunnelData();
tunnelData.setMethod( MTunnelData.NOOP );
tunnelData.setSequence( 0 );
tunnelData.setSessionName( MStringUtil.generateRandomString() );
byte[] w_buffer = "".getBytes();
tunnelData.setBuffer( w_buffer );

	//send NOOP
MHTunnelRequest request = new MHTunnelRequest( tunnelData );
MTunnelRequestSender sender = new MTunnelRequestSender( request );
sender.execute();

int state = sender.getState();
if( state != MTunnelRequestSender.SUCCESS )
	{
	sleep();
	return;
	}

Socket socket = sender.getSocket();
MResponseReceiver receiver = new MResponseReceiver( socket );
receiver.execute();

state = receiver.getState();
if( state != MResponseReceiver.SUCCESS )
	{
	sleep();
	return;
	}

MHttpResponse response = receiver.getResponse();

MLEYE.getInstance().sendDataToClient( response );
}
//--------------------------------------------------------------------------------------------
private void sleep()
{
try
	{
	Thread.sleep( 5000 );
	}
catch( InterruptedException e )
	{
	}
}
//--------------------------------------------------------------------------------------------
public void notify1()
{
subject.notify1();
}
//----------------------------------------------------------------
public void register1( MObserver1 observer )
{
subject.register1( observer );
}
//----------------------------------------------------------------
public void removeObservers1()
{
subject.removeObservers1();
}
//----------------------------------------------------------------
public void removeObserver1( MObserver1 observer )
{
subject.removeObserver1( observer );
}
//----------------------------------------------------------------
}

⌨️ 快捷键说明

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