You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-dev@axis.apache.org by du...@apache.org on 2001/08/01 15:13:48 UTC
cvs commit: xml-axis/java/src/org/apache/axis/utils tcpmon.java
dug 01/08/01 06:13:47
Modified: java/src/org/apache/axis/utils tcpmon.java
Log:
Add support for resending the request (you can modify it too before
resending - it just takes whatever's in the left pane).
Been using this for testing other stuff and thought others might
find it handy.
Revision Changes Path
1.11 +88 -15 xml-axis/java/src/org/apache/axis/utils/tcpmon.java
Index: tcpmon.java
===================================================================
RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/utils/tcpmon.java,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -r1.10 -r1.11
--- tcpmon.java 2001/07/30 14:48:12 1.10
+++ tcpmon.java 2001/08/01 13:13:47 1.11
@@ -221,6 +221,7 @@
InputStream in = null ;
OutputStream out = null ;
boolean xmlFormat ;
+ boolean done = false ;
public SocketRR(Socket inputSocket, InputStream inputStream,
Socket outputSocket, OutputStream outputStream,
@@ -234,6 +235,10 @@
start();
}
+ public boolean isDone() {
+ return( done );
+ }
+
public void run() {
try {
byte[] buffer = new byte[4096];
@@ -255,7 +260,8 @@
// No matter how we may (or may not) format it, send it
// on unformatted - we don't want to mess with how its
// sent to the other side, just how its displayed
- out.write( buffer, saved, len );
+ if ( out != null )
+ out.write( buffer, saved, len );
if ( xmlFormat ) {
// Do XML Formatting
@@ -300,7 +306,8 @@
}
this.sleep(3); // Let other threads have a chance to run
}
- halt();
+ // halt();
+ done = true ;
}
catch( Exception e ) {
// e.printStackTrace();
@@ -338,6 +345,7 @@
Thread serverThread ;
SocketRR rr1 = null ;
SocketRR rr2 = null ;
+ InputStream inputStream ;
public Connection(Listener l, Socket s ) {
listener = l ;
@@ -345,14 +353,26 @@
start();
}
+ public Connection(Listener l, InputStream in ) {
+ listener = l ;
+ inputStream = in ;
+ start();
+ }
+
public void run() {
try {
- InetAddress h = inSocket.getInetAddress();
- DateFormat df = new SimpleDateFormat("MM/dd/yy hh:mm:ss aa");
-
active = true ;
- fromHost = h.getHostName();
- time = df.format( new Date() );
+
+ if ( inSocket != null ) {
+ InetAddress h = inSocket.getInetAddress();
+ fromHost = h.getHostName();
+ }
+ else {
+ fromHost = "resend" ;
+ }
+
+ DateFormat df = new SimpleDateFormat("MM/dd/yy hh:mm:ss aa");
+ time = df.format( new Date() );
int count = listener.connections.size();
listener.tableModel.insertRow(count+1, new Object[] { "Active",
@@ -376,6 +396,7 @@
listener.removeButton.setEnabled(false);
listener.removeAllButton.setEnabled(true);
listener.saveButton.setEnabled(true);
+ listener.resendButton.setEnabled(true);
listener.outPane.setDividerLocation(divLoc);
listener.outPane.setVisible( true );
}
@@ -383,22 +404,26 @@
String targetHost = listener.hostField.getText();
int targetPort = Integer.parseInt(listener.tPortField.getText());
- InputStream tmpIn1 = null ;
+ InputStream tmpIn1 = inputStream ;
OutputStream tmpOut1 = null ;
InputStream tmpIn2 = null ;
OutputStream tmpOut2 = null ;
- tmpIn1 = inSocket.getInputStream();
- tmpOut1 = inSocket.getOutputStream();
+ if ( tmpIn1 == null )
+ tmpIn1 = inSocket.getInputStream();
+
+ if ( inSocket != null )
+ tmpOut1 = inSocket.getOutputStream();
- String bufferedData = null ;
+ String bufferedData = null ;
+ StringBuffer buf = null ;
if ( listener.isProxyBox.isSelected() ) {
// Check if we're a proxy
int ch ;
byte[] b = new byte[1];
- StringBuffer buf = new StringBuffer();
+ buf = new StringBuffer();
String s ;
for ( ;; ) {
@@ -438,6 +463,7 @@
}
}
+ if ( targetPort == -1 ) targetPort = 80 ;
outSocket = new Socket(targetHost, targetPort );
tmpIn2 = outSocket.getInputStream();
@@ -456,17 +482,29 @@
rr2 = new SocketRR( outSocket, tmpIn2, inSocket,
tmpOut1, outputText, format );
- while( rr1.isAlive() || rr2.isAlive() ) {
+ // while( rr1.isAlive() || rr2.isAlive() ) {
+ // Only loop as long as the connection to the target
+ // machine is available - once that's gone we can stop.
+ // The old way, loop until both are closed, left us
+ // looping forever since no one closed the 1st one.
+ while( !rr2.isDone() ) {
Thread.sleep( 10 );
}
+ rr1.halt();
+ rr2.halt();
+
rr1 = null ;
rr2 = null ;
active = false ;
- inSocket.close();
- inSocket = null ;
+ /*
+ if ( inSocket != null ) {
+ inSocket.close();
+ inSocket = null ;
+ }
outSocket.close();
outSocket = null ;
+ */
int index = listener.connections.indexOf( this );
if ( index >= 0 )
@@ -516,6 +554,7 @@
public JButton removeAllButton = null ;
public JCheckBox xmlFormatBox = null ;
public JButton saveButton = null ;
+ public JButton resendButton = null ;
public JButton switchButton = null ;
public JButton closeButton = null ;
public JTable connectionTable = null ;
@@ -610,6 +649,7 @@
removeButton.setEnabled(false);
removeAllButton.setEnabled(false);
saveButton.setEnabled(false);
+ resendButton.setEnabled(false);
}
else {
int row = m.getLeadSelectionIndex();
@@ -620,6 +660,7 @@
removeButton.setEnabled(false);
removeAllButton.setEnabled(false);
saveButton.setEnabled(false);
+ resendButton.setEnabled(false);
}
else {
Connection conn = (Connection) connections.lastElement();
@@ -628,6 +669,7 @@
removeButton.setEnabled(false);
removeAllButton.setEnabled(true);
saveButton.setEnabled(true);
+ resendButton.setEnabled(true);
}
}
else {
@@ -637,6 +679,7 @@
removeButton.setEnabled(true);
removeAllButton.setEnabled(true);
saveButton.setEnabled(true);
+ resendButton.setEnabled(true);
}
}
outPane.setDividerLocation(divLoc);
@@ -697,6 +740,8 @@
bottomButtons.add( Box.createRigidArea(new Dimension(5,0)) );
bottomButtons.add( saveButton = new JButton( "Save" ) );
bottomButtons.add( Box.createRigidArea(new Dimension(5,0)) );
+ bottomButtons.add( resendButton = new JButton( "Resend" ) );
+ bottomButtons.add( Box.createRigidArea(new Dimension(5,0)) );
bottomButtons.add( switchButton = new JButton( "Switch Layout" ) );
bottomButtons.add( Box.createHorizontalGlue() );
bottomButtons.add( closeButton = new JButton( "Close" ) );
@@ -709,6 +754,13 @@
};
});
+ resendButton.setEnabled( false );
+ resendButton.addActionListener( new ActionListener() {
+ public void actionPerformed(ActionEvent event) {
+ if ( "Resend".equals(event.getActionCommand()) ) resend();
+ };
+ });
+
switchButton.addActionListener( new ActionListener() {
public void actionPerformed(ActionEvent event) {
if ("Switch Layout".equals(event.getActionCommand()) ) {
@@ -846,6 +898,27 @@
catch( Exception e ) {
e.printStackTrace();
}
+ }
+ }
+
+ public void resend() {
+ int rc ;
+ try {
+ ListSelectionModel lsm = connectionTable.getSelectionModel();
+ rc = lsm.getLeadSelectionIndex();
+ if ( rc == 0 ) rc = connections.size();
+ Connection conn = (Connection) connections.get( rc-1 );
+ if ( rc > 0 ) {
+ lsm.clearSelection();
+ lsm.setSelectionInterval(0,0);
+ }
+
+ InputStream in = null ;
+ in = new ByteArrayInputStream( conn.inputText.getText().getBytes() );
+ new Connection( this, in );
+ }
+ catch( Exception e ) {
+ e.printStackTrace();
}
}
};