Wow - that was quick! Might not get a chance to look at it for a
little bit - perhaps someone else on the team might be able to
scan it and if it looks good then commit it. Sounds really really
promising! Thanks Dan!
-Dug
"Dan Kamins" <[EMAIL PROTECTED]> on 10/01/2002 09:18:11 PM
To: [EMAIL PROTECTED]
cc: Doug Davis/Raleigh/IBM@IBMUS
Subject: Re: TCPMon Audio Feedback Mod ("RPC-Synth") RFC
OK, I've turned my audio feedback mods into a plugin for TCPMon, and in the
process have blessed TCPMon with plugin support! I was very careful in
grafting plugin support into TCPMon.
Aspects of my new plugin support:
- TCPMon is still standalone.
- minimal changes to the tcpmon structure/code.
- fully backward compatible.
- plugin classes/configs are named on tcpmon command line.
- all hooks if-test 1st. no plugins = zero extra func calls.
- support hooks for all of the cases Doug mentioned below!
Features of plugins:
- Plugins can add UI widgetry to Admin panel.
- Plugins can add their own tabs to the notebook.
- Plugins get config param from command line.
- Plugins get startup/shutdown calls.
- Plugins get all sorts of event calls.
- Plugins can manipulate data before it is passed through.
- and more...
Attached is a "diffs" file (tcpmon-plugin.diff) that shows my changes from
(the version 1.43) tcpmon.java file. You can see the changes are careful
and easy to follow. At the top of this diffs file is the class def for
"TCPMonPlugin" which is the abstract base class for plugins. Additionally
a new "PluginManager" (inner) class is used to hold and manage access to
the plugins.
My RPC-Call Audio Feedback plugin serves as a great example of what you can
do with this (it adds custom tabs, admin panel UI, event hooks, a new table
column, etc.). I'm including the two .java files that comprise this plugin
as an example. (Same package, stanadalone.) You can run it with (for
example):
tcpmon --plugin org.apache.axis.utils.TCPMonAudioFeedbackPlugin audio.cfg
8080 localhost 8081
As far as HTTP Proxy and XML Formatting... I haven't touched these.
They're still part of stock TCPMon. It would be mostly straightforward to
extract these and convert them to plugins if such was desired.
With regards to SOAPMonitor... I played with this, and while it seems like
a nice application, I felt that the base of TCPMon was more appropriate for
my Audio Feedback modification (more real-time). Additionally, I really
like TCPMon and would like to see it stay lean, mean, and more and more
useful. This is why I put the work into TCPMon instead.
So hopefully this solution is more pleasing to people (and thank you all
for your feedback, particularly the "keep tcpmon clean" type). I've
preserved the nice simplicity of TCPMon, while giving it a chance to grow
into different directions for different uses. What are the thoughts on
this now? I certainly would like to see this merged in so that we can
start seeing some community-driven development and debugging support coming
to life, without affecting the coherence of the base (thanks, Dug).
Where from here?
--
Dan Kamins
[EMAIL PROTECTED]
----Original Message Follows----
From: Doug Davis <[EMAIL PROTECTED]>
Subject: Re: TCPMon Audio Feedback Mod ("RPC-Synth") RFC
Date: 2002-09-30 12:18:30
I like it being a stand-alone app - when the i18n stuff was added
I specifically asked that TCPMon get its own file to keep it separate
from the rest of Axis. So your "RPC Call" hook, while really
interesting, would bring in a dependency that I would prefer not
be there. To be honest the proxy support and XML formatting should
probably be plugs-ins too, but those are pretty commonly used.
As far as hook-points, a couple that come to mind are:
- on the Admin page to add more options
- at the time a new listener is created (this would be when you
could create your "RPC Sync" tab.
- at the time a new connection is made
- when data is read (one thing I've been meaning to add is support
for writting out the data to a file so that an "untouched"
version is available for people. The stuff that goes to the
screen is too tweaked sometimes.)
- when data it written to the screen (ala. XML formatting)
- and to complete it, when a connection is closed
- when the list of connections is displayed. (One thing that
SOAPMonitor has that TCPMon doesn't is the ability to filter
which messages are displayed - which I find handy)
In order to do this quite a bit of restructing would probably have to
be done - for example, to allow people to easily add new columns to
the top-most table (like for your RPC method name).
You might want to consider adding some of your ideas (like the RPC Call)
one to SOAPMonitor instead since that truely is SOAP/Axis aware.
-Dug
"Dan Kamins" <[EMAIL PROTECTED]> on 09/30/2002 07:24:27 AM
To: [EMAIL PROTECTED]
cc:
Subject: Re: TCPMon Audio Feedback Mod ("RPC-Synth") RFC
Excellent point (Doug) on the simplicity of tcpmon. That is what made it
so easy to make these modifications in the first place. I would hesitate
to give anybody down the road a harder time working on tcpmon than I have
had, nor would I wish to slow it down or over-complicate it.
How familiar with TCPMon are you? You said "There are definitely some key
points in the processing that would lend itself nicely to providing
user-defined hooks/plug-ins." What do you have in mind?
So we have more examples to draw from in this, let me make public another
modification I've made (all locally) which is to add an "RPC Call" column
to the main window that does some pseudo-xml parsing to grab the call name.
This might be an example for the "plugin" approach, or it might just be a
good mainline mod. This was what actually prompted the audio feedback mod.
Meanwhile, I'm cleaning up the code a bit and talking offline with people
about testing it out. Again, if anybody is interested in trying this out,
let me know.
On a more general note, TCPMon is "org.apache.axis.utils.tcpmon" and an
associated properties file for i18n. This is an entirely standalone app
all contained in there with no external (non Java core) dependencies. Is
this agreed upon as a good structure? I didn't want to break this in
adding my functionality (hence my inclusion into tcpmon's core), but
perhaps now might be the time to open it up a bit, at least plugin-wise?
--
Dan Kamins
----Original Message Follows----
From: Doug Davis <[EMAIL PROTECTED]>
Subject: Re: TCPMon Audio Feedback Mod ("RPC-Synth") RFC
Date: Mon, 30 Sep 2002 07:09:22 -0400
One of the things I like about TCPMon is all of the things it doesn't
try to be. To me its just a simple tool for watching TCP/IP traffic.
It doesn't even know anything about SOAP.
I can't say whether the audio feedback would be a nice feature
or not - I'm sure it will vary depending on who you talk to, however,
have you consider taking a slightly different approach...what if
instead of adding this to the "core" of tcpmon we add hooks to
tcpmon that allowed for these types of plug-ins? There are definitely
some key points in the processing that would lend itself nicely to
providing user-defined hooks/plug-ins.
Just a thought...
-Dug
--
__________________________________________________________
Sign-up for your own FREE Personalized E-mail at Mail.com
http://www.mail.com/?sr=signup