From 9b4c9bb690cd0074362f805f7591be008c34191a Mon Sep 17 00:00:00 2001 From: Sean Pivek Date: Fri, 1 Jun 2012 18:50:30 -0700 Subject: [PATCH] Issue 5: Command-line driver --- .../ievent-service-test.cpp | 1 + ievent-service/ievent-service/irreader.cpp | 21 ++-- ievent-service/ievent-service/irreader.hpp | 2 + ievent/ievent-service-cmdline/ReadMe.txt | 40 +++++++ .../ievent-service-cmdline.cpp | 21 ++++ .../ievent-service-cmdline.vcxproj | 100 ++++++++++++++++++ .../ievent-service-cmdline.vcxproj.filters | 36 +++++++ ievent/ievent-service-cmdline/stdafx.cpp | 8 ++ ievent/ievent-service-cmdline/stdafx.h | 15 +++ ievent/ievent-service-cmdline/targetver.h | 8 ++ ievent/ievent.sln | 6 ++ 11 files changed, 245 insertions(+), 13 deletions(-) create mode 100644 ievent/ievent-service-cmdline/ReadMe.txt create mode 100644 ievent/ievent-service-cmdline/ievent-service-cmdline.cpp create mode 100644 ievent/ievent-service-cmdline/ievent-service-cmdline.vcxproj create mode 100644 ievent/ievent-service-cmdline/ievent-service-cmdline.vcxproj.filters create mode 100644 ievent/ievent-service-cmdline/stdafx.cpp create mode 100644 ievent/ievent-service-cmdline/stdafx.h create mode 100644 ievent/ievent-service-cmdline/targetver.h diff --git a/ievent-service-test/ievent-service-test/ievent-service-test.cpp b/ievent-service-test/ievent-service-test/ievent-service-test.cpp index 2f2c5b1..f0087e1 100644 --- a/ievent-service-test/ievent-service-test/ievent-service-test.cpp +++ b/ievent-service-test/ievent-service-test/ievent-service-test.cpp @@ -43,6 +43,7 @@ BOOST_AUTO_TEST_CASE( CONNECT_TO_SIM ) { IEvent::Service::iRacingReader reader; reader.setIsRunning(true); + reader.setRunOnce(true); reader.run(); } diff --git a/ievent-service/ievent-service/irreader.cpp b/ievent-service/ievent-service/irreader.cpp index 5b9613e..35c649d 100644 --- a/ievent-service/ievent-service/irreader.cpp +++ b/ievent-service/ievent-service/irreader.cpp @@ -16,6 +16,7 @@ IEvent::Service::iRacingReader::iRacingReader (): _running(false), + _runOnce(false), _connected(false), _timeout(60000), _g_data(NULL), @@ -43,6 +44,10 @@ void IEvent::Service::iRacingReader::setIsRunning(bool isRunning) { _running = isRunning; } +void IEvent::Service::iRacingReader::setRunOnce(bool runOnce) { + _runOnce = runOnce; +} + bool IEvent::Service::iRacingReader::init() { // Initialize network comms _pub = PublisherPtr( new Publisher() ); @@ -74,7 +79,9 @@ bool IEvent::Service::iRacingReader::init() { bool IEvent::Service::iRacingReader::shutdown() { _handlers.clear(); _connected = false; - _running = false; // For testing only! + if (_runOnce) { + _running = false; // For testing only! + } _pub = PublisherPtr(); @@ -106,18 +113,6 @@ void IEvent::Service::iRacingReader::run() { BOOST_FOREACH(UpdatePtr handler, _handlers) { handler->handleUpdate(pHeader, _g_data); } - /*std::cerr<< irsdk_getSessionInfoStr() << std::endl;*/ - /* - if (pHeader->numVars > 0) { - for(int i=0; inumVars; i++) { - const irsdk_varHeader *rec = irsdk_getVarHeaderEntry(i); - - std::cerr << "Name: " << rec->name << std::endl; - } - } else { - std::cerr<< "No vars in header!" << std::endl; - } - */ } } else if (_connected && irsdk_isConnected()) { diff --git a/ievent-service/ievent-service/irreader.hpp b/ievent-service/ievent-service/irreader.hpp index 7ef68e0..a4c9110 100644 --- a/ievent-service/ievent-service/irreader.hpp +++ b/ievent-service/ievent-service/irreader.hpp @@ -15,6 +15,7 @@ namespace IEvent { void run(); void setIsRunning(bool isRunning); + void setRunOnce(bool runOnce); bool isRunning(); private: @@ -26,6 +27,7 @@ namespace IEvent { const irsdk_header *pHeader; bool _running; + bool _runOnce; bool _connected; char * _g_data; int _g_nData; diff --git a/ievent/ievent-service-cmdline/ReadMe.txt b/ievent/ievent-service-cmdline/ReadMe.txt new file mode 100644 index 0000000..f3de7ba --- /dev/null +++ b/ievent/ievent-service-cmdline/ReadMe.txt @@ -0,0 +1,40 @@ +======================================================================== + CONSOLE APPLICATION : ievent-service-cmdline Project Overview +======================================================================== + +AppWizard has created this ievent-service-cmdline application for you. + +This file contains a summary of what you will find in each of the files that +make up your ievent-service-cmdline application. + + +ievent-service-cmdline.vcxproj + This is the main project file for VC++ projects generated using an Application Wizard. + It contains information about the version of Visual C++ that generated the file, and + information about the platforms, configurations, and project features selected with the + Application Wizard. + +ievent-service-cmdline.vcxproj.filters + This is the filters file for VC++ projects generated using an Application Wizard. + It contains information about the association between the files in your project + and the filters. This association is used in the IDE to show grouping of files with + similar extensions under a specific node (for e.g. ".cpp" files are associated with the + "Source Files" filter). + +ievent-service-cmdline.cpp + This is the main application source file. + +///////////////////////////////////////////////////////////////////////////// +Other standard files: + +StdAfx.h, StdAfx.cpp + These files are used to build a precompiled header (PCH) file + named ievent-service-cmdline.pch and a precompiled types file named StdAfx.obj. + +///////////////////////////////////////////////////////////////////////////// +Other notes: + +AppWizard uses "TODO:" comments to indicate parts of the source code you +should add to or customize. + +///////////////////////////////////////////////////////////////////////////// diff --git a/ievent/ievent-service-cmdline/ievent-service-cmdline.cpp b/ievent/ievent-service-cmdline/ievent-service-cmdline.cpp new file mode 100644 index 0000000..3713026 --- /dev/null +++ b/ievent/ievent-service-cmdline/ievent-service-cmdline.cpp @@ -0,0 +1,21 @@ +// ievent-service-cmdline.cpp : Defines the entry point for the console application. +// + +#include +#include + +#include "irreader.hpp" + + +int main(int argc, char* argv[]) +{ + SetPriorityClass(GetCurrentProcess(), HIGH_PRIORITY_CLASS); + + IEvent::Service::iRacingReader reader; + + reader.setIsRunning(true); + reader.setRunOnce(true); + + reader.run(); +} + diff --git a/ievent/ievent-service-cmdline/ievent-service-cmdline.vcxproj b/ievent/ievent-service-cmdline/ievent-service-cmdline.vcxproj new file mode 100644 index 0000000..f1258ad --- /dev/null +++ b/ievent/ievent-service-cmdline/ievent-service-cmdline.vcxproj @@ -0,0 +1,100 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + + $(VCTargetsPath11) + + + Win32Proj + ieventservicecmdline + + + + Application + true + v110 + Unicode + + + Application + false + v110 + true + Unicode + + + + + + + + + + + + + true + + + false + + + + + + Level3 + Disabled + WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) + C:\lib\yaml-cpp\include;C:\lib\zeromq-2.1.11\include;C:\lib\boost_1_49_0;C:\src\ievent\ievent-service\ievent-service;%(AdditionalIncludeDirectories) + + + Console + true + C:\src\ievent\ievent\Debug;C:\lib\boost_1_49_0\stage\lib;C:\lib\zeromq-2.1.11\builds\msvc\Release;%(AdditionalLibraryDirectories) + libzmq.lib;ievent-service.lib;%(AdditionalDependencies) + + + + + Level3 + + + MaxSpeed + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + C:\lib\yaml-cpp\include;C:\lib\zeromq-2.1.11\include;C:\lib\boost_1_49_0;C:\src\ievent\ievent-service\ievent-service;%(AdditionalIncludeDirectories) + + + Console + true + true + true + libzmq.lib;ievent-service.lib;libyaml-cppmd.lib;%(AdditionalDependencies) + C:\lib\yaml-cpp\Release;C:\src\ievent\ievent\Release;C:\lib\boost_1_49_0\stage\lib;C:\lib\zeromq-2.1.11\builds\msvc\Release;%(AdditionalLibraryDirectories) + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/ievent/ievent-service-cmdline/ievent-service-cmdline.vcxproj.filters b/ievent/ievent-service-cmdline/ievent-service-cmdline.vcxproj.filters new file mode 100644 index 0000000..678e96a --- /dev/null +++ b/ievent/ievent-service-cmdline/ievent-service-cmdline.vcxproj.filters @@ -0,0 +1,36 @@ + + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx + + + {93995380-89BD-4b04-88EB-625FBE52EBFB} + h;hpp;hxx;hm;inl;inc;xsd + + + {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} + rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms + + + + + + + + Header Files + + + Header Files + + + + + Source Files + + + Source Files + + + \ No newline at end of file diff --git a/ievent/ievent-service-cmdline/stdafx.cpp b/ievent/ievent-service-cmdline/stdafx.cpp new file mode 100644 index 0000000..87fbc02 --- /dev/null +++ b/ievent/ievent-service-cmdline/stdafx.cpp @@ -0,0 +1,8 @@ +// stdafx.cpp : source file that includes just the standard includes +// ievent-service-cmdline.pch will be the pre-compiled header +// stdafx.obj will contain the pre-compiled type information + +#include "stdafx.h" + +// TODO: reference any additional headers you need in STDAFX.H +// and not in this file diff --git a/ievent/ievent-service-cmdline/stdafx.h b/ievent/ievent-service-cmdline/stdafx.h new file mode 100644 index 0000000..b005a83 --- /dev/null +++ b/ievent/ievent-service-cmdline/stdafx.h @@ -0,0 +1,15 @@ +// stdafx.h : include file for standard system include files, +// or project specific include files that are used frequently, but +// are changed infrequently +// + +#pragma once + +#include "targetver.h" + +#include +#include + + + +// TODO: reference additional headers your program requires here diff --git a/ievent/ievent-service-cmdline/targetver.h b/ievent/ievent-service-cmdline/targetver.h new file mode 100644 index 0000000..87c0086 --- /dev/null +++ b/ievent/ievent-service-cmdline/targetver.h @@ -0,0 +1,8 @@ +#pragma once + +// Including SDKDDKVer.h defines the highest available Windows platform. + +// If you wish to build your application for a previous Windows platform, include WinSDKVer.h and +// set the _WIN32_WINNT macro to the platform you wish to support before including SDKDDKVer.h. + +#include diff --git a/ievent/ievent.sln b/ievent/ievent.sln index 0c6cb9b..e0c91bd 100644 --- a/ievent/ievent.sln +++ b/ievent/ievent.sln @@ -8,6 +8,8 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ievent-service-test", "..\i {DDDD4071-F05D-A7CC-0D9A-2984F2D42029} = {DDDD4071-F05D-A7CC-0D9A-2984F2D42029} EndProjectSection EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ievent-service-cmdline", "ievent-service-cmdline\ievent-service-cmdline.vcxproj", "{5CC946EA-A95D-01A7-CF1A-83BDBF0AA051}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Win32 = Debug|Win32 @@ -18,6 +20,10 @@ Global {17773076-D2B1-9C94-2114-93D580061B67}.Debug|Win32.Build.0 = Debug|Win32 {17773076-D2B1-9C94-2114-93D580061B67}.Release|Win32.ActiveCfg = Release|Win32 {17773076-D2B1-9C94-2114-93D580061B67}.Release|Win32.Build.0 = Release|Win32 + {5CC946EA-A95D-01A7-CF1A-83BDBF0AA051}.Debug|Win32.ActiveCfg = Debug|Win32 + {5CC946EA-A95D-01A7-CF1A-83BDBF0AA051}.Debug|Win32.Build.0 = Debug|Win32 + {5CC946EA-A95D-01A7-CF1A-83BDBF0AA051}.Release|Win32.ActiveCfg = Release|Win32 + {5CC946EA-A95D-01A7-CF1A-83BDBF0AA051}.Release|Win32.Build.0 = Release|Win32 {DDDD4071-F05D-A7CC-0D9A-2984F2D42029}.Debug|Win32.ActiveCfg = Debug|Win32 {DDDD4071-F05D-A7CC-0D9A-2984F2D42029}.Debug|Win32.Build.0 = Debug|Win32 {DDDD4071-F05D-A7CC-0D9A-2984F2D42029}.Release|Win32.ActiveCfg = Release|Win32