JTOOLS SHELL APPLICATION
JTools Table of Contents
Project Location: \JTools_ShellApp
This is my Generic Shell Application for running NxCore. This application
features a completely detachable GUI, logging, real time simulation, delayed
simulation and a variety of other options. It is the application I usually
start with to build any new NxCore based application.
The following should serve as a small guide on the primary components of the
Shell Application.
The Main Application Window:
|
- Compact - Shrink app window to just stats or to show all.
- NxCore Status - Current Status of NxCore.
- Tape Time (EST) - Current time on NxCore tape (or realtime).
- System Time - Current time on your system.
- Msg/Sec - Current Messages per Second processing statistic.
- Full - Run full blast (as fast as possible).
- RT Sim - Run in a real time simulation mode.
- Step - Run in step mode, pausing after each NxCore message.
- Next - When running in step mode, use the Next button to step
through the next NxCore callback message.
- Start NxCore - Start NxCore processing.
- Stop NxCore - Stop NxCore processing.
- Settings - Goto settings and preference dialog.
- Enable Event Logging - Global toggle to turn all file logging and
messages to the Activity Debugger on or off.
- Show in Activity Debugger - Toggle for messages to be shown in the
Activity Debugger.
- Write to File - Write Activity messages to file.
- Show NxCore Milliseconds - Milliseconds are shown for the NxCore
timestamps.
- Reset Log Name to NxTape Name - If set, the log file generated will
be dated according to the NxCore tape date (as opposed to the system date). The
NxCore tape date becomes available when the TAPEOPEN status message if received
in the NxCore callback.
- Activity Monitor - Window were all messages are sent for immediate
viewing.
|
The Settings and Preferences Window:
|
- Start NxCore Processing On Application Launch - If set, the
application will automatically start NxCore on launch.
- Close Application On Tape Complete - If set, the application will
close when NxCore processing is complete.
- Save/Restore Application Screen Position - If set, the applications
screen position and size are saved/restored on application exit and launch.
- NxCore DLL: - The current NxCore DLL Filename the application is
using.
- Realtime - Run in realtime mode from NxAccess, regardless of whether
a tape filename is set or not.
When running in real time, the user must have a NxAccess account and have
NxAccess running on the same machine as the application.
If NxAccess and the appplication run 24 hours a day, the application will
automatically roll with NxAccess at 12:00 Midnight EST and begin processing the
new day.
- Historical - Run from a historical tape file.
- Tape File to Use - Tape file to run (if Historical is chosen as the
running mode). This may be a full NxCore tapefile or an NxCore generated State
File.
- RT-Sim Pause - When running in real-time simulation mode, this is
the amount of time to pause (in milliseconds) between each NxCore callback
message. You can speed up or slow down the simulation with this setting.
- Exclude Quotes - Exclude all exchange quotes in NxCore processing.
- Exclude Level2 Quotes - Exclude all level2 market maker quotes
(depth in futures) in NxCore processing.
- Exclude OPRA - Exclude all OPRA (options) from NxCore processing.
- Exclude CRC - Exclude CRC Checking.
- Delayed - If set, the application will simulate a delayed feed.
- Delay Minutes - The number of minutes the feed is to be delayed (if
Delayed is set).
- Delay Resolution - The number of microseconds to wait before check
the current amount of passed time, in seconds. Used only if Delayed is set.
- Update NxTime In GUI Every: - Specifies the interval in which to
update the NxCore time in the GUI.
- MAIN WINDOW - Background and foreground colors of the main
application window.
- ACTIVITY WIN - Background and foreground color of the application
activity monitor.
- READONLY CTL - Background and foreground colors for read-only edit
controls within the application.
- EDITABLE CTL - Background and foreground colors for editable edit
controls within the application.
|
The INI configuration File:
Each application reads and writes the configuration information to its own INI
file. The INI file is a human readable text file and as such, can safely be
modified in any text editor, outside of the application. This also makes it
possible to script the application(s) for batch mode processing by simply
modifying the INI file and launching the application.
Look and Feel:
As the applications use the standard Windows controls, you may wish to have a
slightly more modern looking GUI. To do so, look in the file stdafx.h, at the
very end. Un-comment the control manifest file specification. Recompile the
application and you will have a new look and feel:
Standard look, without the control manifest file:
|
More modern look using the control manifest file:
|
And to get your own unique look to any application, modify the Color Properties
(when running the application) in the settings and preferences dialog and have
fun!
Detached GUI:
The GUI in the Shell Application is completely detached from the actual NxCore
functionality. GUI functionality becomes available through the use of specific
callback functions provided to the NxCore interface. As such it becomes trivial
to convert the NxCore component into a console application, Windows service.
etc. Build and debug any application using the GUI and then, if no GUI is
required (or desired) for production take it down to where it needs to go,
quickly.
I have included another small project called JTools_ShellApp_Command which is
simply a straight C console application. The NxCore functionality and files are
identical to the GUI driven application. As opposed to eliminating the GUI
callbacks I simply re-coded them to use the C standard
printf("%s\n",str) to output the strings to the console...very basic.
It's even easier to eliminate the GUI completely by simply not providing the
callback functions to the interface.
Project Location: \JTools_ShellApp_Console
To run the console application, firs run the JTools_ShellApp.exe GUI
application. Set the preferences for what you want the console app to do (IE
run from tape file, etc). Exit the GUI app and copy the JTools_ShellApp.INI
file to the location of the console application. Now run the console
application. It will read and process data according to the specs in
JTools_ShellApp.ini.
Self Contained User/Application Data:
Because the shell application's NxCore interface uses/modifies only data passed
though the main NxCore UserData pointer (when ProcessTape() is called),
spinning multiple threads for the interface becomes trivial. As with the
Console application I have included another project called
"JTools_ShellApp_Dual". The interface has been duplicated so that the
user can easilly run two NxCore interfaces both feeding data to the same
application independently of one another. In the screenshot below, the 1'st
system is running an historical tape full blast with the 2'nd system is running
from NxAccess in real-time:
Project Location: \JTools_ShellApp_Dual
JTools Table of Contents
|