msession.java

来自「httptunnel.jar httptunnel java 源码」· Java 代码 · 共 125 行

JAVA
125
字号
package net.jumperz.app.httptunnel;

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

public final class MSession
{
private Socket socket;
private int recvSequence;
private int sendSequence;
private HashMap dataMap;
private String sessionName;
private boolean busy;
private boolean closed;
//-----------------------------------------------------------------------------------------
/**
 * Constructor called by REYE 
 */
public MSession( String in_sessionName )
{
sessionName	= in_sessionName;
recvSequence	= 0;
sendSequence	= 0;
dataMap		= new HashMap();
busy		= true;
closed		= false;
}
//-----------------------------------------------------------------------------------------
/**
 * Constructor called by LEYE
 */
public MSession( Socket in_socket )
{
socket		= in_socket;
recvSequence	= 0;
sendSequence	= 0;
dataMap		= new HashMap();
busy		= false;
closed		= false;

InetAddress inetAddr = socket.getInetAddress();
Date date = new Date();
long time = date.getTime();

sessionName = inetAddr.getHostAddress() + ":" + Integer.toString( socket.getPort() ) + "@" + Long.toString( time );
}
//-----------------------------------------------------------------------------------------
public final int getSequence()
{
recvSequence++;
return recvSequence - 1;
}
//-----------------------------------------------------------------------------------------
public final String getSessionName()
{
return sessionName;
}
//-----------------------------------------------------------------------------------------
public final synchronized void putData( MTunnelData tunnelData )
{
dataMap.put( Integer.toString( tunnelData.getSequence() ), tunnelData );
}
//-----------------------------------------------------------------------------------------
public final boolean isBusy()
{
return busy;
}
//-----------------------------------------------------------------------------------------
public final boolean hasNextTunnelData()
{
String key = Integer.toString( sendSequence );
if( dataMap.containsKey( key ) )
	{
	return true;
	}
else
	{
	return false;
	}
}
//-----------------------------------------------------------------------------------------
public final synchronized MTunnelData getNextTunnelData()
throws IOException
{
String key = Integer.toString( sendSequence );
MTunnelData tunnelData = ( MTunnelData )dataMap.get( key );

busy = true;
dataMap.remove( key );
sendSequence++;

return tunnelData;
}
//-----------------------------------------------------------------------------------------
public final synchronized void clearBusy()
{
busy = false;
}
//-----------------------------------------------------------------------------------------
public final Socket getSocket()
{
return socket;
}
//-----------------------------------------------------------------------------------------
public final void setSocket( Socket IN_socket )
{
socket = IN_socket;
busy = false;
}
//-----------------------------------------------------------------------------------------
public final synchronized void close()
{
closed = true;
}
//-----------------------------------------------------------------------------------------
public final synchronized boolean isClosed()
{
return closed;
}
//-----------------------------------------------------------------------------------------
}

⌨️ 快捷键说明

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