Dan,
Nice stuff - I would be +1 for these changes to go in to CVS, AFTER 1.0 has shipped (figure a week or so). -- Tom Jordahl Macromedia Server Development -----Original Message----- From: Doug Davis [mailto:[EMAIL PROTECTED]] Sent: Wednesday, October 02, 2002 7:42 AM To: Dan Kamins Cc: [EMAIL PROTECTED] Subject: Re: TCPMon Audio Feedback Mod ("RPC-Synth") RFC 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