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

📄 msessionwindow.java

📁 httptunnel.jar httptunnel java 源码
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
		catch( ArrayIndexOutOfBoundsException e )
			{
			break;
			}
		}
	updateGui();
	}
catch( IOException e )
	{
	doorman.notifyException( e );
	}
}
// --------------------------------------------------------------------------------
private void saveSessions()
{
saveSessions( true );
//saveSessions( false );
}
// --------------------------------------------------------------------------------
private void saveSessions( boolean gzip )
{
String fileName = doorman.saveFile();
if( fileName == null )
	{
	return;
	}
try
	{
	XMLEncoder encoder;
	if( gzip )
		{
		encoder = new XMLEncoder( new BufferedOutputStream( new GZIPOutputStream( new FileOutputStream( fileName ) ) ) );
		}
	else
		{
		encoder = new XMLEncoder( new BufferedOutputStream( new FileOutputStream( fileName ) ) );
		}
	TableItem[] items = sessionTable.getSelection();
	int count = items.length;
	java.util.List sessionList = new ArrayList();
	for( int i = 0; i < count; ++i )
		{
		MBaseSession session = ( MBaseSession )itemSessionMap.get( items[ i ] );
		sessionList.add( session );
		}
	MSessionWriter writer = new MSessionWriter( sessionList, encoder );
	writer.execute();
	//doorman.threadPool.addCommand( writer );
	}
catch( IOException e )
	{
	doorman.notifyException( e );
	}
}
// --------------------------------------------------------------------------------
private void onSaveResponseItemSelect()
{
save( TYPE_RESPONSE );
}
// --------------------------------------------------------------------------------
private void onSaveResponseHeaderItemSelect()
{
save( TYPE_RESPONSE_HEADER );
}
// --------------------------------------------------------------------------------
private void onSaveResponseBodyItemSelect()
{
save( TYPE_RESPONSE_BODY );
}
// --------------------------------------------------------------------------------
private void onSaveRequestItemSelect()
{
save( TYPE_REQUEST );
}
// --------------------------------------------------------------------------------
private void onSaveRequestHeaderItemSelect()
{
save( TYPE_REQUEST_HEADER );
}
// --------------------------------------------------------------------------------
private void onSaveRequestBodyItemSelect()
{
save( TYPE_REQUEST_BODY );
}
// --------------------------------------------------------------------------------
private void save( int type )
{
try
	{
	save2( type );
	}
catch( IOException e )
	{
	doorman.notifyException( e );
	}
}
// --------------------------------------------------------------------------------
private void save2( int type )
throws IOException
{
int count = sessionTable.getSelectionCount();
if( count < 1 )
	{
	return;
	}

MBaseSession session = ( MBaseSession )itemSessionMap.get( sessionTable.getSelection()[ 0 ] );
byte[] buffer = null;
if( type == TYPE_REQUEST )
	{
	buffer = session.getRequestByte();
	}
else if( type == TYPE_REQUEST_HEADER )
	{
	MHttpRequest request = getRequest( session.getRequestByte() );
	buffer = request.getHeader();
	}
else if( type == TYPE_REQUEST_BODY )
	{
	MHttpRequest request = getRequest( session.getRequestByte() );
	if( !request.hasBody() )
		{
		return;
		}
	buffer = MStreamUtil.streamToBytes( request.getBodyInputStream() );
	}
else if( type == TYPE_RESPONSE )
	{
	buffer = session.getResponseByte();
	}
else if( type == TYPE_RESPONSE_HEADER )
	{
	MHttpResponse response = getResponse( session.getResponseByte() );
	buffer = response.getHeader();
	}
else if( type == TYPE_RESPONSE_BODY )
	{
	MHttpResponse response = getResponse( session.getResponseByte() );
	if( !response.hasBody() )
		{		
		return;
		}
	buffer = MStreamUtil.streamToBytes( response.getBodyInputStream() );
	}

if( buffer == null )
	{
	return;
	}

String fileName = doorman.saveFile();
if( fileName == null )
	{
	return;
	}

MStreamUtil.writeByteToFile( buffer, fileName );
}
// --------------------------------------------------------------------------------
private MHttpRequest getRequest( byte[] buffer )
throws IOException
{
MHttpRequest request = new MHttpRequest( new BufferedInputStream( new ByteArrayInputStream( buffer ) ) );
return request;
}
// --------------------------------------------------------------------------------
private MHttpResponse getResponse( byte[] buffer )
throws IOException
{
MHttpResponse Response = new MHttpResponse( new BufferedInputStream( new ByteArrayInputStream( buffer ) ) );
return Response;
}
// --------------------------------------------------------------------------------
private void onCopyUrlItemSelect()
{
int count = sessionTable.getSelectionCount();
if( count < 1 )
	{
	return;
	}
MSwtUtil.copyToClipboard( sessionTable.getSelection()[ 0 ].getText( URL_INDEX ) );
}
// --------------------------------------------------------------------------------
private void onTableColumnResize()
{
MSwtUtil.setTableColumnWidthToProperties( "sessionTable", sessionTable, prop );
}
// --------------------------------------------------------------------------------
protected void onShellResize()
{
	// window
saveWindowBounds();
}
// --------------------------------------------------------------------------------
private void onSessionTableSelect()
{
updateGui();
}
// --------------------------------------------------------------------------------
public void updateGui()
{
updateMenus();

int count = sessionTable.getSelectionCount();
if( count == 0 )
	{
	doorman.selectedSession = null;
	}
else if( count == 1 )
	{
	MBaseSession session = ( MBaseSession )itemSessionMap.get( sessionTable.getSelection()[ 0 ] );
	doorman.selectedSession = session;
	updateGui( session );
	}
else
	{
	return;
	}
doorman.requestWindow.updateGui();
doorman.responseWindow.updateGui();
}
// --------------------------------------------------------------------------------
public void updateGui( MBaseSession session )
{
if( sessionItemMap.containsKey( session ) )
	{
	TableItem item = ( TableItem )sessionItemMap.get( session );

	setMethod( item, session.getMethod() );
	setState( item, session.getStateString() );
	setStatusCode( item, session.getStatusCode() );
	setCSocketString( item, session.getCSocketString() );
	setSSocketString( item, session.getSSocketString() );
	}
else if( session.getState() != MBaseSession.ERROR )
	{
		// add to table
	TableItem item = new TableItem( sessionTable, SWT.NONE );
	
	setIndex( item, count );
	++count;
	
	setTime( item, session.getTime() );
	setUrl( item, session.getUri() );
	setState( item, session.getStateString() );
	setMethod( item, session.getMethod() );
	setStatusCode( item, session.getStatusCode() );
	setCSocketString( item, session.getCSocketString() );
	setSSocketString( item, session.getSSocketString() );

	sessionTable.showItem( item );
	sessionItemMap.put( session, item );
	itemSessionMap.put( item, session );
	}
}
// --------------------------------------------------------------------------------
private void setSSocketString( TableItem item, String s )
{
item.setText( SSOCKET_INDEX, s );
}
// --------------------------------------------------------------------------------
private void setCSocketString( TableItem item, String s )
{
item.setText( CSOCKET_INDEX, s );
}
// --------------------------------------------------------------------------------
private void setStatusCode( TableItem item, String statusCode )
{
item.setText( STATUSCODE_INDEX, statusCode );
}
// --------------------------------------------------------------------------------
private void setMethod( TableItem item, String method )
{
item.setText( METHOD_INDEX, method );
}
// --------------------------------------------------------------------------------
private void setState( TableItem item, String state )
{
item.setText( STATE_INDEX, state );
}
// --------------------------------------------------------------------------------
private void setUrl( TableItem item, String url )
{
item.setText( URL_INDEX, url );
}
// --------------------------------------------------------------------------------
private void setTime( TableItem item, String timeStr )
{
item.setText( TIME_INDEX, timeStr );
}
// --------------------------------------------------------------------------------
private void setIndex( TableItem item, int index )
{
item.setText( INDEX_INDEX, Integer.toString( index ) );
}
// --------------------------------------------------------------------------------
public void setFont( Font font )
{
sessionTable.setFont( font );

int count = sessionTable.getSelectionCount();
if( count == 1 )
	{
	TableItem item = sessionTable.getSelection()[ 0 ];
	sessionTable.showItem( item );
	}
}
// --------------------------------------------------------------------------------
private void updateMenus()
{
Table table = sessionTable;

int count = table.getSelectionCount();
boolean oneItemSelected = ( count == 1 );
boolean itemSelected = ( count > 0 );
boolean multiItemSelected = ( count > 1 );
boolean itemExists = ( table.getItemCount() > 0 );

saveSessionItem.setEnabled( itemSelected );
removeItem.setEnabled( itemSelected );
saveRequestItem.setEnabled( oneItemSelected );
saveRequestHeaderItem.setEnabled( oneItemSelected );
saveRequestBodyItem.setEnabled( oneItemSelected );
saveResponseItem.setEnabled( oneItemSelected );
saveResponseHeaderItem.setEnabled( oneItemSelected );
saveResponseBodyItem.setEnabled( oneItemSelected );
copyUrlItem.setEnabled( oneItemSelected );
selectAllItem.setEnabled( itemExists );
}
// --------------------------------------------------------------------------------
}

⌨️ 快捷键说明

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