📄 msession.java
字号:
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 + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -