In my last entry in the Ripsaw article series, I discussed some of the design goals for Ripsaw. In this article I’ll flesh out the design a little more and discuss specific implementation possibilities.
To bring you up to speed, Ripsaw is a log-viewing utility for Windows that I initially wrote about six years ago, but never released widely. I’ve decided to rewrite it and discuss each step of the rewrite here.
Implementing the API
- C DLL
What About Registration?
I’d still like to be able to run Ripsaw from a USB drive without having to install anything on the machine I’m debugging or examining, which means I’d like to avoid the hassle of having to run regsvr32 on the target machine before I can use Ripsaw. Fortunately, there is registration-free COM, which will let me run a Ripsaw viewer that loads the Ripsaw COM library with the aid of a manifest. This will let me keep a viewer and the Ripsaw library in a directory on my USB drive so I can just plug it in and run the viewer without having to register or install anything.
Supporting Scripting in the Viewer
Fortunately, the newer POS terminals and servers that are being installed today have multi-core processors, and I definitely want to take advantage of that today. I want to architect the core Ripsaw library to take advantage of multiple threads of execution spread across multiple processors or processor cores. I already write multi-threaded, multi-process systems for these machines, and these systems tend to be heavily instrumented, so sometimes I’m watching several different log files at once during a testing or debugging session. I don’t want to slow a system down too much when I start up the viewer, and loading down one core of a multi-core processor with a log viewer would certainly be a bad thing.
Okay, Can We Start Coding Now?
Actually, I already have been doing some prototyping, which helped me decide on the details I’ve described above. Now that I’ve sorted out some of the lower-level requirements, in the next article I’ll start defining the Ripsaw log-reader COM interface.