This commit is contained in:
DarthArgus
2016-06-04 16:20:26 -07:00
parent 20ec585266
commit 4e59befe09
4921 changed files with 30 additions and 2712356 deletions
-125
View File
@@ -1,125 +0,0 @@
IMPORTANT Requirements:
automake >= 1.6 < 1.7
autoconf >= 2.57
libtool-1.4x
gcc-2.95-3 or gcc-3.2.x
ibm java2 1.3.1 installed in /usr/java
/usr/java/bin must precede any other java binary in the path
stlport-4.5.3 sources
oracle 9.2.0 in /opt/app/oracle/product/9.2.0
Buidling from the command line
QUICKSTART (**** PREFERRED SETUP ****):
1. Fresh from source control:
$ ./siteSetup
This will create Makefile.in's and configure scripts for site
reconfiguration as site build options change during development. It
will also run the configure steps necessary to start building the
project.
2. Skip to step 3 in MANUAL CONFIGURATION
MANUAL CONFIGURATION:
1. Fresh from source control:
$ ./bootstrap
This will create Makefile.in's and configure scripts to configure the
source for the site.
2. After site has been bootstrapped
2.1 For debug code
$ CFLAGS="-g3 -O0" CXXFLAGS="-g3 -O0" ./configure --prefix=<path to dev directory, e.g. /swg/swg/current/dev> --enable-debug --disable-static
2.2 For debug-optimized code
$ CFLAGS="-g -O2" CXXFLAGS="-g -O2" ./configyre --prefix=<path to dev directory, e.g. /swg/swg/current/dev> --enable-debug --disable-static
2.3 For optimized code
$ CFLAGS="-O2" CXXFLAGS="-O2" ./configyre --prefix=<path to dev directory, e.g. /swg/swg/current/dev> --enable-debug
3. For an already configured site (day to day operation)
$ make install
4. Running the applications.
Executables are installed in $PREFIX/bin. Libraries reside in
$PREFIX/lib, where prefix was defined during configure with the
--prefix=XXX parameter. If prefix was /swg/swg/current/dev then
$ cd /swg/swg/current/dev/bin
$ ./LoginServer -- @loginServer.cfg &
$ ./TaskManager -- @taskManager.cfg
5. Adding and removing source files
Each directory contains a Makefile.am. This file specifies sources and
flags specific to the target. If a file (NewMessage.cpp and NewMessage.h)
is added to sharedNetworkMessages/src/shared/chat, for example, edit
sharedNetworkMessages/src/shared/chat/Makefile.am and add
NewMessage.cpp to the libsharedNetworkMessagessharedchat_la_SOURCES
variable.
If a file is being removed from the build, be sure to remove it from
its respective Makefile.am.
5.1 Adding and removing directories
Makefile.am's contain a SUBDIRS variable that indicates which sub directories the
build system should recurse into. The bootstrap process takes Makefile.am's and
generates Makefile.in's, which are in turn used by configure.in to generate
site-specific build options.
To add a new subdirectory, open the parent directory's Makefile.am
edit parentDir/Makefile.am
SUBDIRS=subDir .
edit configure.in (there is on in the src, src/engine src/game and each
src/external/ours/library/<project> directory. Add a line to AC_OUTPUT to tell
configure.in to generate a Makefile from Makefile.in.
Be sure to add the appropriate link commands if there are executables that
require a new library created in the subdirectory, or if the subdirectory
contains a utility library (noinst_LTLIBRARY), add it to the appropriate
installed library (see sharedGame for an example of utility libraries and
how they are used)
run the bootstrap process.
6. Other notes
If you are building on Linux, and have KDE version 3.1.x or better,
try using KDevelop 3. It has integrated automake support and a LOT of
very nice features that make it even easier to use than the best
commercial dev environments.
7. Multiple build configurations (e.g. debug vs optimized, side by side)
Building multiple targets (configurations) is possible. Go to the directory
where the new build type will keep it's object files (e.g. debug) and
run configure. For example:
$ cd /swg/swg/current/src/debug && CXXFLAGS="-O0 -g3" /swg/swg/current/src/configure --enable-debug=full --prefix=/swg/swg/current/dev
might be used to create a debug build whereas:
$ cd /swg/swg/current/src/debug && CXXFLAGS="-O0 -g3 -pg" /swg/swg/current/src/configure --enable-debug=full --prefix=/swg/swg/current/dev
might build a debug version with profiling information
or
$ cd /swg/swg/current/src/debug && CXXFLAGS="-O3 -g3 -mcpu=pentium4 -march=pentium4 -mfpmath=sse -mmmx -sse -sse2" /swg/swg/current/src/configure --prefix=/swg/swg/current/dev
might build SWG heavily optimized for the target CPU/Architecture
8. Using KDevelop3:
Setup the project:
a. Make a symbolic link from bootstrap to autogen.sh.
b. From the project menu, select "import existing project". Choose
"Automake based project, C++" and point it to the branch's top-level
src directory.
c. From the build menu, select "Run Automake and friends" then "configure"
d. From the build menu, select "install"
-126
View File
@@ -1,126 +0,0 @@
@echo on
perl ..\tools\BuildDsp.pl D:\work\swg\current\src\engine\client\application\AnimationEditor\build\win32\AnimationEditor.dsp
perl ..\tools\BuildDsp.pl D:\work\swg\current\src\engine\client\application\ClientEffectEditor\build\win32\ClientEffectEditor.dsp
rem perl ..\tools\BuildDsp.pl D:\work\swg\current\src\engine\client\application\DebugWindow\build\win32\DebugWindow.dsp
rem perl ..\tools\BuildDsp.pl D:\work\swg\current\src\engine\client\application\Direct3d8\build\win32\Direct3d8.dsp
rem perl ..\tools\BuildDsp.pl D:\work\swg\current\src\engine\client\application\DllExport\build\win32\DllExport.dsp
rem perl ..\tools\BuildDsp.pl D:\work\swg\current\src\engine\client\application\MayaExporter\build\win32\MayaExporter.dsp
rem perl ..\tools\BuildDsp.pl D:\work\swg\current\src\engine\client\application\Miff\build\win32\miff.dsp
perl ..\tools\BuildDsp.pl D:\work\swg\current\src\engine\client\application\ParticleEditor\build\win32\ParticleEditor.dsp
rem perl ..\tools\BuildDsp.pl D:\work\swg\current\src\engine\client\application\RemoteDebugTool\build\win32\RemoteDebugTool.dsp
perl ..\tools\BuildDsp.pl D:\work\swg\current\src\engine\client\application\ShaderBuilder\build\win32\ShaderBuilder.dsp
perl ..\tools\BuildDsp.pl D:\work\swg\current\src\engine\client\application\SoundEditor\build\win32\SoundEditor.dsp
perl ..\tools\BuildDsp.pl D:\work\swg\current\src\engine\client\application\TemplateEditor\build\win32\TemplateEditor.dsp
perl ..\tools\BuildDsp.pl D:\work\swg\current\src\engine\client\application\TerrainEditor\build\win32\TerrainEditor.dsp
perl ..\tools\BuildDsp.pl D:\work\swg\current\src\engine\client\application\TextureBuilder\build\win32\TextureBuilder.dsp
perl ..\tools\BuildDsp.pl D:\work\swg\current\src\engine\client\application\Viewer\build\win32\Viewer.dsp
perl ..\tools\BuildDsp.pl D:\work\swg\current\src\engine\client\application\ViewIff\build\win32\ViewIff.dsp
perl ..\tools\BuildDsp.pl D:\work\swg\current\src\engine\client\library\clientAnimation\build\win32\clientAnimation.dsp
perl ..\tools\BuildDsp.pl D:\work\swg\current\src\engine\client\library\clientAudio\build\win32\clientAudio.dsp
perl ..\tools\BuildDsp.pl D:\work\swg\current\src\engine\client\library\clientBugReporting\build\win32\clientBugReporting.dsp
perl ..\tools\BuildDsp.pl D:\work\swg\current\src\engine\client\library\clientDirectInput\build\win32\clientDirectInput.dsp
perl ..\tools\BuildDsp.pl D:\work\swg\current\src\engine\client\library\clientGame\build\win32\clientGame.dsp
perl ..\tools\BuildDsp.pl D:\work\swg\current\src\engine\client\library\clientGraphics\build\win32\clientGraphics.dsp
perl ..\tools\BuildDsp.pl D:\work\swg\current\src\engine\client\library\clientObject\build\win32\clientObject.dsp
perl ..\tools\BuildDsp.pl D:\work\swg\current\src\engine\client\library\clientParticle\build\win32\clientParticle.dsp
perl ..\tools\BuildDsp.pl D:\work\swg\current\src\engine\client\library\clientRemoteDebug\build\win32\clientRemoteDebug.dsp
perl ..\tools\BuildDsp.pl D:\work\swg\current\src\engine\client\library\clientSkeletalAnimation\build\win32\clientSkeletalAnimation.dsp
perl ..\tools\BuildDsp.pl D:\work\swg\current\src\engine\client\library\clientTerrain\build\win32\clientTerrain.dsp
perl ..\tools\BuildDsp.pl D:\work\swg\current\src\engine\client\library\clientTextureRenderer\build\win32\clientTextureRenderer.dsp
perl ..\tools\BuildDsp.pl D:\work\swg\current\src\engine\client\library\clientUserInterface\build\win32\clientUserInterface.dsp
perl ..\tools\BuildDsp.pl D:\work\swg\current\src\engine\client\library\clientUtility\build\win32\clientUtility.dsp
perl ..\tools\BuildDsp.pl D:\work\swg\current\src\engine\server\application\CentralServer\build\win32\CentralServer.dsp
perl ..\tools\BuildDsp.pl D:\work\swg\current\src\engine\server\application\ChatServer\build\win32\ChatServer.dsp
perl ..\tools\BuildDsp.pl D:\work\swg\current\src\engine\server\application\ConnectionServer\build\win32\ConnectionServer.dsp
perl ..\tools\BuildDsp.pl D:\work\swg\current\src\engine\server\application\LoginServer\build\win32\LoginServer.dsp
rem perl ..\tools\BuildDsp.pl D:\work\swg\current\src\engine\server\application\LogServer\build\win32\LogServer.dsp
perl ..\tools\BuildDsp.pl D:\work\swg\current\src\engine\server\application\PlanetServer\build\win32\PlanetServer.dsp
perl ..\tools\BuildDsp.pl D:\work\swg\current\src\engine\server\application\TaskManager\build\win32\TaskManager.dsp
perl ..\tools\BuildDsp.pl D:\work\swg\current\src\engine\server\library\serverDatabase\build\win32\serverDatabase.dsp
perl ..\tools\BuildDsp.pl D:\work\swg\current\src\engine\server\library\serverGame\build\win32\new.dsp
perl ..\tools\BuildDsp.pl D:\work\swg\current\src\engine\server\library\serverGame\build\win32\serverGame.dsp
perl ..\tools\BuildDsp.pl D:\work\swg\current\src\engine\server\library\serverKeyShare\build\win32\serverKeyShare.dsp
perl ..\tools\BuildDsp.pl D:\work\swg\current\src\engine\server\library\serverMetrics\build\win32\serverMetrics.dsp
perl ..\tools\BuildDsp.pl D:\work\swg\current\src\engine\server\library\serverNetworkMessages\build\win32\serverNetworkMessages.dsp
perl ..\tools\BuildDsp.pl D:\work\swg\current\src\engine\server\library\serverPathfinding\build\win32\serverPathfinding.dsp
perl ..\tools\BuildDsp.pl D:\work\swg\current\src\engine\server\library\serverScript\build\win32\serverScript.dsp
perl ..\tools\BuildDsp.pl D:\work\swg\current\src\engine\server\library\serverUtility\build\win32\serverUtility.dsp
perl ..\tools\BuildDsp.pl D:\work\swg\current\src\engine\shared\application\DataLintRspBuilder\build\win32\DataLintRspBuilder.dsp
perl ..\tools\BuildDsp.pl D:\work\swg\current\src\engine\shared\application\DataTableTool\build\win32\DataTableTool.dsp
rem perl ..\tools\BuildDsp.pl D:\work\swg\current\src\engine\shared\application\hash_plugin\hash_plugin.dsp
rem perl ..\tools\BuildDsp.pl D:\work\swg\current\src\engine\shared\application\P4Qt\build\win32\P4Qt.dsp
perl ..\tools\BuildDsp.pl D:\work\swg\current\src\engine\shared\application\TemplateCompiler\build\win32\TemplateCompiler.dsp
perl ..\tools\BuildDsp.pl D:\work\swg\current\src\engine\shared\application\TemplateDefinitionCompiler\build\win32\TemplateDefinitionCompiler.dsp
perl ..\tools\BuildDsp.pl D:\work\swg\current\src\engine\shared\application\TreeFileBuilder\build\win32\TreeFileBuilder.dsp
perl ..\tools\BuildDsp.pl D:\work\swg\current\src\engine\shared\application\TreeFileRspBuilder\build\win32\TreeFileRspBuilder.dsp
perl ..\tools\BuildDsp.pl D:\work\swg\current\src\engine\shared\library\sharedCollision\build\win32\sharedCollision.dsp
perl ..\tools\BuildDsp.pl D:\work\swg\current\src\engine\shared\library\sharedCommandParser\build\win32\sharedCommandParser.dsp
perl ..\tools\BuildDsp.pl D:\work\swg\current\src\engine\shared\library\sharedCompression\build\win32\sharedCompression.dsp
perl ..\tools\BuildDsp.pl D:\work\swg\current\src\engine\shared\library\sharedDatabaseInterface\build\win32\sharedDatabaseInterface.dsp
perl ..\tools\BuildDsp.pl D:\work\swg\current\src\engine\shared\library\sharedDebug\build\win32\sharedDebug.dsp
perl ..\tools\BuildDsp.pl D:\work\swg\current\src\engine\shared\library\sharedFile\build\win32\sharedFile.dsp
perl ..\tools\BuildDsp.pl D:\work\swg\current\src\engine\shared\library\sharedFoundation\build\win32\sharedFoundation.dsp
perl ..\tools\BuildDsp.pl D:\work\swg\current\src\engine\shared\library\sharedFoundationTypes\build\win32\sharedFoundationTypes.dsp
perl ..\tools\BuildDsp.pl D:\work\swg\current\src\engine\shared\library\sharedFractal\build\win32\sharedFractal.dsp
perl ..\tools\BuildDsp.pl D:\work\swg\current\src\engine\shared\library\sharedGame\build\win32\sharedGame.dsp
perl ..\tools\BuildDsp.pl D:\work\swg\current\src\engine\shared\library\sharedImage\build\win32\sharedImage.dsp
perl ..\tools\BuildDsp.pl D:\work\swg\current\src\engine\shared\library\sharedInputMap\build\win32\sharedInputMap.dsp
perl ..\tools\BuildDsp.pl D:\work\swg\current\src\engine\shared\library\sharedIoWin\build\win32\sharedIoWin.dsp
perl ..\tools\BuildDsp.pl D:\work\swg\current\src\engine\shared\library\sharedLog\build\win32\sharedLog.dsp
perl ..\tools\BuildDsp.pl D:\work\swg\current\src\engine\shared\library\sharedMath\build\win32\sharedMath.dsp
perl ..\tools\BuildDsp.pl D:\work\swg\current\src\engine\shared\library\sharedMathArchive\build\win32\sharedMathArchive.dsp
perl ..\tools\BuildDsp.pl D:\work\swg\current\src\engine\shared\library\sharedMemoryBlockManager\build\win32\sharedMemoryBlockManager.dsp
perl ..\tools\BuildDsp.pl D:\work\swg\current\src\engine\shared\library\sharedMemoryManager\build\win32\sharedMemoryManager.dsp
perl ..\tools\BuildDsp.pl D:\work\swg\current\src\engine\shared\library\sharedMessageDispatch\build\win32\sharedMessageDispatch.dsp
perl ..\tools\BuildDsp.pl D:\work\swg\current\src\engine\shared\library\sharedNetwork\build\win32\sharedNetwork.dsp
perl ..\tools\BuildDsp.pl D:\work\swg\current\src\engine\shared\library\sharedNetworkMessages\build\win32\sharedNetworkMessages.dsp
perl ..\tools\BuildDsp.pl D:\work\swg\current\src\engine\shared\library\sharedObject\build\win32\sharedObject.dsp
perl ..\tools\BuildDsp.pl D:\work\swg\current\src\engine\shared\library\sharedPathfinding\build\win32\sharedPathfinding.dsp
perl ..\tools\BuildDsp.pl D:\work\swg\current\src\engine\shared\library\sharedRandom\build\win32\sharedRandom.dsp
perl ..\tools\BuildDsp.pl D:\work\swg\current\src\engine\shared\library\sharedSkillSystem\build\win32\sharedSkillSystem.dsp
perl ..\tools\BuildDsp.pl D:\work\swg\current\src\engine\shared\library\sharedStatusWindow\build\win32\sharedStatusWindow.dsp
perl ..\tools\BuildDsp.pl D:\work\swg\current\src\engine\shared\library\sharedSwitcher\build\win32\sharedSwitcher.dsp
perl ..\tools\BuildDsp.pl D:\work\swg\current\src\engine\shared\library\sharedSynchronization\build\win32\sharedSynchronization.dsp
perl ..\tools\BuildDsp.pl D:\work\swg\current\src\engine\shared\library\sharedTemplate\build\win32\sharedTemplate.dsp
perl ..\tools\BuildDsp.pl D:\work\swg\current\src\engine\shared\library\sharedTemplateDefinition\build\win32\sharedTemplateDefinition.dsp
perl ..\tools\BuildDsp.pl D:\work\swg\current\src\engine\shared\library\sharedTerrain\build\win32\sharedTerrain.dsp
perl ..\tools\BuildDsp.pl D:\work\swg\current\src\engine\shared\library\sharedThread\build\win32\sharedThread.dsp
perl ..\tools\BuildDsp.pl D:\work\swg\current\src\engine\shared\library\sharedUtility\build\win32\sharedUtility.dsp
rem perl ..\tools\BuildDsp.pl D:\work\swg\current\src\external\3rd\application\UiBuilder\UIBuilder.dsp
rem perl ..\tools\BuildDsp.pl D:\work\swg\current\src\external\3rd\application\UiBuilder\txload\txload.dsp
rem perl ..\tools\BuildDsp.pl D:\work\swg\current\src\external\3rd\application\UiFontBuilder\UIFontBuilder.dsp
rem perl ..\tools\BuildDsp.pl D:\work\swg\current\src\external\3rd\application\UnicodeTester\build\win32\UnicodeTester.dsp
rem perl ..\tools\BuildDsp.pl D:\work\swg\current\src\external\3rd\library\soePlatform\Base\win32\Base.dsp
rem perl ..\tools\BuildDsp.pl D:\work\swg\current\src\external\3rd\library\soePlatform\ChatAPI\win32\ChatAPI.dsp
rem perl ..\tools\BuildDsp.pl D:\work\swg\current\src\external\3rd\library\soePlatform\legacy\vnl4\Crypto\build\win32\crypto.dsp
rem perl ..\tools\BuildDsp.pl D:\work\swg\current\src\external\3rd\library\soePlatform\legacy\vnl4\Singleton\build\win32\singleton.dsp
rem perl ..\tools\BuildDsp.pl D:\work\swg\current\src\external\3rd\library\soePlatform\legacy\vnl4\Win32\Network.dsp
rem perl ..\tools\BuildDsp.pl D:\work\swg\current\src\external\3rd\library\soePlatform\legacy\vnl4\Win32\NetworkSupport.dsp
rem perl ..\tools\BuildDsp.pl D:\work\swg\current\src\external\3rd\library\soePlatform\legacy\vnl4\Win32\tests\tests.dsp
rem perl ..\tools\BuildDsp.pl D:\work\swg\current\src\external\3rd\library\soePlatform\legacy\vnl4\Win32\vnltest\vnltest.dsp
rem perl ..\tools\BuildDsp.pl D:\work\swg\current\src\external\3rd\library\soePlatform\legacy\vnl4\Win32\vnltestcli\vnltestcli.dsp
rem perl ..\tools\BuildDsp.pl D:\work\swg\current\src\external\3rd\library\stationapi\stationapi.dsp
rem perl ..\tools\BuildDsp.pl D:\work\swg\current\src\external\3rd\library\stationapi\stationapidemo\stationapidemo.dsp
rem perl ..\tools\BuildDsp.pl D:\work\swg\current\src\external\3rd\library\udplibrary\udplibrary.dsp
rem perl ..\tools\BuildDsp.pl D:\work\swg\current\src\external\3rd\library\ui\build\win32\ui.dsp
perl ..\tools\BuildDsp.pl D:\work\swg\current\src\external\ours\application\LocalizationTool\build\win32\LocalizationTool.dsp
perl ..\tools\BuildDsp.pl D:\work\swg\current\src\external\ours\library\archive\build\win32\archive.dsp
perl ..\tools\BuildDsp.pl D:\work\swg\current\src\external\ours\library\crypto\build\win32\crypto.dsp
perl ..\tools\BuildDsp.pl D:\work\swg\current\src\external\ours\library\localization\build\win32\localization.dsp
perl ..\tools\BuildDsp.pl D:\work\swg\current\src\external\ours\library\localizationArchive\build\win32\localizationArchive.dsp
perl ..\tools\BuildDsp.pl D:\work\swg\current\src\external\ours\library\singleton\build\win32\singleton.dsp
perl ..\tools\BuildDsp.pl D:\work\swg\current\src\external\ours\library\unicode\build\win32\unicode.dsp
perl ..\tools\BuildDsp.pl D:\work\swg\current\src\external\ours\library\unicodeArchive\build\win32\unicodeArchive.dsp
perl ..\tools\BuildDsp.pl D:\work\swg\current\src\game\client\application\SwgClient\build\win32\SwgClient.dsp
perl ..\tools\BuildDsp.pl D:\work\swg\current\src\game\client\application\SwgGodClient\build\win32\SwgGodClient.dsp
rem perl ..\tools\BuildDsp.pl D:\work\swg\current\src\game\client\application\SwgServerManager\build\win32\SwgServerManager.dsp
perl ..\tools\BuildDsp.pl D:\work\swg\current\src\game\client\library\swgClientUserInterface\build\win32\swgClientUserInterface.dsp
perl ..\tools\BuildDsp.pl D:\work\swg\current\src\game\client\library\swgClientUtility\build\win32\swgClientUtility.dsp
perl ..\tools\BuildDsp.pl D:\work\swg\current\src\game\server\application\SwgDatabaseServer\build\win32\SwgDatabaseServer.dsp
perl ..\tools\BuildDsp.pl D:\work\swg\current\src\game\server\application\SwgGameServer\build\win32\SwgGameServer.dsp
perl ..\tools\BuildDsp.pl D:\work\swg\current\src\game\server\application\SwgNameGenerator\build\win32\SwgNameGenerator.dsp
perl ..\tools\BuildDsp.pl D:\work\swg\current\src\game\server\library\swgServerNetworkMessages\build\win32\swgServerNetworkMessages.dsp
rem perl ..\tools\BuildDsp.pl D:\work\swg\current\src\game\shared\application\SwgContentSync\build\win32\SwgContentSync.dsp
perl ..\tools\BuildDsp.pl D:\work\swg\current\src\game\shared\library\swgSharedNetworkMessages\build\win32\swgSharedNetworkMessages.dsp
perl ..\tools\BuildDsp.pl D:\work\swg\current\src\game\shared\library\swgSharedUtility\build\win32\swgSharedUtility.dsp
-88
View File
@@ -1,88 +0,0 @@
@echo on
@rem -- client
perl ..\tools\BuildVcproj.pl engine\client\library\clientAnimation\build\win32\clientAnimation.vcproj
perl ..\tools\BuildVcproj.pl engine\client\library\clientAudio\build\win32\clientAudio.vcproj
perl ..\tools\BuildVcproj.pl engine\client\library\clientBugReporting\build\win32\clientBugReporting.vcproj
perl ..\tools\BuildVcproj.pl engine\client\library\clientDirectInput\build\win32\clientDirectInput.vcproj
perl ..\tools\BuildVcproj.pl engine\client\library\clientGame\build\win32\clientGame.vcproj
perl ..\tools\BuildVcproj.pl engine\client\library\clientGraphics\build\win32\clientGraphics.vcproj
perl ..\tools\BuildVcproj.pl engine\client\library\clientObject\build\win32\clientObject.vcproj
perl ..\tools\BuildVcproj.pl engine\client\library\clientParticle\build\win32\clientParticle.vcproj
perl ..\tools\BuildVcproj.pl engine\client\library\clientSkeletalAnimation\build\win32\clientSkeletalAnimation.vcproj
perl ..\tools\BuildVcproj.pl engine\client\library\clientTerrain\build\win32\clientTerrain.vcproj
perl ..\tools\BuildVcproj.pl engine\client\library\clientTextureRenderer\build\win32\clientTextureRenderer.vcproj
perl ..\tools\BuildVcproj.pl engine\client\library\clientUserInterface\build\win32\clientUserInterface.vcproj
@rem -- server
perl ..\tools\BuildVcproj.pl engine\server\library\serverCommodityAPI\build\win32\serverserverCommodityAPI.vcproj
perl ..\tools\BuildVcproj.pl engine\server\library\serverDatabase\build\win32\serverDatabase.vcproj
perl ..\tools\BuildVcproj.pl engine\server\library\serverGame\build\win32\serverGame.vcproj
perl ..\tools\BuildVcproj.pl engine\server\library\serverKeyShare\build\win32\serverKeyShare.vcproj
perl ..\tools\BuildVcproj.pl engine\server\library\serverMetrics\build\win32\serverMetrics.vcproj
perl ..\tools\BuildVcproj.pl engine\server\library\serverNetworkMessages\build\win32\serverNetworkMessages.vcproj
perl ..\tools\BuildVcproj.pl engine\server\library\serverPathfinding\build\win32\serverPathfinding.vcproj
perl ..\tools\BuildVcproj.pl engine\server\library\serverScript\build\win32\serverScript.vcproj
perl ..\tools\BuildVcproj.pl engine\server\library\serverUtility\build\win32\serverUtility.vcproj
@rem -- shared
perl ..\tools\BuildVcproj.pl engine\shared\library\sharedCollision\build\win32\sharedCollision.vcproj
perl ..\tools\BuildVcproj.pl engine\shared\library\sharedCommandParser\build\win32\sharedCommandParser.vcproj
perl ..\tools\BuildVcproj.pl engine\shared\library\sharedCompression\build\win32\sharedCompression.vcproj
perl ..\tools\BuildVcproj.pl engine\shared\library\sharedDatabaseInterface\build\win32\sharedDatabaseInterface.vcproj
perl ..\tools\BuildVcproj.pl engine\shared\library\sharedDebug\build\win32\sharedDebug.vcproj
perl ..\tools\BuildVcproj.pl engine\shared\library\sharedFile\build\win32\sharedFile.vcproj
perl ..\tools\BuildVcproj.pl engine\shared\library\sharedFoundation\build\win32\sharedFoundation.vcproj
perl ..\tools\BuildVcproj.pl engine\shared\library\sharedFoundationTypes\build\win32\sharedFoundationTypes.vcproj
perl ..\tools\BuildVcproj.pl engine\shared\library\sharedFractal\build\win32\sharedFractal.vcproj
perl ..\tools\BuildVcproj.pl engine\shared\library\sharedGame\build\win32\sharedGame.vcproj
perl ..\tools\BuildVcproj.pl engine\shared\library\sharedImage\build\win32\sharedImage.vcproj
perl ..\tools\BuildVcproj.pl engine\shared\library\sharedInputMap\build\win32\sharedInputMap.vcproj
perl ..\tools\BuildVcproj.pl engine\shared\library\sharedIoWin\build\win32\sharedIoWin.vcproj
perl ..\tools\BuildVcproj.pl engine\shared\library\sharedLog\build\win32\sharedLog.vcproj
perl ..\tools\BuildVcproj.pl engine\shared\library\sharedMath\build\win32\sharedMath.vcproj
perl ..\tools\BuildVcproj.pl engine\shared\library\sharedMathArchive\build\win32\sharedMathArchive.vcproj
perl ..\tools\BuildVcproj.pl engine\shared\library\sharedMemoryManager\build\win32\sharedMemoryManager.vcproj
perl ..\tools\BuildVcproj.pl engine\shared\library\sharedMessageDispatch\build\win32\sharedMessageDispatch.vcproj
perl ..\tools\BuildVcproj.pl engine\shared\library\sharedNetwork\build\win32\sharedNetwork.vcproj
perl ..\tools\BuildVcproj.pl engine\shared\library\sharedNetworkMessages\build\win32\sharedNetworkMessages.vcproj
perl ..\tools\BuildVcproj.pl engine\shared\library\sharedObject\build\win32\sharedObject.vcproj
perl ..\tools\BuildVcproj.pl engine\shared\library\sharedPathfinding\build\win32\sharedPathfinding.vcproj
perl ..\tools\BuildVcproj.pl engine\shared\library\sharedRandom\build\win32\sharedRandom.vcproj
perl ..\tools\BuildVcproj.pl engine\shared\library\sharedRegex\build\win32\sharedRegex.vcproj
perl ..\tools\BuildVcproj.pl engine\shared\library\sharedRemoteDebugServer\build\win32\sharedRemoteDebugServer.vcproj
perl ..\tools\BuildVcproj.pl engine\shared\library\sharedSkillSystem\build\win32\sharedSkillSystem.vcproj
perl ..\tools\BuildVcproj.pl engine\shared\library\sharedStatusWindow\build\win32\sharedStatusWindow.vcproj
perl ..\tools\BuildVcproj.pl engine\shared\library\sharedSwitcher\build\win32\sharedSwitcher.vcproj
perl ..\tools\BuildVcproj.pl engine\shared\library\sharedSynchronization\build\win32\sharedSynchronization.vcproj
perl ..\tools\BuildVcproj.pl engine\shared\library\sharedTemplate\build\win32\sharedTemplate.vcproj
perl ..\tools\BuildVcproj.pl engine\shared\library\sharedTemplateDefinition\build\win32\sharedTemplateDefinition.vcproj
perl ..\tools\BuildVcproj.pl engine\shared\library\sharedTerrain\build\win32\sharedTerrain.vcproj
perl ..\tools\BuildVcproj.pl engine\shared\library\sharedThread\build\win32\sharedThread.vcproj
perl ..\tools\BuildVcproj.pl engine\shared\library\sharedUtility\build\win32\sharedUtility.vcproj
@rem -- external
perl ..\tools\BuildVcproj.pl external\ours\library\archive\build\win32\archive.vcproj
perl ..\tools\BuildVcproj.pl external\ours\library\crypto\build\win32\crypto.vcproj
perl ..\tools\BuildVcproj.pl external\ours\library\fileInterface\build\win32\fileInterface.vcproj
perl ..\tools\BuildVcproj.pl external\ours\library\localization\build\win32\localization.vcproj
perl ..\tools\BuildVcproj.pl external\ours\library\localizationArchive\build\win32\localizationArchive.vcproj
perl ..\tools\BuildVcproj.pl external\ours\library\singleton\build\win32\singleton.vcproj
perl ..\tools\BuildVcproj.pl external\ours\library\unicode\build\win32\unicode.vcproj
perl ..\tools\BuildVcproj.pl external\ours\library\unicodeArchive\build\win32\unicodeArchive.vcproj
@rem -- game client
perl ..\tools\BuildVcproj.pl game\client\library\swgClientUserInterface\build\win32\swgClientUserInterface.vcproj
@rem -- game server
perl ..\tools\BuildVcproj.pl game\server\library\swgServerNetworkMessages\build\win32\swgServerNetworkMessages.vcproj
@rem -- game shared
perl ..\tools\BuildVcproj.pl game\shared\library\swgSharedNetworkMessages\build\win32\swgSharedNetworkMessages.vcproj
perl ..\tools\BuildVcproj.pl game\shared\library\swgSharedUtility\build\win32\swgSharedUtility.vcproj
@rem -- application
perl ..\tools\BuildVcproj.pl engine\client\application\Viewer\build\win32\Viewer.vcproj
perl ..\tools\BuildVcproj.pl game\client\application\SwgClient\build\win32\SwgClient.vcproj
perl ..\tools\BuildVcproj.pl game\server\application\SwgGameServer\build\win32\SwgGameServer.vcproj
-28
View File
@@ -1,28 +0,0 @@
AUTOMAKE_OPTIONS=foreign
SUBDIRS=external engine game . test
# one-off lint target for top-level makefile. Lint
# is selectively enabled for engine only (for now)
LINT_SUBDIRS=engine
lint-am: Makefile
lint-recursive:
@set fnord $$MAKEFLAGS; amf=$$2; \
dot_seen=no; \
target=`echo $@ | sed s/-recursive//`; \
list='$(LINT_SUBDIRS)'; for subdir in $$list; do \
echo "Making $$target in $$subdir"; \
if test "$$subdir" = "."; then \
dot_seen=yes; \
local_target="$$target-am"; \
else \
local_target="$$target"; \
fi; \
(cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
|| case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \
done; \
if test "$$dot_seen" = "no"; then \
$(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
fi; test -z "$$fail"
lint: lint-recursive
-1
View File
@@ -1 +0,0 @@
bootstrap
-14
View File
@@ -1,14 +0,0 @@
#!/bin/bash
if ! test -d config; then
mkdir config;
fi
aclocal && libtoolize --force && automake --force --foreign --add-missing --copy && autoconf
SUBDIRS="engine external/ours/library/archive external/ours/library/crypto external/ours/library/fileInterface external/ours/library/localization external/ours/library/unicode external/ours/library/unicodeArchive external/ours/library/localizationArchive game external/3rd/library/platform/MonAPI2"
for d in $SUBDIRS; do
echo "bootstrapping $d"
pushd $d && bash bootstrap && popd
done
-81
View File
@@ -1,81 +0,0 @@
###############################################################################
#
# Master Makefile for Engine
#
# This file invokes the makefiles for specific projects as needed.
#
# Typically used targets:
# make debug Builds the debug version of all applications
# make release Builds the release version of all applications
# make publish Does the same thing as "make debug", then copies the
# newly-build executables to the exe/linux directory
###############################################################################
###############################################################################
# Definitions and includes
###############################################################################
SRCDIR =../..
ENGINE_MAKE_DIR =$(SRCDIR)/engine/build/linux
GAME_MAKE_DIR =$(SRCDIR)/game/build/linux
###############################################################################
# Rules to invoke the makefiles for specific applications
###############################################################################
debug_engine:
+@make -C $(ENGINE_MAKE_DIR) engine_debug
debug_game:
+@make -C $(GAME_MAKE_DIR) game_debug
debug:
+@make -C $(GAME_MAKE_DIR) debug_libs
+@make debug_engine
+@make debug_game
###############################################################################
# Special targets
###############################################################################
clean_engine:
+@make -C $(ENGINE_MAKE_DIR) clean
clean_game:
+@make -C $(GAME_MAKE_DIR) clean
clean: clean_engine clean_game
lint_engine:
+@make -C $(ENGINE_MAKE_DIR) lint
lint_game:
+@make -C $(GAME_MAKE_DIR) lint
lint: lint_engine lint_game
###############################################################################
# More Special targets
###############################################################################
cleanall:
@find $(SRCDIR) -name .depend -exec rm {} \;
@find $(SRCDIR) -name "*.d" -exec rm -f {} \;
@find $(SRCDIR) -type d -name compile -depth -exec rm -rf {} \;
@find $(SRCDIR) -name "*.o" -exec rm -f {} \;
@find $(SRCDIR) -name "*.a" | grep -v libz.a | grep -v libpcre.a | xargs rm -f;
# TODO So the above is pretty hacky, we stillhave these two lame .a files checked into p4.
cleandepend:
@find $(SRCDIR) -name .depend -exec rm {} \;
#dependcheck: .cppsums
# -@mv .cppsums .cppsums~
# @find $(SRCDIR) -name "*.cpp" | sum > .cppsums
# @if ! /usr/bin/diff .cppsums .cppsums~ > /dev/null; then find $(SRCDIR) -name .depend -exec rm {} \; ; fi;
# @rm .cppsums~
#.cppsums:
# @find $(SRCDIR) -name .depend -exec rm {} \;
# @find $(SRCDIR) -name "*.cpp" | sum > .cppsums
-4
View File
@@ -1,4 +0,0 @@
lib_LTLIBRARIES=libSharedFoundation.la
##libSharedFoundation_la_SOURCES=/swg/swg/current/src/engine/shared/library/sharedFoundation/src/linux/vsnprintf.cpp
libSharedFoundation_la_SOURCES=$(mysources)
AM_CPPFLAGS=-I$(base_dir_soe_shared_foundation)/include/public -I $(libSharedFoundation_la_SOURCES)
-17
View File
@@ -1,17 +0,0 @@
#
# Copyright 2001, Sony Online Entertainment, Inc.
# All Rights Reserved.
#
# Makefile for creating Emacs workspace data file for fast workspace
# file opening.
WORKSPACE_FILENAME=swg.ews
PERL=perl
all:
$(PERL) -w make_workspace.pl ../.. > ${WORKSPACE_FILENAME}
$(PERL) -w make_workspace.pl ../../../tools >> ${WORKSPACE_FILENAME}
$(PERL) -w make_workspace.pl ../../../dsrc >> ${WORKSPACE_FILENAME}
clean:
rm -f ${WORKSPACE_FILENAME}
-56
View File
@@ -1,56 +0,0 @@
#!/usr/bin/perl
use File::Find;
# Process command line arguments.
while ($ARGV[0] =~ /^-/)
{
$_ = shift;
if ($_ eq "--debug")
{
$debug = 1;
}
else
{
die "unknown command line option";
}
}
# Determine directory to run this on.
@findDirs = @ARGV ? @ARGV : ('.');
# Scan for appropriate files.
find(\&FindHandler, @findDirs);
# Done.
exit(0);
# ===================================================================
sub FindHandler
{
if (-d $_)
{
# Examining a directory entry.
# Prune the directory if it's one I want to ignore. This
# stops the program from descending any further down this directory.
if (m/^(compile|external|Debug|Optimized|Production|Release)$/i)
{
# Prune it.
$File::Find::prune = 1;
print STDERR "[Pruned Directory Entry: $File::Find::name]\n" if ($debug);
}
}
elsif (-f $_)
{
# Handle files that should go in the workspace file.
if (m/^.*(c|cpp|def|h|hpp|java|lnt|pl|pm|py|script(?:lib)?|sql|tab|txt)$/)
{
print "$_:$File::Find::dir/\n";
}
}
}
# ===================================================================
+1 -590
View File
@@ -1,7 +1,7 @@
Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 2013
VisualStudioVersion = 12.0.31101.0
VisualStudioVersion = 12.0.40629.0
MinimumVisualStudioVersion = 10.0.40219.1
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "AnimationEditor", "..\..\engine\client\application\AnimationEditor\build\win32\AnimationEditor.vcxproj", "{AB9A58E2-734B-45E4-B4BB-C7E9FF6ACA3F}"
ProjectSection(ProjectDependencies) = postProject
@@ -14,7 +14,6 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "AnimationEditor", "..\..\en
{ECBDFCFF-F4AE-475A-AA90-729EB96430A0} = {ECBDFCFF-F4AE-475A-AA90-729EB96430A0}
{F1B57BF8-072E-4E69-940A-C254A98DA10D} = {F1B57BF8-072E-4E69-940A-C254A98DA10D}
{C87164F5-14A9-403C-8BC4-217FD40731EA} = {C87164F5-14A9-403C-8BC4-217FD40731EA}
{950E9CF2-CD44-476C-826A-BB7869241F5B} = {950E9CF2-CD44-476C-826A-BB7869241F5B}
{2AE0CEF0-C4F2-4786-A026-8338FB09D61B} = {2AE0CEF0-C4F2-4786-A026-8338FB09D61B}
{DF4D72EF-2341-4462-AB78-B130450511DA} = {DF4D72EF-2341-4462-AB78-B130450511DA}
{B97963EF-49E4-477E-85FF-E7FEE7C626D7} = {B97963EF-49E4-477E-85FF-E7FEE7C626D7}
@@ -74,7 +73,6 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "AnimationEditor", "..\..\en
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ArmorExporterTool", "..\..\engine\shared\application\ArmorExporterTool\build\win32\ArmorExporterTool.vcxproj", "{86D00284-6EAE-4D6C-989F-585AB5B44A14}"
ProjectSection(ProjectDependencies) = postProject
{F8271BF7-CFBF-4DE3-84BB-428058E0B069} = {F8271BF7-CFBF-4DE3-84BB-428058E0B069}
{2E6982E0-DCB6-4ED9-BFAD-D29DAEEA6AD2} = {2E6982E0-DCB6-4ED9-BFAD-D29DAEEA6AD2}
{858F7DCE-325A-467C-9DDA-2FE40217286F} = {858F7DCE-325A-467C-9DDA-2FE40217286F}
{2FE4E38D-BE7D-4E3B-9613-63E9F01855F4} = {2FE4E38D-BE7D-4E3B-9613-63E9F01855F4}
@@ -97,73 +95,6 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "BugTool", "..\..\engine\cli
{ECBDFCFF-F4AE-475A-AA90-729EB96430A0} = {ECBDFCFF-F4AE-475A-AA90-729EB96430A0}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "CentralServer", "..\..\engine\server\application\CentralServer\build\win32\CentralServer.vcxproj", "{D5CA7486-D01E-4DCB-883B-8E60F7F64D26}"
ProjectSection(ProjectDependencies) = postProject
{C87164F5-14A9-403C-8BC4-217FD40731EA} = {C87164F5-14A9-403C-8BC4-217FD40731EA}
{2AE0CEF0-C4F2-4786-A026-8338FB09D61B} = {2AE0CEF0-C4F2-4786-A026-8338FB09D61B}
{DF4D72EF-2341-4462-AB78-B130450511DA} = {DF4D72EF-2341-4462-AB78-B130450511DA}
{B97963EF-49E4-477E-85FF-E7FEE7C626D7} = {B97963EF-49E4-477E-85FF-E7FEE7C626D7}
{20D4D8EB-87CA-4C5F-8BA3-FFC898563C40} = {20D4D8EB-87CA-4C5F-8BA3-FFC898563C40}
{2E6982E0-DCB6-4ED9-BFAD-D29DAEEA6AD2} = {2E6982E0-DCB6-4ED9-BFAD-D29DAEEA6AD2}
{858F7DCE-325A-467C-9DDA-2FE40217286F} = {858F7DCE-325A-467C-9DDA-2FE40217286F}
{0FB11BC8-3BD1-4471-8DDA-DA3BC05937B2} = {0FB11BC8-3BD1-4471-8DDA-DA3BC05937B2}
{A8036EC1-9682-4315-A3D2-6B26C3245D50} = {A8036EC1-9682-4315-A3D2-6B26C3245D50}
{0202ADB3-5587-4138-A626-52B7DB52FBBA} = {0202ADB3-5587-4138-A626-52B7DB52FBBA}
{D409A18E-F788-4F1B-BAD1-ED58EE4D458F} = {D409A18E-F788-4F1B-BAD1-ED58EE4D458F}
{2FE4E38D-BE7D-4E3B-9613-63E9F01855F4} = {2FE4E38D-BE7D-4E3B-9613-63E9F01855F4}
{03819289-4E8B-44E9-9F3B-A3243C9797C9} = {03819289-4E8B-44E9-9F3B-A3243C9797C9}
{5789EA7C-6596-4DCC-A9FB-DD7582888F90} = {5789EA7C-6596-4DCC-A9FB-DD7582888F90}
{DE93996C-CB51-4D61-85A0-A9DFC677445F} = {DE93996C-CB51-4D61-85A0-A9DFC677445F}
{52153865-1ABF-4FBB-84C4-0FC439716F1E} = {52153865-1ABF-4FBB-84C4-0FC439716F1E}
{4F237764-394D-40CB-9314-DAEDED42E2CD} = {4F237764-394D-40CB-9314-DAEDED42E2CD}
{DECF2964-3A66-4FA6-AB27-D4507C5480EA} = {DECF2964-3A66-4FA6-AB27-D4507C5480EA}
{1A7D1159-3474-4520-882F-F1842F0AAFAE} = {1A7D1159-3474-4520-882F-F1842F0AAFAE}
{4EFF0958-FBC8-4053-971A-7022EB0035E4} = {4EFF0958-FBC8-4053-971A-7022EB0035E4}
{41269A52-38B8-4F9A-AE38-1103BB03A10B} = {41269A52-38B8-4F9A-AE38-1103BB03A10B}
{38DF394C-0909-4507-8029-53D960FEA464} = {38DF394C-0909-4507-8029-53D960FEA464}
{D6CC353F-4FD1-4AEB-A984-E7B2E9CE4E69} = {D6CC353F-4FD1-4AEB-A984-E7B2E9CE4E69}
{861A873C-D6AD-4B8A-9BED-0314A8B74B54} = {861A873C-D6AD-4B8A-9BED-0314A8B74B54}
{6BD52B35-92CA-44E4-995E-2B79C7398183} = {6BD52B35-92CA-44E4-995E-2B79C7398183}
{F3245C29-7760-4956-B1B7-FC483BE417CD} = {F3245C29-7760-4956-B1B7-FC483BE417CD}
{DC2CD926-8EA3-4ADD-AA62-A95CCA8AC7DD} = {DC2CD926-8EA3-4ADD-AA62-A95CCA8AC7DD}
{E0F9D922-DAA7-475E-A95A-7BC540ED58FE} = {E0F9D922-DAA7-475E-A95A-7BC540ED58FE}
{52DF0D16-D070-47FC-B987-8D80B027D114} = {52DF0D16-D070-47FC-B987-8D80B027D114}
{C595C10E-ADA8-429A-896A-8904A46737D3} = {C595C10E-ADA8-429A-896A-8904A46737D3}
{67BFDA04-F26E-497F-A6FE-EE52550C15FE} = {67BFDA04-F26E-497F-A6FE-EE52550C15FE}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ChatServer", "..\..\engine\server\APPLICATION\CHATSERVER\build\win32\ChatServer.vcxproj", "{30115B9B-5669-4AA0-80BE-1DF73F5F2450}"
ProjectSection(ProjectDependencies) = postProject
{67BFDA04-F26E-497F-A6FE-EE52550C15FE} = {67BFDA04-F26E-497F-A6FE-EE52550C15FE}
{52DF0D16-D070-47FC-B987-8D80B027D114} = {52DF0D16-D070-47FC-B987-8D80B027D114}
{C87164F5-14A9-403C-8BC4-217FD40731EA} = {C87164F5-14A9-403C-8BC4-217FD40731EA}
{2AE0CEF0-C4F2-4786-A026-8338FB09D61B} = {2AE0CEF0-C4F2-4786-A026-8338FB09D61B}
{DF4D72EF-2341-4462-AB78-B130450511DA} = {DF4D72EF-2341-4462-AB78-B130450511DA}
{B97963EF-49E4-477E-85FF-E7FEE7C626D7} = {B97963EF-49E4-477E-85FF-E7FEE7C626D7}
{2E6982E0-DCB6-4ED9-BFAD-D29DAEEA6AD2} = {2E6982E0-DCB6-4ED9-BFAD-D29DAEEA6AD2}
{858F7DCE-325A-467C-9DDA-2FE40217286F} = {858F7DCE-325A-467C-9DDA-2FE40217286F}
{0FB11BC8-3BD1-4471-8DDA-DA3BC05937B2} = {0FB11BC8-3BD1-4471-8DDA-DA3BC05937B2}
{A8036EC1-9682-4315-A3D2-6B26C3245D50} = {A8036EC1-9682-4315-A3D2-6B26C3245D50}
{0202ADB3-5587-4138-A626-52B7DB52FBBA} = {0202ADB3-5587-4138-A626-52B7DB52FBBA}
{2FE4E38D-BE7D-4E3B-9613-63E9F01855F4} = {2FE4E38D-BE7D-4E3B-9613-63E9F01855F4}
{03819289-4E8B-44E9-9F3B-A3243C9797C9} = {03819289-4E8B-44E9-9F3B-A3243C9797C9}
{5789EA7C-6596-4DCC-A9FB-DD7582888F90} = {5789EA7C-6596-4DCC-A9FB-DD7582888F90}
{DE93996C-CB51-4D61-85A0-A9DFC677445F} = {DE93996C-CB51-4D61-85A0-A9DFC677445F}
{52153865-1ABF-4FBB-84C4-0FC439716F1E} = {52153865-1ABF-4FBB-84C4-0FC439716F1E}
{DECF2964-3A66-4FA6-AB27-D4507C5480EA} = {DECF2964-3A66-4FA6-AB27-D4507C5480EA}
{1A7D1159-3474-4520-882F-F1842F0AAFAE} = {1A7D1159-3474-4520-882F-F1842F0AAFAE}
{4EFF0958-FBC8-4053-971A-7022EB0035E4} = {4EFF0958-FBC8-4053-971A-7022EB0035E4}
{41269A52-38B8-4F9A-AE38-1103BB03A10B} = {41269A52-38B8-4F9A-AE38-1103BB03A10B}
{101CF34F-B5FD-4A14-A3E9-FD28078760BE} = {101CF34F-B5FD-4A14-A3E9-FD28078760BE}
{38DF394C-0909-4507-8029-53D960FEA464} = {38DF394C-0909-4507-8029-53D960FEA464}
{D6CC353F-4FD1-4AEB-A984-E7B2E9CE4E69} = {D6CC353F-4FD1-4AEB-A984-E7B2E9CE4E69}
{6BD52B35-92CA-44E4-995E-2B79C7398183} = {6BD52B35-92CA-44E4-995E-2B79C7398183}
{F3245C29-7760-4956-B1B7-FC483BE417CD} = {F3245C29-7760-4956-B1B7-FC483BE417CD}
{DC2CD926-8EA3-4ADD-AA62-A95CCA8AC7DD} = {DC2CD926-8EA3-4ADD-AA62-A95CCA8AC7DD}
{E0F9D922-DAA7-475E-A95A-7BC540ED58FE} = {E0F9D922-DAA7-475E-A95A-7BC540ED58FE}
{C595C10E-ADA8-429A-896A-8904A46737D3} = {C595C10E-ADA8-429A-896A-8904A46737D3}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ClientEffectEditor", "..\..\engine\client\application\ClientEffectEditor\build\win32\ClientEffectEditor.vcxproj", "{99E4A02B-6849-4C82-A9D3-213FD45BFE84}"
ProjectSection(ProjectDependencies) = postProject
{9496A020-65AD-45A6-9ACF-AE4F3358B027} = {9496A020-65AD-45A6-9ACF-AE4F3358B027}
@@ -234,41 +165,6 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ClientEffectEditor", "..\..
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "CommonAPI", "..\..\external\3rd\library\platform\projects\Session\CommonAPI\CommonAPI.vcxproj", "{5B7D9A11-141E-475B-A9E5-A5DCD4913274}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ConnectionServer", "..\..\engine\server\application\ConnectionServer\build\win32\ConnectionServer.vcxproj", "{2F380D05-A841-4A06-A4F8-11049F0061CD}"
ProjectSection(ProjectDependencies) = postProject
{C87164F5-14A9-403C-8BC4-217FD40731EA} = {C87164F5-14A9-403C-8BC4-217FD40731EA}
{2AE0CEF0-C4F2-4786-A026-8338FB09D61B} = {2AE0CEF0-C4F2-4786-A026-8338FB09D61B}
{DF4D72EF-2341-4462-AB78-B130450511DA} = {DF4D72EF-2341-4462-AB78-B130450511DA}
{B97963EF-49E4-477E-85FF-E7FEE7C626D7} = {B97963EF-49E4-477E-85FF-E7FEE7C626D7}
{2E6982E0-DCB6-4ED9-BFAD-D29DAEEA6AD2} = {2E6982E0-DCB6-4ED9-BFAD-D29DAEEA6AD2}
{3D6683D1-EAAE-4448-BE3A-8EE545E9592B} = {3D6683D1-EAAE-4448-BE3A-8EE545E9592B}
{858F7DCE-325A-467C-9DDA-2FE40217286F} = {858F7DCE-325A-467C-9DDA-2FE40217286F}
{0FB11BC8-3BD1-4471-8DDA-DA3BC05937B2} = {0FB11BC8-3BD1-4471-8DDA-DA3BC05937B2}
{A8036EC1-9682-4315-A3D2-6B26C3245D50} = {A8036EC1-9682-4315-A3D2-6B26C3245D50}
{0202ADB3-5587-4138-A626-52B7DB52FBBA} = {0202ADB3-5587-4138-A626-52B7DB52FBBA}
{D409A18E-F788-4F1B-BAD1-ED58EE4D458F} = {D409A18E-F788-4F1B-BAD1-ED58EE4D458F}
{2FE4E38D-BE7D-4E3B-9613-63E9F01855F4} = {2FE4E38D-BE7D-4E3B-9613-63E9F01855F4}
{03819289-4E8B-44E9-9F3B-A3243C9797C9} = {03819289-4E8B-44E9-9F3B-A3243C9797C9}
{5789EA7C-6596-4DCC-A9FB-DD7582888F90} = {5789EA7C-6596-4DCC-A9FB-DD7582888F90}
{DE93996C-CB51-4D61-85A0-A9DFC677445F} = {DE93996C-CB51-4D61-85A0-A9DFC677445F}
{52153865-1ABF-4FBB-84C4-0FC439716F1E} = {52153865-1ABF-4FBB-84C4-0FC439716F1E}
{4F237764-394D-40CB-9314-DAEDED42E2CD} = {4F237764-394D-40CB-9314-DAEDED42E2CD}
{DECF2964-3A66-4FA6-AB27-D4507C5480EA} = {DECF2964-3A66-4FA6-AB27-D4507C5480EA}
{1A7D1159-3474-4520-882F-F1842F0AAFAE} = {1A7D1159-3474-4520-882F-F1842F0AAFAE}
{4EFF0958-FBC8-4053-971A-7022EB0035E4} = {4EFF0958-FBC8-4053-971A-7022EB0035E4}
{41269A52-38B8-4F9A-AE38-1103BB03A10B} = {41269A52-38B8-4F9A-AE38-1103BB03A10B}
{38DF394C-0909-4507-8029-53D960FEA464} = {38DF394C-0909-4507-8029-53D960FEA464}
{D6CC353F-4FD1-4AEB-A984-E7B2E9CE4E69} = {D6CC353F-4FD1-4AEB-A984-E7B2E9CE4E69}
{861A873C-D6AD-4B8A-9BED-0314A8B74B54} = {861A873C-D6AD-4B8A-9BED-0314A8B74B54}
{6BD52B35-92CA-44E4-995E-2B79C7398183} = {6BD52B35-92CA-44E4-995E-2B79C7398183}
{F3245C29-7760-4956-B1B7-FC483BE417CD} = {F3245C29-7760-4956-B1B7-FC483BE417CD}
{DC2CD926-8EA3-4ADD-AA62-A95CCA8AC7DD} = {DC2CD926-8EA3-4ADD-AA62-A95CCA8AC7DD}
{E0F9D922-DAA7-475E-A95A-7BC540ED58FE} = {E0F9D922-DAA7-475E-A95A-7BC540ED58FE}
{52DF0D16-D070-47FC-B987-8D80B027D114} = {52DF0D16-D070-47FC-B987-8D80B027D114}
{C595C10E-ADA8-429A-896A-8904A46737D3} = {C595C10E-ADA8-429A-896A-8904A46737D3}
{67BFDA04-F26E-497F-A6FE-EE52550C15FE} = {67BFDA04-F26E-497F-A6FE-EE52550C15FE}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "DataLintRspBuilder", "..\..\engine\shared\application\DataLintRspBuilder\build\win32\DataLintRspBuilder.vcxproj", "{5B97B272-B221-439C-8FE8-39A5761BAC25}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "DataTableTool", "..\..\engine\shared\application\DataTableTool\build\win32\DataTableTool.vcxproj", "{9262C7EE-E593-46B1-AC7E-F12E5055EB57}"
@@ -338,7 +234,6 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "LightningEditor", "..\..\en
{ECBDFCFF-F4AE-475A-AA90-729EB96430A0} = {ECBDFCFF-F4AE-475A-AA90-729EB96430A0}
{F1B57BF8-072E-4E69-940A-C254A98DA10D} = {F1B57BF8-072E-4E69-940A-C254A98DA10D}
{C87164F5-14A9-403C-8BC4-217FD40731EA} = {C87164F5-14A9-403C-8BC4-217FD40731EA}
{950E9CF2-CD44-476C-826A-BB7869241F5B} = {950E9CF2-CD44-476C-826A-BB7869241F5B}
{2AE0CEF0-C4F2-4786-A026-8338FB09D61B} = {2AE0CEF0-C4F2-4786-A026-8338FB09D61B}
{DF4D72EF-2341-4462-AB78-B130450511DA} = {DF4D72EF-2341-4462-AB78-B130450511DA}
{B97963EF-49E4-477E-85FF-E7FEE7C626D7} = {B97963EF-49E4-477E-85FF-E7FEE7C626D7}
@@ -406,45 +301,11 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "LocalizationTool", "..\..\e
{DE93996C-CB51-4D61-85A0-A9DFC677445F} = {DE93996C-CB51-4D61-85A0-A9DFC677445F}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "LogServer", "..\..\engine\server\application\LogServer\build\win32\LogServer.vcxproj", "{B678A8AD-B63E-462F-8839-1D11284D08B1}"
ProjectSection(ProjectDependencies) = postProject
{C87164F5-14A9-403C-8BC4-217FD40731EA} = {C87164F5-14A9-403C-8BC4-217FD40731EA}
{2AE0CEF0-C4F2-4786-A026-8338FB09D61B} = {2AE0CEF0-C4F2-4786-A026-8338FB09D61B}
{DF4D72EF-2341-4462-AB78-B130450511DA} = {DF4D72EF-2341-4462-AB78-B130450511DA}
{B97963EF-49E4-477E-85FF-E7FEE7C626D7} = {B97963EF-49E4-477E-85FF-E7FEE7C626D7}
{2E6982E0-DCB6-4ED9-BFAD-D29DAEEA6AD2} = {2E6982E0-DCB6-4ED9-BFAD-D29DAEEA6AD2}
{858F7DCE-325A-467C-9DDA-2FE40217286F} = {858F7DCE-325A-467C-9DDA-2FE40217286F}
{0FB11BC8-3BD1-4471-8DDA-DA3BC05937B2} = {0FB11BC8-3BD1-4471-8DDA-DA3BC05937B2}
{A8036EC1-9682-4315-A3D2-6B26C3245D50} = {A8036EC1-9682-4315-A3D2-6B26C3245D50}
{0202ADB3-5587-4138-A626-52B7DB52FBBA} = {0202ADB3-5587-4138-A626-52B7DB52FBBA}
{D409A18E-F788-4F1B-BAD1-ED58EE4D458F} = {D409A18E-F788-4F1B-BAD1-ED58EE4D458F}
{2FE4E38D-BE7D-4E3B-9613-63E9F01855F4} = {2FE4E38D-BE7D-4E3B-9613-63E9F01855F4}
{03819289-4E8B-44E9-9F3B-A3243C9797C9} = {03819289-4E8B-44E9-9F3B-A3243C9797C9}
{5789EA7C-6596-4DCC-A9FB-DD7582888F90} = {5789EA7C-6596-4DCC-A9FB-DD7582888F90}
{DE93996C-CB51-4D61-85A0-A9DFC677445F} = {DE93996C-CB51-4D61-85A0-A9DFC677445F}
{52153865-1ABF-4FBB-84C4-0FC439716F1E} = {52153865-1ABF-4FBB-84C4-0FC439716F1E}
{4F237764-394D-40CB-9314-DAEDED42E2CD} = {4F237764-394D-40CB-9314-DAEDED42E2CD}
{DECF2964-3A66-4FA6-AB27-D4507C5480EA} = {DECF2964-3A66-4FA6-AB27-D4507C5480EA}
{1A7D1159-3474-4520-882F-F1842F0AAFAE} = {1A7D1159-3474-4520-882F-F1842F0AAFAE}
{41269A52-38B8-4F9A-AE38-1103BB03A10B} = {41269A52-38B8-4F9A-AE38-1103BB03A10B}
{38DF394C-0909-4507-8029-53D960FEA464} = {38DF394C-0909-4507-8029-53D960FEA464}
{D6CC353F-4FD1-4AEB-A984-E7B2E9CE4E69} = {D6CC353F-4FD1-4AEB-A984-E7B2E9CE4E69}
{861A873C-D6AD-4B8A-9BED-0314A8B74B54} = {861A873C-D6AD-4B8A-9BED-0314A8B74B54}
{6BD52B35-92CA-44E4-995E-2B79C7398183} = {6BD52B35-92CA-44E4-995E-2B79C7398183}
{F3245C29-7760-4956-B1B7-FC483BE417CD} = {F3245C29-7760-4956-B1B7-FC483BE417CD}
{DC2CD926-8EA3-4ADD-AA62-A95CCA8AC7DD} = {DC2CD926-8EA3-4ADD-AA62-A95CCA8AC7DD}
{E0F9D922-DAA7-475E-A95A-7BC540ED58FE} = {E0F9D922-DAA7-475E-A95A-7BC540ED58FE}
{52DF0D16-D070-47FC-B987-8D80B027D114} = {52DF0D16-D070-47FC-B987-8D80B027D114}
{C595C10E-ADA8-429A-896A-8904A46737D3} = {C595C10E-ADA8-429A-896A-8904A46737D3}
{67BFDA04-F26E-497F-A6FE-EE52550C15FE} = {67BFDA04-F26E-497F-A6FE-EE52550C15FE}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "LoginAPI", "..\..\external\3rd\library\platform\projects\Session\LoginAPI\LoginAPI.vcxproj", "{F2C6B544-BAF0-4534-9479-C79BC09BF2F0}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "MayaExporter", "..\..\engine\client\application\MayaExporter\build\win32\MayaExporter.vcxproj", "{BBB380AC-AA99-4177-8F4F-4CD5AAEA1199}"
ProjectSection(ProjectDependencies) = postProject
{C87164F5-14A9-403C-8BC4-217FD40731EA} = {C87164F5-14A9-403C-8BC4-217FD40731EA}
{950E9CF2-CD44-476C-826A-BB7869241F5B} = {950E9CF2-CD44-476C-826A-BB7869241F5B}
{2AE0CEF0-C4F2-4786-A026-8338FB09D61B} = {2AE0CEF0-C4F2-4786-A026-8338FB09D61B}
{B97963EF-49E4-477E-85FF-E7FEE7C626D7} = {B97963EF-49E4-477E-85FF-E7FEE7C626D7}
{4AF54AEE-35F9-473C-8C2E-C24D2EEDB17B} = {4AF54AEE-35F9-473C-8C2E-C24D2EEDB17B}
@@ -507,7 +368,6 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "NpcEditor", "..\..\engine\c
{ECBDFCFF-F4AE-475A-AA90-729EB96430A0} = {ECBDFCFF-F4AE-475A-AA90-729EB96430A0}
{F1B57BF8-072E-4E69-940A-C254A98DA10D} = {F1B57BF8-072E-4E69-940A-C254A98DA10D}
{C87164F5-14A9-403C-8BC4-217FD40731EA} = {C87164F5-14A9-403C-8BC4-217FD40731EA}
{950E9CF2-CD44-476C-826A-BB7869241F5B} = {950E9CF2-CD44-476C-826A-BB7869241F5B}
{2AE0CEF0-C4F2-4786-A026-8338FB09D61B} = {2AE0CEF0-C4F2-4786-A026-8338FB09D61B}
{DF4D72EF-2341-4462-AB78-B130450511DA} = {DF4D72EF-2341-4462-AB78-B130450511DA}
{B97963EF-49E4-477E-85FF-E7FEE7C626D7} = {B97963EF-49E4-477E-85FF-E7FEE7C626D7}
@@ -579,7 +439,6 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ParticleEditor", "..\..\eng
{ECBDFCFF-F4AE-475A-AA90-729EB96430A0} = {ECBDFCFF-F4AE-475A-AA90-729EB96430A0}
{F1B57BF8-072E-4E69-940A-C254A98DA10D} = {F1B57BF8-072E-4E69-940A-C254A98DA10D}
{C87164F5-14A9-403C-8BC4-217FD40731EA} = {C87164F5-14A9-403C-8BC4-217FD40731EA}
{950E9CF2-CD44-476C-826A-BB7869241F5B} = {950E9CF2-CD44-476C-826A-BB7869241F5B}
{2AE0CEF0-C4F2-4786-A026-8338FB09D61B} = {2AE0CEF0-C4F2-4786-A026-8338FB09D61B}
{DF4D72EF-2341-4462-AB78-B130450511DA} = {DF4D72EF-2341-4462-AB78-B130450511DA}
{B97963EF-49E4-477E-85FF-E7FEE7C626D7} = {B97963EF-49E4-477E-85FF-E7FEE7C626D7}
@@ -637,41 +496,6 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ParticleEditor", "..\..\eng
{C595C10E-ADA8-429A-896A-8904A46737D3} = {C595C10E-ADA8-429A-896A-8904A46737D3}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "PlanetServer", "..\..\engine\server\application\PlanetServer\build\win32\PlanetServer.vcxproj", "{4D369B2A-B4D6-4337-9AF7-E8F697F7994D}"
ProjectSection(ProjectDependencies) = postProject
{C87164F5-14A9-403C-8BC4-217FD40731EA} = {C87164F5-14A9-403C-8BC4-217FD40731EA}
{2AE0CEF0-C4F2-4786-A026-8338FB09D61B} = {2AE0CEF0-C4F2-4786-A026-8338FB09D61B}
{DF4D72EF-2341-4462-AB78-B130450511DA} = {DF4D72EF-2341-4462-AB78-B130450511DA}
{B97963EF-49E4-477E-85FF-E7FEE7C626D7} = {B97963EF-49E4-477E-85FF-E7FEE7C626D7}
{20D4D8EB-87CA-4C5F-8BA3-FFC898563C40} = {20D4D8EB-87CA-4C5F-8BA3-FFC898563C40}
{2E6982E0-DCB6-4ED9-BFAD-D29DAEEA6AD2} = {2E6982E0-DCB6-4ED9-BFAD-D29DAEEA6AD2}
{858F7DCE-325A-467C-9DDA-2FE40217286F} = {858F7DCE-325A-467C-9DDA-2FE40217286F}
{0FB11BC8-3BD1-4471-8DDA-DA3BC05937B2} = {0FB11BC8-3BD1-4471-8DDA-DA3BC05937B2}
{A8036EC1-9682-4315-A3D2-6B26C3245D50} = {A8036EC1-9682-4315-A3D2-6B26C3245D50}
{0202ADB3-5587-4138-A626-52B7DB52FBBA} = {0202ADB3-5587-4138-A626-52B7DB52FBBA}
{D409A18E-F788-4F1B-BAD1-ED58EE4D458F} = {D409A18E-F788-4F1B-BAD1-ED58EE4D458F}
{2FE4E38D-BE7D-4E3B-9613-63E9F01855F4} = {2FE4E38D-BE7D-4E3B-9613-63E9F01855F4}
{03819289-4E8B-44E9-9F3B-A3243C9797C9} = {03819289-4E8B-44E9-9F3B-A3243C9797C9}
{5789EA7C-6596-4DCC-A9FB-DD7582888F90} = {5789EA7C-6596-4DCC-A9FB-DD7582888F90}
{DE93996C-CB51-4D61-85A0-A9DFC677445F} = {DE93996C-CB51-4D61-85A0-A9DFC677445F}
{52153865-1ABF-4FBB-84C4-0FC439716F1E} = {52153865-1ABF-4FBB-84C4-0FC439716F1E}
{4F237764-394D-40CB-9314-DAEDED42E2CD} = {4F237764-394D-40CB-9314-DAEDED42E2CD}
{DECF2964-3A66-4FA6-AB27-D4507C5480EA} = {DECF2964-3A66-4FA6-AB27-D4507C5480EA}
{1A7D1159-3474-4520-882F-F1842F0AAFAE} = {1A7D1159-3474-4520-882F-F1842F0AAFAE}
{4EFF0958-FBC8-4053-971A-7022EB0035E4} = {4EFF0958-FBC8-4053-971A-7022EB0035E4}
{41269A52-38B8-4F9A-AE38-1103BB03A10B} = {41269A52-38B8-4F9A-AE38-1103BB03A10B}
{38DF394C-0909-4507-8029-53D960FEA464} = {38DF394C-0909-4507-8029-53D960FEA464}
{D6CC353F-4FD1-4AEB-A984-E7B2E9CE4E69} = {D6CC353F-4FD1-4AEB-A984-E7B2E9CE4E69}
{861A873C-D6AD-4B8A-9BED-0314A8B74B54} = {861A873C-D6AD-4B8A-9BED-0314A8B74B54}
{6BD52B35-92CA-44E4-995E-2B79C7398183} = {6BD52B35-92CA-44E4-995E-2B79C7398183}
{F3245C29-7760-4956-B1B7-FC483BE417CD} = {F3245C29-7760-4956-B1B7-FC483BE417CD}
{DC2CD926-8EA3-4ADD-AA62-A95CCA8AC7DD} = {DC2CD926-8EA3-4ADD-AA62-A95CCA8AC7DD}
{E0F9D922-DAA7-475E-A95A-7BC540ED58FE} = {E0F9D922-DAA7-475E-A95A-7BC540ED58FE}
{52DF0D16-D070-47FC-B987-8D80B027D114} = {52DF0D16-D070-47FC-B987-8D80B027D114}
{C595C10E-ADA8-429A-896A-8904A46737D3} = {C595C10E-ADA8-429A-896A-8904A46737D3}
{67BFDA04-F26E-497F-A6FE-EE52550C15FE} = {67BFDA04-F26E-497F-A6FE-EE52550C15FE}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "PlanetWatcher", "..\..\engine\shared\application\PlanetWatcher\build\win32\PlanetWatcher.vcxproj", "{5EFB446B-1E95-487F-B1BB-B9767FA86DE3}"
ProjectSection(ProjectDependencies) = postProject
{C595C10E-ADA8-429A-896A-8904A46737D3} = {C595C10E-ADA8-429A-896A-8904A46737D3}
@@ -740,34 +564,6 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "RemoteDebugTool", "..\..\en
{C595C10E-ADA8-429A-896A-8904A46737D3} = {C595C10E-ADA8-429A-896A-8904A46737D3}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ServerConsole", "..\..\engine\server\APPLICATION\SERVERCONSOLE\build\win32\ServerConsole.vcxproj", "{FA266E3D-BC73-4DC1-B666-B5F34C71085F}"
ProjectSection(ProjectDependencies) = postProject
{C87164F5-14A9-403C-8BC4-217FD40731EA} = {C87164F5-14A9-403C-8BC4-217FD40731EA}
{2AE0CEF0-C4F2-4786-A026-8338FB09D61B} = {2AE0CEF0-C4F2-4786-A026-8338FB09D61B}
{DF4D72EF-2341-4462-AB78-B130450511DA} = {DF4D72EF-2341-4462-AB78-B130450511DA}
{B97963EF-49E4-477E-85FF-E7FEE7C626D7} = {B97963EF-49E4-477E-85FF-E7FEE7C626D7}
{2E6982E0-DCB6-4ED9-BFAD-D29DAEEA6AD2} = {2E6982E0-DCB6-4ED9-BFAD-D29DAEEA6AD2}
{858F7DCE-325A-467C-9DDA-2FE40217286F} = {858F7DCE-325A-467C-9DDA-2FE40217286F}
{0FB11BC8-3BD1-4471-8DDA-DA3BC05937B2} = {0FB11BC8-3BD1-4471-8DDA-DA3BC05937B2}
{A8036EC1-9682-4315-A3D2-6B26C3245D50} = {A8036EC1-9682-4315-A3D2-6B26C3245D50}
{0202ADB3-5587-4138-A626-52B7DB52FBBA} = {0202ADB3-5587-4138-A626-52B7DB52FBBA}
{2FE4E38D-BE7D-4E3B-9613-63E9F01855F4} = {2FE4E38D-BE7D-4E3B-9613-63E9F01855F4}
{5789EA7C-6596-4DCC-A9FB-DD7582888F90} = {5789EA7C-6596-4DCC-A9FB-DD7582888F90}
{DE93996C-CB51-4D61-85A0-A9DFC677445F} = {DE93996C-CB51-4D61-85A0-A9DFC677445F}
{52153865-1ABF-4FBB-84C4-0FC439716F1E} = {52153865-1ABF-4FBB-84C4-0FC439716F1E}
{DECF2964-3A66-4FA6-AB27-D4507C5480EA} = {DECF2964-3A66-4FA6-AB27-D4507C5480EA}
{1A7D1159-3474-4520-882F-F1842F0AAFAE} = {1A7D1159-3474-4520-882F-F1842F0AAFAE}
{41269A52-38B8-4F9A-AE38-1103BB03A10B} = {41269A52-38B8-4F9A-AE38-1103BB03A10B}
{D6CC353F-4FD1-4AEB-A984-E7B2E9CE4E69} = {D6CC353F-4FD1-4AEB-A984-E7B2E9CE4E69}
{6BD52B35-92CA-44E4-995E-2B79C7398183} = {6BD52B35-92CA-44E4-995E-2B79C7398183}
{F3245C29-7760-4956-B1B7-FC483BE417CD} = {F3245C29-7760-4956-B1B7-FC483BE417CD}
{DC2CD926-8EA3-4ADD-AA62-A95CCA8AC7DD} = {DC2CD926-8EA3-4ADD-AA62-A95CCA8AC7DD}
{E0F9D922-DAA7-475E-A95A-7BC540ED58FE} = {E0F9D922-DAA7-475E-A95A-7BC540ED58FE}
{52DF0D16-D070-47FC-B987-8D80B027D114} = {52DF0D16-D070-47FC-B987-8D80B027D114}
{C595C10E-ADA8-429A-896A-8904A46737D3} = {C595C10E-ADA8-429A-896A-8904A46737D3}
{9496A020-65AD-45A6-9ACF-AE4F3358B027} = {9496A020-65AD-45A6-9ACF-AE4F3358B027}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ShaderBuilder", "..\..\engine\client\application\ShaderBuilder\build\win32\ShaderBuilder.vcxproj", "{6B75D5AD-DEA7-491B-B93D-9D2C51CBF030}"
ProjectSection(ProjectDependencies) = postProject
{C595C10E-ADA8-429A-896A-8904A46737D3} = {C595C10E-ADA8-429A-896A-8904A46737D3}
@@ -913,7 +709,6 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "SwgClient", "..\..\game\cli
{ECBDFCFF-F4AE-475A-AA90-729EB96430A0} = {ECBDFCFF-F4AE-475A-AA90-729EB96430A0}
{F1B57BF8-072E-4E69-940A-C254A98DA10D} = {F1B57BF8-072E-4E69-940A-C254A98DA10D}
{C87164F5-14A9-403C-8BC4-217FD40731EA} = {C87164F5-14A9-403C-8BC4-217FD40731EA}
{950E9CF2-CD44-476C-826A-BB7869241F5B} = {950E9CF2-CD44-476C-826A-BB7869241F5B}
{2AE0CEF0-C4F2-4786-A026-8338FB09D61B} = {2AE0CEF0-C4F2-4786-A026-8338FB09D61B}
{DF4D72EF-2341-4462-AB78-B130450511DA} = {DF4D72EF-2341-4462-AB78-B130450511DA}
{B97963EF-49E4-477E-85FF-E7FEE7C626D7} = {B97963EF-49E4-477E-85FF-E7FEE7C626D7}
@@ -1022,108 +817,11 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "SwgConversationEditor", "..
{C595C10E-ADA8-429A-896A-8904A46737D3} = {C595C10E-ADA8-429A-896A-8904A46737D3}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "SwgDatabaseServer", "..\..\game\server\application\SwgDatabaseServer\build\win32\SwgDatabaseServer.vcxproj", "{985EDE24-4618-4F50-A12E-DBE859B232B9}"
ProjectSection(ProjectDependencies) = postProject
{C87164F5-14A9-403C-8BC4-217FD40731EA} = {C87164F5-14A9-403C-8BC4-217FD40731EA}
{950E9CF2-CD44-476C-826A-BB7869241F5B} = {950E9CF2-CD44-476C-826A-BB7869241F5B}
{2AE0CEF0-C4F2-4786-A026-8338FB09D61B} = {2AE0CEF0-C4F2-4786-A026-8338FB09D61B}
{DF4D72EF-2341-4462-AB78-B130450511DA} = {DF4D72EF-2341-4462-AB78-B130450511DA}
{B97963EF-49E4-477E-85FF-E7FEE7C626D7} = {B97963EF-49E4-477E-85FF-E7FEE7C626D7}
{20D4D8EB-87CA-4C5F-8BA3-FFC898563C40} = {20D4D8EB-87CA-4C5F-8BA3-FFC898563C40}
{2E6982E0-DCB6-4ED9-BFAD-D29DAEEA6AD2} = {2E6982E0-DCB6-4ED9-BFAD-D29DAEEA6AD2}
{858F7DCE-325A-467C-9DDA-2FE40217286F} = {858F7DCE-325A-467C-9DDA-2FE40217286F}
{0FB11BC8-3BD1-4471-8DDA-DA3BC05937B2} = {0FB11BC8-3BD1-4471-8DDA-DA3BC05937B2}
{AC1277C1-CE5A-4ECE-9BE3-6B4647B657A5} = {AC1277C1-CE5A-4ECE-9BE3-6B4647B657A5}
{A8036EC1-9682-4315-A3D2-6B26C3245D50} = {A8036EC1-9682-4315-A3D2-6B26C3245D50}
{FCC0F2B5-AADE-4454-AFF2-4D91365B4883} = {FCC0F2B5-AADE-4454-AFF2-4D91365B4883}
{0202ADB3-5587-4138-A626-52B7DB52FBBA} = {0202ADB3-5587-4138-A626-52B7DB52FBBA}
{A378FAB0-5B67-44BD-A3D8-815861792D6B} = {A378FAB0-5B67-44BD-A3D8-815861792D6B}
{2FE4E38D-BE7D-4E3B-9613-63E9F01855F4} = {2FE4E38D-BE7D-4E3B-9613-63E9F01855F4}
{03819289-4E8B-44E9-9F3B-A3243C9797C9} = {03819289-4E8B-44E9-9F3B-A3243C9797C9}
{9C682884-289D-4E31-B5A8-5B4FE6B10452} = {9C682884-289D-4E31-B5A8-5B4FE6B10452}
{5789EA7C-6596-4DCC-A9FB-DD7582888F90} = {5789EA7C-6596-4DCC-A9FB-DD7582888F90}
{DE93996C-CB51-4D61-85A0-A9DFC677445F} = {DE93996C-CB51-4D61-85A0-A9DFC677445F}
{52153865-1ABF-4FBB-84C4-0FC439716F1E} = {52153865-1ABF-4FBB-84C4-0FC439716F1E}
{4F237764-394D-40CB-9314-DAEDED42E2CD} = {4F237764-394D-40CB-9314-DAEDED42E2CD}
{DECF2964-3A66-4FA6-AB27-D4507C5480EA} = {DECF2964-3A66-4FA6-AB27-D4507C5480EA}
{2338795C-CE02-4902-BEF4-53645A0C3267} = {2338795C-CE02-4902-BEF4-53645A0C3267}
{1A7D1159-3474-4520-882F-F1842F0AAFAE} = {1A7D1159-3474-4520-882F-F1842F0AAFAE}
{4EFF0958-FBC8-4053-971A-7022EB0035E4} = {4EFF0958-FBC8-4053-971A-7022EB0035E4}
{41269A52-38B8-4F9A-AE38-1103BB03A10B} = {41269A52-38B8-4F9A-AE38-1103BB03A10B}
{38DF394C-0909-4507-8029-53D960FEA464} = {38DF394C-0909-4507-8029-53D960FEA464}
{D6CC353F-4FD1-4AEB-A984-E7B2E9CE4E69} = {D6CC353F-4FD1-4AEB-A984-E7B2E9CE4E69}
{B105EB3E-6860-4077-9833-C6EE5CFEAFBF} = {B105EB3E-6860-4077-9833-C6EE5CFEAFBF}
{6612CC35-6931-4AC6-A315-E955CA60B643} = {6612CC35-6931-4AC6-A315-E955CA60B643}
{6BD52B35-92CA-44E4-995E-2B79C7398183} = {6BD52B35-92CA-44E4-995E-2B79C7398183}
{F3245C29-7760-4956-B1B7-FC483BE417CD} = {F3245C29-7760-4956-B1B7-FC483BE417CD}
{DC2CD926-8EA3-4ADD-AA62-A95CCA8AC7DD} = {DC2CD926-8EA3-4ADD-AA62-A95CCA8AC7DD}
{E0F9D922-DAA7-475E-A95A-7BC540ED58FE} = {E0F9D922-DAA7-475E-A95A-7BC540ED58FE}
{03A9A516-227E-49BB-A1C5-64B34CBDDC66} = {03A9A516-227E-49BB-A1C5-64B34CBDDC66}
{52DF0D16-D070-47FC-B987-8D80B027D114} = {52DF0D16-D070-47FC-B987-8D80B027D114}
{C595C10E-ADA8-429A-896A-8904A46737D3} = {C595C10E-ADA8-429A-896A-8904A46737D3}
{67BFDA04-F26E-497F-A6FE-EE52550C15FE} = {67BFDA04-F26E-497F-A6FE-EE52550C15FE}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "SwgGameServer", "..\..\game\server\application\SwgGameServer\build\win32\SwgGameServer.vcxproj", "{6D8D49D8-7832-441F-B61B-E5F2C4B42D49}"
ProjectSection(ProjectDependencies) = postProject
{F8271BF7-CFBF-4DE3-84BB-428058E0B069} = {F8271BF7-CFBF-4DE3-84BB-428058E0B069}
{C87164F5-14A9-403C-8BC4-217FD40731EA} = {C87164F5-14A9-403C-8BC4-217FD40731EA}
{950E9CF2-CD44-476C-826A-BB7869241F5B} = {950E9CF2-CD44-476C-826A-BB7869241F5B}
{2AE0CEF0-C4F2-4786-A026-8338FB09D61B} = {2AE0CEF0-C4F2-4786-A026-8338FB09D61B}
{DF4D72EF-2341-4462-AB78-B130450511DA} = {DF4D72EF-2341-4462-AB78-B130450511DA}
{B97963EF-49E4-477E-85FF-E7FEE7C626D7} = {B97963EF-49E4-477E-85FF-E7FEE7C626D7}
{20D4D8EB-87CA-4C5F-8BA3-FFC898563C40} = {20D4D8EB-87CA-4C5F-8BA3-FFC898563C40}
{070BABEB-131A-4DC7-8621-69407C531F8E} = {070BABEB-131A-4DC7-8621-69407C531F8E}
{1D87A2E7-F0CF-42E9-BC38-846C53622C40} = {1D87A2E7-F0CF-42E9-BC38-846C53622C40}
{2E6982E0-DCB6-4ED9-BFAD-D29DAEEA6AD2} = {2E6982E0-DCB6-4ED9-BFAD-D29DAEEA6AD2}
{7FBBF6D9-7090-4D1A-8926-7FCDE802BFDB} = {7FBBF6D9-7090-4D1A-8926-7FCDE802BFDB}
{AACBD5D6-D7DD-4FF9-8523-316CCF20115A} = {AACBD5D6-D7DD-4FF9-8523-316CCF20115A}
{858F7DCE-325A-467C-9DDA-2FE40217286F} = {858F7DCE-325A-467C-9DDA-2FE40217286F}
{0FB11BC8-3BD1-4471-8DDA-DA3BC05937B2} = {0FB11BC8-3BD1-4471-8DDA-DA3BC05937B2}
{AC1277C1-CE5A-4ECE-9BE3-6B4647B657A5} = {AC1277C1-CE5A-4ECE-9BE3-6B4647B657A5}
{A8036EC1-9682-4315-A3D2-6B26C3245D50} = {A8036EC1-9682-4315-A3D2-6B26C3245D50}
{D65732C0-2D5C-44A7-96F0-16BEF9E1AF3A} = {D65732C0-2D5C-44A7-96F0-16BEF9E1AF3A}
{FCC0F2B5-AADE-4454-AFF2-4D91365B4883} = {FCC0F2B5-AADE-4454-AFF2-4D91365B4883}
{0202ADB3-5587-4138-A626-52B7DB52FBBA} = {0202ADB3-5587-4138-A626-52B7DB52FBBA}
{A378FAB0-5B67-44BD-A3D8-815861792D6B} = {A378FAB0-5B67-44BD-A3D8-815861792D6B}
{D409A18E-F788-4F1B-BAD1-ED58EE4D458F} = {D409A18E-F788-4F1B-BAD1-ED58EE4D458F}
{2FE4E38D-BE7D-4E3B-9613-63E9F01855F4} = {2FE4E38D-BE7D-4E3B-9613-63E9F01855F4}
{51E2988C-CE2D-42D7-A27C-06A322B4AAC2} = {51E2988C-CE2D-42D7-A27C-06A322B4AAC2}
{03819289-4E8B-44E9-9F3B-A3243C9797C9} = {03819289-4E8B-44E9-9F3B-A3243C9797C9}
{83EA2B87-762E-4EC6-BB06-2DCBAE759D6E} = {83EA2B87-762E-4EC6-BB06-2DCBAE759D6E}
{5789EA7C-6596-4DCC-A9FB-DD7582888F90} = {5789EA7C-6596-4DCC-A9FB-DD7582888F90}
{DE93996C-CB51-4D61-85A0-A9DFC677445F} = {DE93996C-CB51-4D61-85A0-A9DFC677445F}
{52153865-1ABF-4FBB-84C4-0FC439716F1E} = {52153865-1ABF-4FBB-84C4-0FC439716F1E}
{4F237764-394D-40CB-9314-DAEDED42E2CD} = {4F237764-394D-40CB-9314-DAEDED42E2CD}
{DECF2964-3A66-4FA6-AB27-D4507C5480EA} = {DECF2964-3A66-4FA6-AB27-D4507C5480EA}
{2338795C-CE02-4902-BEF4-53645A0C3267} = {2338795C-CE02-4902-BEF4-53645A0C3267}
{7D707A5A-CB70-4FD9-83D3-E1E921AE3381} = {7D707A5A-CB70-4FD9-83D3-E1E921AE3381}
{1A7D1159-3474-4520-882F-F1842F0AAFAE} = {1A7D1159-3474-4520-882F-F1842F0AAFAE}
{4EFF0958-FBC8-4053-971A-7022EB0035E4} = {4EFF0958-FBC8-4053-971A-7022EB0035E4}
{882D8E54-0077-440B-94AC-762BDE522E3B} = {882D8E54-0077-440B-94AC-762BDE522E3B}
{41269A52-38B8-4F9A-AE38-1103BB03A10B} = {41269A52-38B8-4F9A-AE38-1103BB03A10B}
{38DF394C-0909-4507-8029-53D960FEA464} = {38DF394C-0909-4507-8029-53D960FEA464}
{D6CC353F-4FD1-4AEB-A984-E7B2E9CE4E69} = {D6CC353F-4FD1-4AEB-A984-E7B2E9CE4E69}
{861A873C-D6AD-4B8A-9BED-0314A8B74B54} = {861A873C-D6AD-4B8A-9BED-0314A8B74B54}
{6612CC35-6931-4AC6-A315-E955CA60B643} = {6612CC35-6931-4AC6-A315-E955CA60B643}
{6BD52B35-92CA-44E4-995E-2B79C7398183} = {6BD52B35-92CA-44E4-995E-2B79C7398183}
{F3245C29-7760-4956-B1B7-FC483BE417CD} = {F3245C29-7760-4956-B1B7-FC483BE417CD}
{DC2CD926-8EA3-4ADD-AA62-A95CCA8AC7DD} = {DC2CD926-8EA3-4ADD-AA62-A95CCA8AC7DD}
{E0F9D922-DAA7-475E-A95A-7BC540ED58FE} = {E0F9D922-DAA7-475E-A95A-7BC540ED58FE}
{03A9A516-227E-49BB-A1C5-64B34CBDDC66} = {03A9A516-227E-49BB-A1C5-64B34CBDDC66}
{52DF0D16-D070-47FC-B987-8D80B027D114} = {52DF0D16-D070-47FC-B987-8D80B027D114}
{C595C10E-ADA8-429A-896A-8904A46737D3} = {C595C10E-ADA8-429A-896A-8904A46737D3}
{AFA9AD0A-6E1A-4004-A1FF-8293EB957EF1} = {AFA9AD0A-6E1A-4004-A1FF-8293EB957EF1}
{67BFDA04-F26E-497F-A6FE-EE52550C15FE} = {67BFDA04-F26E-497F-A6FE-EE52550C15FE}
{9496A020-65AD-45A6-9ACF-AE4F3358B027} = {9496A020-65AD-45A6-9ACF-AE4F3358B027}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "SwgGodClient", "..\..\game\client\application\SwgGodClient\build\win32\SwgGodClient.vcxproj", "{F5CF1FEC-1123-4246-B24B-46DEBB3C5146}"
ProjectSection(ProjectDependencies) = postProject
{ECBDFCFF-F4AE-475A-AA90-729EB96430A0} = {ECBDFCFF-F4AE-475A-AA90-729EB96430A0}
{F1B57BF8-072E-4E69-940A-C254A98DA10D} = {F1B57BF8-072E-4E69-940A-C254A98DA10D}
{C87164F5-14A9-403C-8BC4-217FD40731EA} = {C87164F5-14A9-403C-8BC4-217FD40731EA}
{950E9CF2-CD44-476C-826A-BB7869241F5B} = {950E9CF2-CD44-476C-826A-BB7869241F5B}
{2AE0CEF0-C4F2-4786-A026-8338FB09D61B} = {2AE0CEF0-C4F2-4786-A026-8338FB09D61B}
{DF4D72EF-2341-4462-AB78-B130450511DA} = {DF4D72EF-2341-4462-AB78-B130450511DA}
{B97963EF-49E4-477E-85FF-E7FEE7C626D7} = {B97963EF-49E4-477E-85FF-E7FEE7C626D7}
@@ -1191,7 +889,6 @@ EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "SwgLoadClient", "..\..\game\shared\application\SwgLoadClient\build\win32\SwgLoadClient.vcxproj", "{F47EB21E-1EB9-4E05-B07C-030A4AA83CA6}"
ProjectSection(ProjectDependencies) = postProject
{C87164F5-14A9-403C-8BC4-217FD40731EA} = {C87164F5-14A9-403C-8BC4-217FD40731EA}
{950E9CF2-CD44-476C-826A-BB7869241F5B} = {950E9CF2-CD44-476C-826A-BB7869241F5B}
{2AE0CEF0-C4F2-4786-A026-8338FB09D61B} = {2AE0CEF0-C4F2-4786-A026-8338FB09D61B}
{DF4D72EF-2341-4462-AB78-B130450511DA} = {DF4D72EF-2341-4462-AB78-B130450511DA}
{B97963EF-49E4-477E-85FF-E7FEE7C626D7} = {B97963EF-49E4-477E-85FF-E7FEE7C626D7}
@@ -1212,7 +909,6 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "SwgLoadClient", "..\..\game
{2338795C-CE02-4902-BEF4-53645A0C3267} = {2338795C-CE02-4902-BEF4-53645A0C3267}
{1A7D1159-3474-4520-882F-F1842F0AAFAE} = {1A7D1159-3474-4520-882F-F1842F0AAFAE}
{41269A52-38B8-4F9A-AE38-1103BB03A10B} = {41269A52-38B8-4F9A-AE38-1103BB03A10B}
{38DF394C-0909-4507-8029-53D960FEA464} = {38DF394C-0909-4507-8029-53D960FEA464}
{D6CC353F-4FD1-4AEB-A984-E7B2E9CE4E69} = {D6CC353F-4FD1-4AEB-A984-E7B2E9CE4E69}
{6612CC35-6931-4AC6-A315-E955CA60B643} = {6612CC35-6931-4AC6-A315-E955CA60B643}
{6BD52B35-92CA-44E4-995E-2B79C7398183} = {6BD52B35-92CA-44E4-995E-2B79C7398183}
@@ -1223,24 +919,6 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "SwgLoadClient", "..\..\game
{03A9A516-227E-49BB-A1C5-64B34CBDDC66} = {03A9A516-227E-49BB-A1C5-64B34CBDDC66}
{52DF0D16-D070-47FC-B987-8D80B027D114} = {52DF0D16-D070-47FC-B987-8D80B027D114}
{C595C10E-ADA8-429A-896A-8904A46737D3} = {C595C10E-ADA8-429A-896A-8904A46737D3}
{67BFDA04-F26E-497F-A6FE-EE52550C15FE} = {67BFDA04-F26E-497F-A6FE-EE52550C15FE}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "SwgNameGenerator", "..\..\game\server\application\SwgNameGenerator\build\win32\SwgNameGenerator.vcxproj", "{FBBB5B75-30C9-479F-8A6B-A620A35C0D46}"
ProjectSection(ProjectDependencies) = postProject
{2E6982E0-DCB6-4ED9-BFAD-D29DAEEA6AD2} = {2E6982E0-DCB6-4ED9-BFAD-D29DAEEA6AD2}
{858F7DCE-325A-467C-9DDA-2FE40217286F} = {858F7DCE-325A-467C-9DDA-2FE40217286F}
{2FE4E38D-BE7D-4E3B-9613-63E9F01855F4} = {2FE4E38D-BE7D-4E3B-9613-63E9F01855F4}
{03819289-4E8B-44E9-9F3B-A3243C9797C9} = {03819289-4E8B-44E9-9F3B-A3243C9797C9}
{5789EA7C-6596-4DCC-A9FB-DD7582888F90} = {5789EA7C-6596-4DCC-A9FB-DD7582888F90}
{DE93996C-CB51-4D61-85A0-A9DFC677445F} = {DE93996C-CB51-4D61-85A0-A9DFC677445F}
{D6CC353F-4FD1-4AEB-A984-E7B2E9CE4E69} = {D6CC353F-4FD1-4AEB-A984-E7B2E9CE4E69}
{6BD52B35-92CA-44E4-995E-2B79C7398183} = {6BD52B35-92CA-44E4-995E-2B79C7398183}
{F3245C29-7760-4956-B1B7-FC483BE417CD} = {F3245C29-7760-4956-B1B7-FC483BE417CD}
{DC2CD926-8EA3-4ADD-AA62-A95CCA8AC7DD} = {DC2CD926-8EA3-4ADD-AA62-A95CCA8AC7DD}
{E0F9D922-DAA7-475E-A95A-7BC540ED58FE} = {E0F9D922-DAA7-475E-A95A-7BC540ED58FE}
{52DF0D16-D070-47FC-B987-8D80B027D114} = {52DF0D16-D070-47FC-B987-8D80B027D114}
{C595C10E-ADA8-429A-896A-8904A46737D3} = {C595C10E-ADA8-429A-896A-8904A46737D3}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "SwooshEditor", "..\..\engine\client\application\SwooshEditor\build\win32\SwooshEditor.vcxproj", "{0C54AD5C-87B2-43C6-A699-03A547FF6E03}"
@@ -1252,7 +930,6 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "SwooshEditor", "..\..\engin
{ECBDFCFF-F4AE-475A-AA90-729EB96430A0} = {ECBDFCFF-F4AE-475A-AA90-729EB96430A0}
{F1B57BF8-072E-4E69-940A-C254A98DA10D} = {F1B57BF8-072E-4E69-940A-C254A98DA10D}
{C87164F5-14A9-403C-8BC4-217FD40731EA} = {C87164F5-14A9-403C-8BC4-217FD40731EA}
{950E9CF2-CD44-476C-826A-BB7869241F5B} = {950E9CF2-CD44-476C-826A-BB7869241F5B}
{2AE0CEF0-C4F2-4786-A026-8338FB09D61B} = {2AE0CEF0-C4F2-4786-A026-8338FB09D61B}
{DF4D72EF-2341-4462-AB78-B130450511DA} = {DF4D72EF-2341-4462-AB78-B130450511DA}
{B97963EF-49E4-477E-85FF-E7FEE7C626D7} = {B97963EF-49E4-477E-85FF-E7FEE7C626D7}
@@ -1312,37 +989,6 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "SwooshEditor", "..\..\engin
{AFA9AD0A-6E1A-4004-A1FF-8293EB957EF1} = {AFA9AD0A-6E1A-4004-A1FF-8293EB957EF1}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "TaskManager", "..\..\engine\server\APPLICATION\TASKMANAGER\build\win32\TaskManager.vcxproj", "{ACAB6CEA-5A4A-4CE4-97D6-333FBA3D8DC0}"
ProjectSection(ProjectDependencies) = postProject
{C87164F5-14A9-403C-8BC4-217FD40731EA} = {C87164F5-14A9-403C-8BC4-217FD40731EA}
{2AE0CEF0-C4F2-4786-A026-8338FB09D61B} = {2AE0CEF0-C4F2-4786-A026-8338FB09D61B}
{DF4D72EF-2341-4462-AB78-B130450511DA} = {DF4D72EF-2341-4462-AB78-B130450511DA}
{B97963EF-49E4-477E-85FF-E7FEE7C626D7} = {B97963EF-49E4-477E-85FF-E7FEE7C626D7}
{2E6982E0-DCB6-4ED9-BFAD-D29DAEEA6AD2} = {2E6982E0-DCB6-4ED9-BFAD-D29DAEEA6AD2}
{858F7DCE-325A-467C-9DDA-2FE40217286F} = {858F7DCE-325A-467C-9DDA-2FE40217286F}
{0FB11BC8-3BD1-4471-8DDA-DA3BC05937B2} = {0FB11BC8-3BD1-4471-8DDA-DA3BC05937B2}
{A8036EC1-9682-4315-A3D2-6B26C3245D50} = {A8036EC1-9682-4315-A3D2-6B26C3245D50}
{0202ADB3-5587-4138-A626-52B7DB52FBBA} = {0202ADB3-5587-4138-A626-52B7DB52FBBA}
{D409A18E-F788-4F1B-BAD1-ED58EE4D458F} = {D409A18E-F788-4F1B-BAD1-ED58EE4D458F}
{2FE4E38D-BE7D-4E3B-9613-63E9F01855F4} = {2FE4E38D-BE7D-4E3B-9613-63E9F01855F4}
{03819289-4E8B-44E9-9F3B-A3243C9797C9} = {03819289-4E8B-44E9-9F3B-A3243C9797C9}
{5789EA7C-6596-4DCC-A9FB-DD7582888F90} = {5789EA7C-6596-4DCC-A9FB-DD7582888F90}
{DE93996C-CB51-4D61-85A0-A9DFC677445F} = {DE93996C-CB51-4D61-85A0-A9DFC677445F}
{52153865-1ABF-4FBB-84C4-0FC439716F1E} = {52153865-1ABF-4FBB-84C4-0FC439716F1E}
{DECF2964-3A66-4FA6-AB27-D4507C5480EA} = {DECF2964-3A66-4FA6-AB27-D4507C5480EA}
{1A7D1159-3474-4520-882F-F1842F0AAFAE} = {1A7D1159-3474-4520-882F-F1842F0AAFAE}
{41269A52-38B8-4F9A-AE38-1103BB03A10B} = {41269A52-38B8-4F9A-AE38-1103BB03A10B}
{38DF394C-0909-4507-8029-53D960FEA464} = {38DF394C-0909-4507-8029-53D960FEA464}
{D6CC353F-4FD1-4AEB-A984-E7B2E9CE4E69} = {D6CC353F-4FD1-4AEB-A984-E7B2E9CE4E69}
{6BD52B35-92CA-44E4-995E-2B79C7398183} = {6BD52B35-92CA-44E4-995E-2B79C7398183}
{F3245C29-7760-4956-B1B7-FC483BE417CD} = {F3245C29-7760-4956-B1B7-FC483BE417CD}
{DC2CD926-8EA3-4ADD-AA62-A95CCA8AC7DD} = {DC2CD926-8EA3-4ADD-AA62-A95CCA8AC7DD}
{E0F9D922-DAA7-475E-A95A-7BC540ED58FE} = {E0F9D922-DAA7-475E-A95A-7BC540ED58FE}
{52DF0D16-D070-47FC-B987-8D80B027D114} = {52DF0D16-D070-47FC-B987-8D80B027D114}
{C595C10E-ADA8-429A-896A-8904A46737D3} = {C595C10E-ADA8-429A-896A-8904A46737D3}
{67BFDA04-F26E-497F-A6FE-EE52550C15FE} = {67BFDA04-F26E-497F-A6FE-EE52550C15FE}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "TemplateCompiler", "..\..\engine\shared\application\TemplateCompiler\build\win32\TemplateCompiler.vcxproj", "{355DDF1F-1DCA-4667-A1F6-11B66FBC4228}"
ProjectSection(ProjectDependencies) = postProject
{C87164F5-14A9-403C-8BC4-217FD40731EA} = {C87164F5-14A9-403C-8BC4-217FD40731EA}
@@ -1408,7 +1054,6 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "TerrainEditor", "..\..\engi
{9496A020-65AD-45A6-9ACF-AE4F3358B027} = {9496A020-65AD-45A6-9ACF-AE4F3358B027}
{ECBDFCFF-F4AE-475A-AA90-729EB96430A0} = {ECBDFCFF-F4AE-475A-AA90-729EB96430A0}
{C87164F5-14A9-403C-8BC4-217FD40731EA} = {C87164F5-14A9-403C-8BC4-217FD40731EA}
{950E9CF2-CD44-476C-826A-BB7869241F5B} = {950E9CF2-CD44-476C-826A-BB7869241F5B}
{2AE0CEF0-C4F2-4786-A026-8338FB09D61B} = {2AE0CEF0-C4F2-4786-A026-8338FB09D61B}
{DF4D72EF-2341-4462-AB78-B130450511DA} = {DF4D72EF-2341-4462-AB78-B130450511DA}
{B97963EF-49E4-477E-85FF-E7FEE7C626D7} = {B97963EF-49E4-477E-85FF-E7FEE7C626D7}
@@ -1466,7 +1111,6 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "TextureBuilder", "..\..\eng
{C595C10E-ADA8-429A-896A-8904A46737D3} = {C595C10E-ADA8-429A-896A-8904A46737D3}
{9496A020-65AD-45A6-9ACF-AE4F3358B027} = {9496A020-65AD-45A6-9ACF-AE4F3358B027}
{C87164F5-14A9-403C-8BC4-217FD40731EA} = {C87164F5-14A9-403C-8BC4-217FD40731EA}
{950E9CF2-CD44-476C-826A-BB7869241F5B} = {950E9CF2-CD44-476C-826A-BB7869241F5B}
{2AE0CEF0-C4F2-4786-A026-8338FB09D61B} = {2AE0CEF0-C4F2-4786-A026-8338FB09D61B}
{B97963EF-49E4-477E-85FF-E7FEE7C626D7} = {B97963EF-49E4-477E-85FF-E7FEE7C626D7}
{070BABEB-131A-4DC7-8621-69407C531F8E} = {070BABEB-131A-4DC7-8621-69407C531F8E}
@@ -1566,7 +1210,6 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Viewer", "..\..\engine\clie
{ECBDFCFF-F4AE-475A-AA90-729EB96430A0} = {ECBDFCFF-F4AE-475A-AA90-729EB96430A0}
{F1B57BF8-072E-4E69-940A-C254A98DA10D} = {F1B57BF8-072E-4E69-940A-C254A98DA10D}
{C87164F5-14A9-403C-8BC4-217FD40731EA} = {C87164F5-14A9-403C-8BC4-217FD40731EA}
{950E9CF2-CD44-476C-826A-BB7869241F5B} = {950E9CF2-CD44-476C-826A-BB7869241F5B}
{2AE0CEF0-C4F2-4786-A026-8338FB09D61B} = {2AE0CEF0-C4F2-4786-A026-8338FB09D61B}
{DF4D72EF-2341-4462-AB78-B130450511DA} = {DF4D72EF-2341-4462-AB78-B130450511DA}
{B97963EF-49E4-477E-85FF-E7FEE7C626D7} = {B97963EF-49E4-477E-85FF-E7FEE7C626D7}
@@ -1628,7 +1271,6 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Viewer", "..\..\engine\clie
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "WeaponExporterTool", "..\..\engine\shared\application\WeaponExporterTool\build\win32\WeaponExporterTool.vcxproj", "{1DA25C31-189F-4661-9B65-927B8D05C63B}"
ProjectSection(ProjectDependencies) = postProject
{F8271BF7-CFBF-4DE3-84BB-428058E0B069} = {F8271BF7-CFBF-4DE3-84BB-428058E0B069}
{C87164F5-14A9-403C-8BC4-217FD40731EA} = {C87164F5-14A9-403C-8BC4-217FD40731EA}
{2AE0CEF0-C4F2-4786-A026-8338FB09D61B} = {2AE0CEF0-C4F2-4786-A026-8338FB09D61B}
{2E6982E0-DCB6-4ED9-BFAD-D29DAEEA6AD2} = {2E6982E0-DCB6-4ED9-BFAD-D29DAEEA6AD2}
@@ -1672,13 +1314,6 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "WorldSnapshotViewer", "..\.
{9496A020-65AD-45A6-9ACF-AE4F3358B027} = {9496A020-65AD-45A6-9ACF-AE4F3358B027}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "_all", "_all.vcxproj", "{B333AC21-A6B4-4F5E-92A9-98335FB8C4AE}"
ProjectSection(ProjectDependencies) = postProject
{CE9F4DC5-8DAC-4704-925C-0E7D0581375C} = {CE9F4DC5-8DAC-4704-925C-0E7D0581375C}
{A4AC1380-D2AB-4B0D-824A-4918680F5CA4} = {A4AC1380-D2AB-4B0D-824A-4918680F5CA4}
{52961080-869C-4053-84B4-44D4DEC48B8B} = {52961080-869C-4053-84B4-44D4DEC48B8B}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "_all_client", "_all_client.vcxproj", "{A4AC1380-D2AB-4B0D-824A-4918680F5CA4}"
ProjectSection(ProjectDependencies) = postProject
{F5CF1FEC-1123-4246-B24B-46DEBB3C5146} = {F5CF1FEC-1123-4246-B24B-46DEBB3C5146}
@@ -1693,7 +1328,6 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "_all_client", "_all_client.
{5EFB446B-1E95-487F-B1BB-B9767FA86DE3} = {5EFB446B-1E95-487F-B1BB-B9767FA86DE3}
{0C54AD5C-87B2-43C6-A699-03A547FF6E03} = {0C54AD5C-87B2-43C6-A699-03A547FF6E03}
{944B3154-4DC7-4450-BE1E-BAE9D648D1DF} = {944B3154-4DC7-4450-BE1E-BAE9D648D1DF}
{FA266E3D-BC73-4DC1-B666-B5F34C71085F} = {FA266E3D-BC73-4DC1-B666-B5F34C71085F}
{2379493D-680B-41DF-9BEF-FFBC09827BAF} = {2379493D-680B-41DF-9BEF-FFBC09827BAF}
{99E4A02B-6849-4C82-A9D3-213FD45BFE84} = {99E4A02B-6849-4C82-A9D3-213FD45BFE84}
{4F6E5721-AE45-47D2-831E-269DF5AE4C69} = {4F6E5721-AE45-47D2-831E-269DF5AE4C69}
@@ -1718,69 +1352,6 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "_all_client_libraries", "_a
{D10D1A1A-6129-4EF1-B3D7-5C12EE53DFCA} = {D10D1A1A-6129-4EF1-B3D7-5C12EE53DFCA}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "_all_server", "_all_server.vcxproj", "{52961080-869C-4053-84B4-44D4DEC48B8B}"
ProjectSection(ProjectDependencies) = postProject
{ACAB6CEA-5A4A-4CE4-97D6-333FBA3D8DC0} = {ACAB6CEA-5A4A-4CE4-97D6-333FBA3D8DC0}
{2E6982E0-DCB6-4ED9-BFAD-D29DAEEA6AD2} = {2E6982E0-DCB6-4ED9-BFAD-D29DAEEA6AD2}
{6D8D49D8-7832-441F-B61B-E5F2C4B42D49} = {6D8D49D8-7832-441F-B61B-E5F2C4B42D49}
{B678A8AD-B63E-462F-8839-1D11284D08B1} = {B678A8AD-B63E-462F-8839-1D11284D08B1}
{30115B9B-5669-4AA0-80BE-1DF73F5F2450} = {30115B9B-5669-4AA0-80BE-1DF73F5F2450}
{D5CA7486-D01E-4DCB-883B-8E60F7F64D26} = {D5CA7486-D01E-4DCB-883B-8E60F7F64D26}
{FA266E3D-BC73-4DC1-B666-B5F34C71085F} = {FA266E3D-BC73-4DC1-B666-B5F34C71085F}
{4D369B2A-B4D6-4337-9AF7-E8F697F7994D} = {4D369B2A-B4D6-4337-9AF7-E8F697F7994D}
{985EDE24-4618-4F50-A12E-DBE859B232B9} = {985EDE24-4618-4F50-A12E-DBE859B232B9}
{2F380D05-A841-4A06-A4F8-11049F0061CD} = {2F380D05-A841-4A06-A4F8-11049F0061CD}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "_all_server_libraries", "_all_server_libraries.vcxproj", "{D1FB68C1-A139-4458-9984-1514AC15AC81}"
ProjectSection(ProjectDependencies) = postProject
{F8271BF7-CFBF-4DE3-84BB-428058E0B069} = {F8271BF7-CFBF-4DE3-84BB-428058E0B069}
{7FBBF6D9-7090-4D1A-8926-7FCDE802BFDB} = {7FBBF6D9-7090-4D1A-8926-7FCDE802BFDB}
{D65732C0-2D5C-44A7-96F0-16BEF9E1AF3A} = {D65732C0-2D5C-44A7-96F0-16BEF9E1AF3A}
{9C682884-289D-4E31-B5A8-5B4FE6B10452} = {9C682884-289D-4E31-B5A8-5B4FE6B10452}
{4F237764-394D-40CB-9314-DAEDED42E2CD} = {4F237764-394D-40CB-9314-DAEDED42E2CD}
{4EFF0958-FBC8-4053-971A-7022EB0035E4} = {4EFF0958-FBC8-4053-971A-7022EB0035E4}
{38DF394C-0909-4507-8029-53D960FEA464} = {38DF394C-0909-4507-8029-53D960FEA464}
{67BFDA04-F26E-497F-A6FE-EE52550C15FE} = {67BFDA04-F26E-497F-A6FE-EE52550C15FE}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "_all_shared_libraries", "_all_shared_libraries.vcxproj", "{BEAAA971-E712-4662-A9EE-35AFA3D3F231}"
ProjectSection(ProjectDependencies) = postProject
{C87164F5-14A9-403C-8BC4-217FD40731EA} = {C87164F5-14A9-403C-8BC4-217FD40731EA}
{2AE0CEF0-C4F2-4786-A026-8338FB09D61B} = {2AE0CEF0-C4F2-4786-A026-8338FB09D61B}
{DF4D72EF-2341-4462-AB78-B130450511DA} = {DF4D72EF-2341-4462-AB78-B130450511DA}
{20D4D8EB-87CA-4C5F-8BA3-FFC898563C40} = {20D4D8EB-87CA-4C5F-8BA3-FFC898563C40}
{070BABEB-131A-4DC7-8621-69407C531F8E} = {070BABEB-131A-4DC7-8621-69407C531F8E}
{2E6982E0-DCB6-4ED9-BFAD-D29DAEEA6AD2} = {2E6982E0-DCB6-4ED9-BFAD-D29DAEEA6AD2}
{AE9205DD-83FC-4F31-A5B3-70623B3107A1} = {AE9205DD-83FC-4F31-A5B3-70623B3107A1}
{AACBD5D6-D7DD-4FF9-8523-316CCF20115A} = {AACBD5D6-D7DD-4FF9-8523-316CCF20115A}
{858F7DCE-325A-467C-9DDA-2FE40217286F} = {858F7DCE-325A-467C-9DDA-2FE40217286F}
{AC1277C1-CE5A-4ECE-9BE3-6B4647B657A5} = {AC1277C1-CE5A-4ECE-9BE3-6B4647B657A5}
{0202ADB3-5587-4138-A626-52B7DB52FBBA} = {0202ADB3-5587-4138-A626-52B7DB52FBBA}
{2FE4E38D-BE7D-4E3B-9613-63E9F01855F4} = {2FE4E38D-BE7D-4E3B-9613-63E9F01855F4}
{03819289-4E8B-44E9-9F3B-A3243C9797C9} = {03819289-4E8B-44E9-9F3B-A3243C9797C9}
{83EA2B87-762E-4EC6-BB06-2DCBAE759D6E} = {83EA2B87-762E-4EC6-BB06-2DCBAE759D6E}
{5789EA7C-6596-4DCC-A9FB-DD7582888F90} = {5789EA7C-6596-4DCC-A9FB-DD7582888F90}
{DECF2964-3A66-4FA6-AB27-D4507C5480EA} = {DECF2964-3A66-4FA6-AB27-D4507C5480EA}
{2338795C-CE02-4902-BEF4-53645A0C3267} = {2338795C-CE02-4902-BEF4-53645A0C3267}
{7D707A5A-CB70-4FD9-83D3-E1E921AE3381} = {7D707A5A-CB70-4FD9-83D3-E1E921AE3381}
{882D8E54-0077-440B-94AC-762BDE522E3B} = {882D8E54-0077-440B-94AC-762BDE522E3B}
{101CF34F-B5FD-4A14-A3E9-FD28078760BE} = {101CF34F-B5FD-4A14-A3E9-FD28078760BE}
{8E0FCF44-63B5-4137-9BAA-A740EB10ED94} = {8E0FCF44-63B5-4137-9BAA-A740EB10ED94}
{D6CC353F-4FD1-4AEB-A984-E7B2E9CE4E69} = {D6CC353F-4FD1-4AEB-A984-E7B2E9CE4E69}
{B105EB3E-6860-4077-9833-C6EE5CFEAFBF} = {B105EB3E-6860-4077-9833-C6EE5CFEAFBF}
{6612CC35-6931-4AC6-A315-E955CA60B643} = {6612CC35-6931-4AC6-A315-E955CA60B643}
{6BD52B35-92CA-44E4-995E-2B79C7398183} = {6BD52B35-92CA-44E4-995E-2B79C7398183}
{F547B62A-8F5C-48FC-9B3A-103736A41D03} = {F547B62A-8F5C-48FC-9B3A-103736A41D03}
{F3245C29-7760-4956-B1B7-FC483BE417CD} = {F3245C29-7760-4956-B1B7-FC483BE417CD}
{DC2CD926-8EA3-4ADD-AA62-A95CCA8AC7DD} = {DC2CD926-8EA3-4ADD-AA62-A95CCA8AC7DD}
{E0F9D922-DAA7-475E-A95A-7BC540ED58FE} = {E0F9D922-DAA7-475E-A95A-7BC540ED58FE}
{03A9A516-227E-49BB-A1C5-64B34CBDDC66} = {03A9A516-227E-49BB-A1C5-64B34CBDDC66}
{52DF0D16-D070-47FC-B987-8D80B027D114} = {52DF0D16-D070-47FC-B987-8D80B027D114}
{C595C10E-ADA8-429A-896A-8904A46737D3} = {C595C10E-ADA8-429A-896A-8904A46737D3}
{AFA9AD0A-6E1A-4004-A1FF-8293EB957EF1} = {AFA9AD0A-6E1A-4004-A1FF-8293EB957EF1}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "_all_tools", "_all_tools.vcxproj", "{CE9F4DC5-8DAC-4704-925C-0E7D0581375C}"
ProjectSection(ProjectDependencies) = postProject
{9262C7EE-E593-46B1-AC7E-F12E5055EB57} = {9262C7EE-E593-46B1-AC7E-F12E5055EB57}
@@ -1831,25 +1402,6 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "localization", "..\..\exter
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "localizationArchive", "..\..\external\ours\library\localizationArchive\build\win32\localizationArchive.vcxproj", "{A8036EC1-9682-4315-A3D2-6B26C3245D50}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "serverDatabase", "..\..\engine\server\library\serverDatabase\build\win32\serverDatabase.vcxproj", "{9C682884-289D-4E31-B5A8-5B4FE6B10452}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "serverGame", "..\..\engine\server\library\serverGame\build\win32\serverGame.vcxproj", "{F8271BF7-CFBF-4DE3-84BB-428058E0B069}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "serverKeyShare", "..\..\engine\server\library\serverKeyShare\build\win32\serverKeyShare.vcxproj", "{4F237764-394D-40CB-9314-DAEDED42E2CD}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "serverMetrics", "..\..\engine\server\library\SERVERMETRICS\build\win32\serverMetrics.vcxproj", "{4EFF0958-FBC8-4053-971A-7022EB0035E4}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "serverNetworkMessages", "..\..\engine\server\library\serverNetworkMessages\build\win32\serverNetworkMessages.vcxproj", "{38DF394C-0909-4507-8029-53D960FEA464}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "serverPathfinding", "..\..\engine\server\library\serverPathfinding\build\win32\serverPathfinding.vcxproj", "{7FBBF6D9-7090-4D1A-8926-7FCDE802BFDB}"
ProjectSection(ProjectDependencies) = postProject
{7D707A5A-CB70-4FD9-83D3-E1E921AE3381} = {7D707A5A-CB70-4FD9-83D3-E1E921AE3381}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "serverScript", "..\..\engine\server\library\serverScript\build\win32\serverScript.vcxproj", "{D65732C0-2D5C-44A7-96F0-16BEF9E1AF3A}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "serverUtility", "..\..\engine\server\library\serverUtility\build\win32\serverUtility.vcxproj", "{67BFDA04-F26E-497F-A6FE-EE52550C15FE}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "sharedCollision", "..\..\engine\shared\library\sharedCollision\build\win32\sharedCollision.vcxproj", "{03A9A516-227E-49BB-A1C5-64B34CBDDC66}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "sharedCommandParser", "..\..\engine\shared\library\sharedCommandParser\build\win32\sharedCommandParser.vcxproj", "{20D4D8EB-87CA-4C5F-8BA3-FFC898563C40}"
@@ -1927,8 +1479,6 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "singleton", "..\..\external
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "swgClientUserInterface", "..\..\game\client\library\swgClientUserInterface\build\win32\swgClientUserInterface.vcxproj", "{EAA23F07-4419-4AED-83D2-06654119B6F6}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "swgServerNetworkMessages", "..\..\game\server\library\swgServerNetworkMessages\build\win32\swgServerNetworkMessages.vcxproj", "{950E9CF2-CD44-476C-826A-BB7869241F5B}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "swgSharedNetworkMessages", "..\..\game\shared\library\swgSharedNetworkMessages\build\win32\swgSharedNetworkMessages.vcxproj", "{FCC0F2B5-AADE-4454-AFF2-4D91365B4883}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "swgSharedUtility", "..\..\game\shared\library\swgSharedUtility\build\win32\swgSharedUtility.vcxproj", "{A378FAB0-5B67-44BD-A3D8-815861792D6B}"
@@ -2026,7 +1576,6 @@ EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "CoreWeaponExporterTool", "..\..\engine\shared\application\CoreWeaponExporterTool\build\win32\CoreWeaponExporterTool.vcxproj", "{5322A6D8-E2FE-420C-B719-3D061EAB4593}"
ProjectSection(ProjectDependencies) = postProject
{DE93996C-CB51-4D61-85A0-A9DFC677445F} = {DE93996C-CB51-4D61-85A0-A9DFC677445F}
{F8271BF7-CFBF-4DE3-84BB-428058E0B069} = {F8271BF7-CFBF-4DE3-84BB-428058E0B069}
{C87164F5-14A9-403C-8BC4-217FD40731EA} = {C87164F5-14A9-403C-8BC4-217FD40731EA}
{2AE0CEF0-C4F2-4786-A026-8338FB09D61B} = {2AE0CEF0-C4F2-4786-A026-8338FB09D61B}
{2E6982E0-DCB6-4ED9-BFAD-D29DAEEA6AD2} = {2E6982E0-DCB6-4ED9-BFAD-D29DAEEA6AD2}
@@ -2083,18 +1632,6 @@ Global
{C05E2B2B-A9A1-4E7E-A35D-2342AF49774E}.Optimized|Win32.Build.0 = Optimized|Win32
{C05E2B2B-A9A1-4E7E-A35D-2342AF49774E}.Release|Win32.ActiveCfg = Release|Win32
{C05E2B2B-A9A1-4E7E-A35D-2342AF49774E}.Release|Win32.Build.0 = Release|Win32
{D5CA7486-D01E-4DCB-883B-8E60F7F64D26}.Debug|Win32.ActiveCfg = Debug|Win32
{D5CA7486-D01E-4DCB-883B-8E60F7F64D26}.Debug|Win32.Build.0 = Debug|Win32
{D5CA7486-D01E-4DCB-883B-8E60F7F64D26}.Optimized|Win32.ActiveCfg = Optimized|Win32
{D5CA7486-D01E-4DCB-883B-8E60F7F64D26}.Optimized|Win32.Build.0 = Optimized|Win32
{D5CA7486-D01E-4DCB-883B-8E60F7F64D26}.Release|Win32.ActiveCfg = Release|Win32
{D5CA7486-D01E-4DCB-883B-8E60F7F64D26}.Release|Win32.Build.0 = Release|Win32
{30115B9B-5669-4AA0-80BE-1DF73F5F2450}.Debug|Win32.ActiveCfg = Debug|Win32
{30115B9B-5669-4AA0-80BE-1DF73F5F2450}.Debug|Win32.Build.0 = Debug|Win32
{30115B9B-5669-4AA0-80BE-1DF73F5F2450}.Optimized|Win32.ActiveCfg = Optimized|Win32
{30115B9B-5669-4AA0-80BE-1DF73F5F2450}.Optimized|Win32.Build.0 = Optimized|Win32
{30115B9B-5669-4AA0-80BE-1DF73F5F2450}.Release|Win32.ActiveCfg = Release|Win32
{30115B9B-5669-4AA0-80BE-1DF73F5F2450}.Release|Win32.Build.0 = Release|Win32
{99E4A02B-6849-4C82-A9D3-213FD45BFE84}.Debug|Win32.ActiveCfg = Debug|Win32
{99E4A02B-6849-4C82-A9D3-213FD45BFE84}.Debug|Win32.Build.0 = Debug|Win32
{99E4A02B-6849-4C82-A9D3-213FD45BFE84}.Optimized|Win32.ActiveCfg = Optimized|Win32
@@ -2107,12 +1644,6 @@ Global
{5B7D9A11-141E-475B-A9E5-A5DCD4913274}.Optimized|Win32.Build.0 = Debug Threaded|Win32
{5B7D9A11-141E-475B-A9E5-A5DCD4913274}.Release|Win32.ActiveCfg = Release|Win32
{5B7D9A11-141E-475B-A9E5-A5DCD4913274}.Release|Win32.Build.0 = Release|Win32
{2F380D05-A841-4A06-A4F8-11049F0061CD}.Debug|Win32.ActiveCfg = Debug|Win32
{2F380D05-A841-4A06-A4F8-11049F0061CD}.Debug|Win32.Build.0 = Debug|Win32
{2F380D05-A841-4A06-A4F8-11049F0061CD}.Optimized|Win32.ActiveCfg = Optimized|Win32
{2F380D05-A841-4A06-A4F8-11049F0061CD}.Optimized|Win32.Build.0 = Optimized|Win32
{2F380D05-A841-4A06-A4F8-11049F0061CD}.Release|Win32.ActiveCfg = Release|Win32
{2F380D05-A841-4A06-A4F8-11049F0061CD}.Release|Win32.Build.0 = Release|Win32
{5B97B272-B221-439C-8FE8-39A5761BAC25}.Debug|Win32.ActiveCfg = Debug|Win32
{5B97B272-B221-439C-8FE8-39A5761BAC25}.Debug|Win32.Build.0 = Debug|Win32
{5B97B272-B221-439C-8FE8-39A5761BAC25}.Optimized|Win32.ActiveCfg = Optimized|Win32
@@ -2173,12 +1704,6 @@ Global
{EEF1DD74-8294-4FF8-BA91-D91AD9052714}.Optimized|Win32.Build.0 = Optimized|Win32
{EEF1DD74-8294-4FF8-BA91-D91AD9052714}.Release|Win32.ActiveCfg = Release|Win32
{EEF1DD74-8294-4FF8-BA91-D91AD9052714}.Release|Win32.Build.0 = Release|Win32
{B678A8AD-B63E-462F-8839-1D11284D08B1}.Debug|Win32.ActiveCfg = Debug|Win32
{B678A8AD-B63E-462F-8839-1D11284D08B1}.Debug|Win32.Build.0 = Debug|Win32
{B678A8AD-B63E-462F-8839-1D11284D08B1}.Optimized|Win32.ActiveCfg = Optimized|Win32
{B678A8AD-B63E-462F-8839-1D11284D08B1}.Optimized|Win32.Build.0 = Optimized|Win32
{B678A8AD-B63E-462F-8839-1D11284D08B1}.Release|Win32.ActiveCfg = Release|Win32
{B678A8AD-B63E-462F-8839-1D11284D08B1}.Release|Win32.Build.0 = Release|Win32
{F2C6B544-BAF0-4534-9479-C79BC09BF2F0}.Debug|Win32.ActiveCfg = Debug|Win32
{F2C6B544-BAF0-4534-9479-C79BC09BF2F0}.Debug|Win32.Build.0 = Debug|Win32
{F2C6B544-BAF0-4534-9479-C79BC09BF2F0}.Optimized|Win32.ActiveCfg = Debug|Win32
@@ -2209,12 +1734,6 @@ Global
{B75AC10E-38CE-4E3E-9BA4-6A5915DE1C30}.Optimized|Win32.Build.0 = Optimized|Win32
{B75AC10E-38CE-4E3E-9BA4-6A5915DE1C30}.Release|Win32.ActiveCfg = Release|Win32
{B75AC10E-38CE-4E3E-9BA4-6A5915DE1C30}.Release|Win32.Build.0 = Release|Win32
{4D369B2A-B4D6-4337-9AF7-E8F697F7994D}.Debug|Win32.ActiveCfg = Debug|Win32
{4D369B2A-B4D6-4337-9AF7-E8F697F7994D}.Debug|Win32.Build.0 = Debug|Win32
{4D369B2A-B4D6-4337-9AF7-E8F697F7994D}.Optimized|Win32.ActiveCfg = Optimized|Win32
{4D369B2A-B4D6-4337-9AF7-E8F697F7994D}.Optimized|Win32.Build.0 = Optimized|Win32
{4D369B2A-B4D6-4337-9AF7-E8F697F7994D}.Release|Win32.ActiveCfg = Release|Win32
{4D369B2A-B4D6-4337-9AF7-E8F697F7994D}.Release|Win32.Build.0 = Release|Win32
{5EFB446B-1E95-487F-B1BB-B9767FA86DE3}.Debug|Win32.ActiveCfg = Debug|Win32
{5EFB446B-1E95-487F-B1BB-B9767FA86DE3}.Debug|Win32.Build.0 = Debug|Win32
{5EFB446B-1E95-487F-B1BB-B9767FA86DE3}.Optimized|Win32.ActiveCfg = Optimized|Win32
@@ -2233,12 +1752,6 @@ Global
{ABC58EA0-A1A3-4DBE-A5A3-E56582BC241D}.Optimized|Win32.Build.0 = Optimized|Win32
{ABC58EA0-A1A3-4DBE-A5A3-E56582BC241D}.Release|Win32.ActiveCfg = Release|Win32
{ABC58EA0-A1A3-4DBE-A5A3-E56582BC241D}.Release|Win32.Build.0 = Release|Win32
{FA266E3D-BC73-4DC1-B666-B5F34C71085F}.Debug|Win32.ActiveCfg = Debug|Win32
{FA266E3D-BC73-4DC1-B666-B5F34C71085F}.Debug|Win32.Build.0 = Debug|Win32
{FA266E3D-BC73-4DC1-B666-B5F34C71085F}.Optimized|Win32.ActiveCfg = Optimized|Win32
{FA266E3D-BC73-4DC1-B666-B5F34C71085F}.Optimized|Win32.Build.0 = Optimized|Win32
{FA266E3D-BC73-4DC1-B666-B5F34C71085F}.Release|Win32.ActiveCfg = Release|Win32
{FA266E3D-BC73-4DC1-B666-B5F34C71085F}.Release|Win32.Build.0 = Release|Win32
{6B75D5AD-DEA7-491B-B93D-9D2C51CBF030}.Debug|Win32.ActiveCfg = Debug|Win32
{6B75D5AD-DEA7-491B-B93D-9D2C51CBF030}.Debug|Win32.Build.0 = Debug|Win32
{6B75D5AD-DEA7-491B-B93D-9D2C51CBF030}.Optimized|Win32.ActiveCfg = Optimized|Win32
@@ -2293,18 +1806,6 @@ Global
{86E1C163-E59B-4408-AB2F-B93E2EB96BF1}.Optimized|Win32.Build.0 = Optimized|Win32
{86E1C163-E59B-4408-AB2F-B93E2EB96BF1}.Release|Win32.ActiveCfg = Release|Win32
{86E1C163-E59B-4408-AB2F-B93E2EB96BF1}.Release|Win32.Build.0 = Release|Win32
{985EDE24-4618-4F50-A12E-DBE859B232B9}.Debug|Win32.ActiveCfg = Debug|Win32
{985EDE24-4618-4F50-A12E-DBE859B232B9}.Debug|Win32.Build.0 = Debug|Win32
{985EDE24-4618-4F50-A12E-DBE859B232B9}.Optimized|Win32.ActiveCfg = Optimized|Win32
{985EDE24-4618-4F50-A12E-DBE859B232B9}.Optimized|Win32.Build.0 = Optimized|Win32
{985EDE24-4618-4F50-A12E-DBE859B232B9}.Release|Win32.ActiveCfg = Release|Win32
{985EDE24-4618-4F50-A12E-DBE859B232B9}.Release|Win32.Build.0 = Release|Win32
{6D8D49D8-7832-441F-B61B-E5F2C4B42D49}.Debug|Win32.ActiveCfg = Debug|Win32
{6D8D49D8-7832-441F-B61B-E5F2C4B42D49}.Debug|Win32.Build.0 = Debug|Win32
{6D8D49D8-7832-441F-B61B-E5F2C4B42D49}.Optimized|Win32.ActiveCfg = Optimized|Win32
{6D8D49D8-7832-441F-B61B-E5F2C4B42D49}.Optimized|Win32.Build.0 = Optimized|Win32
{6D8D49D8-7832-441F-B61B-E5F2C4B42D49}.Release|Win32.ActiveCfg = Release|Win32
{6D8D49D8-7832-441F-B61B-E5F2C4B42D49}.Release|Win32.Build.0 = Release|Win32
{F5CF1FEC-1123-4246-B24B-46DEBB3C5146}.Debug|Win32.ActiveCfg = Debug|Win32
{F5CF1FEC-1123-4246-B24B-46DEBB3C5146}.Debug|Win32.Build.0 = Debug|Win32
{F5CF1FEC-1123-4246-B24B-46DEBB3C5146}.Optimized|Win32.ActiveCfg = Optimized|Win32
@@ -2317,24 +1818,12 @@ Global
{F47EB21E-1EB9-4E05-B07C-030A4AA83CA6}.Optimized|Win32.Build.0 = Optimized|Win32
{F47EB21E-1EB9-4E05-B07C-030A4AA83CA6}.Release|Win32.ActiveCfg = Release|Win32
{F47EB21E-1EB9-4E05-B07C-030A4AA83CA6}.Release|Win32.Build.0 = Release|Win32
{FBBB5B75-30C9-479F-8A6B-A620A35C0D46}.Debug|Win32.ActiveCfg = Debug|Win32
{FBBB5B75-30C9-479F-8A6B-A620A35C0D46}.Debug|Win32.Build.0 = Debug|Win32
{FBBB5B75-30C9-479F-8A6B-A620A35C0D46}.Optimized|Win32.ActiveCfg = Optimized|Win32
{FBBB5B75-30C9-479F-8A6B-A620A35C0D46}.Optimized|Win32.Build.0 = Optimized|Win32
{FBBB5B75-30C9-479F-8A6B-A620A35C0D46}.Release|Win32.ActiveCfg = Release|Win32
{FBBB5B75-30C9-479F-8A6B-A620A35C0D46}.Release|Win32.Build.0 = Release|Win32
{0C54AD5C-87B2-43C6-A699-03A547FF6E03}.Debug|Win32.ActiveCfg = Debug|Win32
{0C54AD5C-87B2-43C6-A699-03A547FF6E03}.Debug|Win32.Build.0 = Debug|Win32
{0C54AD5C-87B2-43C6-A699-03A547FF6E03}.Optimized|Win32.ActiveCfg = Optimized|Win32
{0C54AD5C-87B2-43C6-A699-03A547FF6E03}.Optimized|Win32.Build.0 = Optimized|Win32
{0C54AD5C-87B2-43C6-A699-03A547FF6E03}.Release|Win32.ActiveCfg = Release|Win32
{0C54AD5C-87B2-43C6-A699-03A547FF6E03}.Release|Win32.Build.0 = Release|Win32
{ACAB6CEA-5A4A-4CE4-97D6-333FBA3D8DC0}.Debug|Win32.ActiveCfg = Debug|Win32
{ACAB6CEA-5A4A-4CE4-97D6-333FBA3D8DC0}.Debug|Win32.Build.0 = Debug|Win32
{ACAB6CEA-5A4A-4CE4-97D6-333FBA3D8DC0}.Optimized|Win32.ActiveCfg = Optimized|Win32
{ACAB6CEA-5A4A-4CE4-97D6-333FBA3D8DC0}.Optimized|Win32.Build.0 = Optimized|Win32
{ACAB6CEA-5A4A-4CE4-97D6-333FBA3D8DC0}.Release|Win32.ActiveCfg = Release|Win32
{ACAB6CEA-5A4A-4CE4-97D6-333FBA3D8DC0}.Release|Win32.Build.0 = Release|Win32
{355DDF1F-1DCA-4667-A1F6-11B66FBC4228}.Debug|Win32.ActiveCfg = Debug|Win32
{355DDF1F-1DCA-4667-A1F6-11B66FBC4228}.Debug|Win32.Build.0 = Debug|Win32
{355DDF1F-1DCA-4667-A1F6-11B66FBC4228}.Optimized|Win32.ActiveCfg = Optimized|Win32
@@ -2407,12 +1896,6 @@ Global
{EC34F97C-F421-4C75-8C8C-91D00E699D33}.Optimized|Win32.Build.0 = Optimized|Win32
{EC34F97C-F421-4C75-8C8C-91D00E699D33}.Release|Win32.ActiveCfg = Release|Win32
{EC34F97C-F421-4C75-8C8C-91D00E699D33}.Release|Win32.Build.0 = Release|Win32
{B333AC21-A6B4-4F5E-92A9-98335FB8C4AE}.Debug|Win32.ActiveCfg = Debug|Win32
{B333AC21-A6B4-4F5E-92A9-98335FB8C4AE}.Debug|Win32.Build.0 = Debug|Win32
{B333AC21-A6B4-4F5E-92A9-98335FB8C4AE}.Optimized|Win32.ActiveCfg = Optimized|Win32
{B333AC21-A6B4-4F5E-92A9-98335FB8C4AE}.Optimized|Win32.Build.0 = Optimized|Win32
{B333AC21-A6B4-4F5E-92A9-98335FB8C4AE}.Release|Win32.ActiveCfg = Release|Win32
{B333AC21-A6B4-4F5E-92A9-98335FB8C4AE}.Release|Win32.Build.0 = Release|Win32
{A4AC1380-D2AB-4B0D-824A-4918680F5CA4}.Debug|Win32.ActiveCfg = Debug|Win32
{A4AC1380-D2AB-4B0D-824A-4918680F5CA4}.Debug|Win32.Build.0 = Debug|Win32
{A4AC1380-D2AB-4B0D-824A-4918680F5CA4}.Optimized|Win32.ActiveCfg = Optimized|Win32
@@ -2425,24 +1908,6 @@ Global
{7986223E-4B89-44B1-AED5-716A5562AAB6}.Optimized|Win32.Build.0 = Optimized|Win32
{7986223E-4B89-44B1-AED5-716A5562AAB6}.Release|Win32.ActiveCfg = Release|Win32
{7986223E-4B89-44B1-AED5-716A5562AAB6}.Release|Win32.Build.0 = Release|Win32
{52961080-869C-4053-84B4-44D4DEC48B8B}.Debug|Win32.ActiveCfg = Debug|Win32
{52961080-869C-4053-84B4-44D4DEC48B8B}.Debug|Win32.Build.0 = Debug|Win32
{52961080-869C-4053-84B4-44D4DEC48B8B}.Optimized|Win32.ActiveCfg = Optimized|Win32
{52961080-869C-4053-84B4-44D4DEC48B8B}.Optimized|Win32.Build.0 = Optimized|Win32
{52961080-869C-4053-84B4-44D4DEC48B8B}.Release|Win32.ActiveCfg = Release|Win32
{52961080-869C-4053-84B4-44D4DEC48B8B}.Release|Win32.Build.0 = Release|Win32
{D1FB68C1-A139-4458-9984-1514AC15AC81}.Debug|Win32.ActiveCfg = Debug|Win32
{D1FB68C1-A139-4458-9984-1514AC15AC81}.Debug|Win32.Build.0 = Debug|Win32
{D1FB68C1-A139-4458-9984-1514AC15AC81}.Optimized|Win32.ActiveCfg = Optimized|Win32
{D1FB68C1-A139-4458-9984-1514AC15AC81}.Optimized|Win32.Build.0 = Optimized|Win32
{D1FB68C1-A139-4458-9984-1514AC15AC81}.Release|Win32.ActiveCfg = Release|Win32
{D1FB68C1-A139-4458-9984-1514AC15AC81}.Release|Win32.Build.0 = Release|Win32
{BEAAA971-E712-4662-A9EE-35AFA3D3F231}.Debug|Win32.ActiveCfg = Debug|Win32
{BEAAA971-E712-4662-A9EE-35AFA3D3F231}.Debug|Win32.Build.0 = Debug|Win32
{BEAAA971-E712-4662-A9EE-35AFA3D3F231}.Optimized|Win32.ActiveCfg = Optimized|Win32
{BEAAA971-E712-4662-A9EE-35AFA3D3F231}.Optimized|Win32.Build.0 = Optimized|Win32
{BEAAA971-E712-4662-A9EE-35AFA3D3F231}.Release|Win32.ActiveCfg = Release|Win32
{BEAAA971-E712-4662-A9EE-35AFA3D3F231}.Release|Win32.Build.0 = Release|Win32
{CE9F4DC5-8DAC-4704-925C-0E7D0581375C}.Debug|Win32.ActiveCfg = Debug|Win32
{CE9F4DC5-8DAC-4704-925C-0E7D0581375C}.Debug|Win32.Build.0 = Debug|Win32
{CE9F4DC5-8DAC-4704-925C-0E7D0581375C}.Optimized|Win32.ActiveCfg = Optimized|Win32
@@ -2557,54 +2022,6 @@ Global
{A8036EC1-9682-4315-A3D2-6B26C3245D50}.Optimized|Win32.Build.0 = Optimized|Win32
{A8036EC1-9682-4315-A3D2-6B26C3245D50}.Release|Win32.ActiveCfg = Release|Win32
{A8036EC1-9682-4315-A3D2-6B26C3245D50}.Release|Win32.Build.0 = Release|Win32
{9C682884-289D-4E31-B5A8-5B4FE6B10452}.Debug|Win32.ActiveCfg = Debug|Win32
{9C682884-289D-4E31-B5A8-5B4FE6B10452}.Debug|Win32.Build.0 = Debug|Win32
{9C682884-289D-4E31-B5A8-5B4FE6B10452}.Optimized|Win32.ActiveCfg = Optimized|Win32
{9C682884-289D-4E31-B5A8-5B4FE6B10452}.Optimized|Win32.Build.0 = Optimized|Win32
{9C682884-289D-4E31-B5A8-5B4FE6B10452}.Release|Win32.ActiveCfg = Release|Win32
{9C682884-289D-4E31-B5A8-5B4FE6B10452}.Release|Win32.Build.0 = Release|Win32
{F8271BF7-CFBF-4DE3-84BB-428058E0B069}.Debug|Win32.ActiveCfg = Debug|Win32
{F8271BF7-CFBF-4DE3-84BB-428058E0B069}.Debug|Win32.Build.0 = Debug|Win32
{F8271BF7-CFBF-4DE3-84BB-428058E0B069}.Optimized|Win32.ActiveCfg = Optimized|Win32
{F8271BF7-CFBF-4DE3-84BB-428058E0B069}.Optimized|Win32.Build.0 = Optimized|Win32
{F8271BF7-CFBF-4DE3-84BB-428058E0B069}.Release|Win32.ActiveCfg = Release|Win32
{F8271BF7-CFBF-4DE3-84BB-428058E0B069}.Release|Win32.Build.0 = Release|Win32
{4F237764-394D-40CB-9314-DAEDED42E2CD}.Debug|Win32.ActiveCfg = Debug|Win32
{4F237764-394D-40CB-9314-DAEDED42E2CD}.Debug|Win32.Build.0 = Debug|Win32
{4F237764-394D-40CB-9314-DAEDED42E2CD}.Optimized|Win32.ActiveCfg = Optimized|Win32
{4F237764-394D-40CB-9314-DAEDED42E2CD}.Optimized|Win32.Build.0 = Optimized|Win32
{4F237764-394D-40CB-9314-DAEDED42E2CD}.Release|Win32.ActiveCfg = Release|Win32
{4F237764-394D-40CB-9314-DAEDED42E2CD}.Release|Win32.Build.0 = Release|Win32
{4EFF0958-FBC8-4053-971A-7022EB0035E4}.Debug|Win32.ActiveCfg = Debug|Win32
{4EFF0958-FBC8-4053-971A-7022EB0035E4}.Debug|Win32.Build.0 = Debug|Win32
{4EFF0958-FBC8-4053-971A-7022EB0035E4}.Optimized|Win32.ActiveCfg = Optimized|Win32
{4EFF0958-FBC8-4053-971A-7022EB0035E4}.Optimized|Win32.Build.0 = Optimized|Win32
{4EFF0958-FBC8-4053-971A-7022EB0035E4}.Release|Win32.ActiveCfg = Release|Win32
{4EFF0958-FBC8-4053-971A-7022EB0035E4}.Release|Win32.Build.0 = Release|Win32
{38DF394C-0909-4507-8029-53D960FEA464}.Debug|Win32.ActiveCfg = Debug|Win32
{38DF394C-0909-4507-8029-53D960FEA464}.Debug|Win32.Build.0 = Debug|Win32
{38DF394C-0909-4507-8029-53D960FEA464}.Optimized|Win32.ActiveCfg = Optimized|Win32
{38DF394C-0909-4507-8029-53D960FEA464}.Optimized|Win32.Build.0 = Optimized|Win32
{38DF394C-0909-4507-8029-53D960FEA464}.Release|Win32.ActiveCfg = Release|Win32
{38DF394C-0909-4507-8029-53D960FEA464}.Release|Win32.Build.0 = Release|Win32
{7FBBF6D9-7090-4D1A-8926-7FCDE802BFDB}.Debug|Win32.ActiveCfg = Debug|Win32
{7FBBF6D9-7090-4D1A-8926-7FCDE802BFDB}.Debug|Win32.Build.0 = Debug|Win32
{7FBBF6D9-7090-4D1A-8926-7FCDE802BFDB}.Optimized|Win32.ActiveCfg = Optimized|Win32
{7FBBF6D9-7090-4D1A-8926-7FCDE802BFDB}.Optimized|Win32.Build.0 = Optimized|Win32
{7FBBF6D9-7090-4D1A-8926-7FCDE802BFDB}.Release|Win32.ActiveCfg = Release|Win32
{7FBBF6D9-7090-4D1A-8926-7FCDE802BFDB}.Release|Win32.Build.0 = Release|Win32
{D65732C0-2D5C-44A7-96F0-16BEF9E1AF3A}.Debug|Win32.ActiveCfg = Debug|Win32
{D65732C0-2D5C-44A7-96F0-16BEF9E1AF3A}.Debug|Win32.Build.0 = Debug|Win32
{D65732C0-2D5C-44A7-96F0-16BEF9E1AF3A}.Optimized|Win32.ActiveCfg = Optimized|Win32
{D65732C0-2D5C-44A7-96F0-16BEF9E1AF3A}.Optimized|Win32.Build.0 = Optimized|Win32
{D65732C0-2D5C-44A7-96F0-16BEF9E1AF3A}.Release|Win32.ActiveCfg = Release|Win32
{D65732C0-2D5C-44A7-96F0-16BEF9E1AF3A}.Release|Win32.Build.0 = Release|Win32
{67BFDA04-F26E-497F-A6FE-EE52550C15FE}.Debug|Win32.ActiveCfg = Debug|Win32
{67BFDA04-F26E-497F-A6FE-EE52550C15FE}.Debug|Win32.Build.0 = Debug|Win32
{67BFDA04-F26E-497F-A6FE-EE52550C15FE}.Optimized|Win32.ActiveCfg = Optimized|Win32
{67BFDA04-F26E-497F-A6FE-EE52550C15FE}.Optimized|Win32.Build.0 = Optimized|Win32
{67BFDA04-F26E-497F-A6FE-EE52550C15FE}.Release|Win32.ActiveCfg = Release|Win32
{67BFDA04-F26E-497F-A6FE-EE52550C15FE}.Release|Win32.Build.0 = Release|Win32
{03A9A516-227E-49BB-A1C5-64B34CBDDC66}.Debug|Win32.ActiveCfg = Debug|Win32
{03A9A516-227E-49BB-A1C5-64B34CBDDC66}.Debug|Win32.Build.0 = Debug|Win32
{03A9A516-227E-49BB-A1C5-64B34CBDDC66}.Optimized|Win32.ActiveCfg = Optimized|Win32
@@ -2827,12 +2244,6 @@ Global
{EAA23F07-4419-4AED-83D2-06654119B6F6}.Optimized|Win32.Build.0 = Optimized|Win32
{EAA23F07-4419-4AED-83D2-06654119B6F6}.Release|Win32.ActiveCfg = Release|Win32
{EAA23F07-4419-4AED-83D2-06654119B6F6}.Release|Win32.Build.0 = Release|Win32
{950E9CF2-CD44-476C-826A-BB7869241F5B}.Debug|Win32.ActiveCfg = Debug|Win32
{950E9CF2-CD44-476C-826A-BB7869241F5B}.Debug|Win32.Build.0 = Debug|Win32
{950E9CF2-CD44-476C-826A-BB7869241F5B}.Optimized|Win32.ActiveCfg = Optimized|Win32
{950E9CF2-CD44-476C-826A-BB7869241F5B}.Optimized|Win32.Build.0 = Optimized|Win32
{950E9CF2-CD44-476C-826A-BB7869241F5B}.Release|Win32.ActiveCfg = Release|Win32
{950E9CF2-CD44-476C-826A-BB7869241F5B}.Release|Win32.Build.0 = Release|Win32
{FCC0F2B5-AADE-4454-AFF2-4D91365B4883}.Debug|Win32.ActiveCfg = Debug|Win32
{FCC0F2B5-AADE-4454-AFF2-4D91365B4883}.Debug|Win32.Build.0 = Debug|Win32
{FCC0F2B5-AADE-4454-AFF2-4D91365B4883}.Optimized|Win32.ActiveCfg = Optimized|Win32
-97
View File
@@ -1,97 +0,0 @@
# Process this file with autoconf to produce a configure script.
AC_PREREQ(2.57)
AC_INIT(swg, 1.0.0, [email protected])
AC_CONFIG_AUX_DIR(config)
# using literals here. If configure targets change (using --with-PACKAGE)
# and they should be built as part of this top level configuration, then
# AC_CONFIG_SUBDIRS should also be changed!
AC_CONFIG_SUBDIRS([engine external/ours/library/fileInterface external/ours/library/archive external/ours/library/localization external/ours/library/localizationArchive external/ours/library/unicode external/ours/library/unicodeArchive external/ours/library/crypto game external/3rd/library/platform/MonAPI2])
AC_ARG_ENABLE([debug], AC_HELP_STRING([--enable-debug\[=yes\|no\] ], [defines _DEBUG and enables debugging features]), AC_DEFINE(_DEBUG) CXXFLAGS="$CXXFLAGS -g", CXXFLAGS="$CXXFLAGS -O2")
# todo - when using gcc-3, pick more optimizations for use
AC_ARG_ENABLE([optimized], AC_HELP_STRING([--enable-optimized\[=yes\|no\] ], [enables optimizations]), CXXFLAGS="$CXXFLAGS -O2", [])
# determine build target
AC_CANONICAL_BUILD
AC_CANONICAL_HOST
AC_CANONICAL_TARGET
case $target in
*-linux-*)
platform=[linux];
AC_DEFINE(LINUX)
AC_DEFINE(_REENTRANT)
AC_DEFINE(_XOPEN_SOURCE, 500)
AC_DEFINE(_GNU_SOURCE)
AC_DEFINE(linux)
AC_DEFINE(_GNU_SOURCE)
AC_DEFINE(_USING_STL)
AC_DEFINE(__STL_NO_BAD_ALLOC)
esac
AC_SUBST(platform)
# initialize automake macros
AM_INIT_AUTOMAKE
# Checks for programs.
AC_PROG_INSTALL
AC_PROG_LN_S
AC_PROG_MAKE_SET
AC_PROG_LIBTOOL
AC_PROG_CXX
AC_DEFUN([SWG_REQUIRE], [export $3 AC_ARG_WITH([$1], AC_HELP_STRING([--with-$1=/path/to/$1], [where to find $1]), AC_SUBST($3, $withval), AC_SUBST($3, $2)) AC_MSG_NOTICE([using $$3 for $1])])
AC_DEFUN([REQUIRE_PACKAGE], [if ! test $$3; then AC_ARG_WITH([$1], AC_HELP_STRING([--with-$1=path/to/$1], [where to find $1]), AC_SUBST($3, $withval), AC_SUBST($3, $2)) AC_CHECK_FILE($4, [], AC_MSG_ERROR([$1 is required but was not found in $$3])) fi; export $3])
pushd $srcdir > /dev/null ; abs_srcdir=`pwd` > /dev/null ; popd > /dev/null
REQUIRE_PACKAGE(archive, [$abs_srcdir/external/ours/library/archive], archive_dir, [$archive_dir/include/Archive/ArchiveMutex.h]) AC_SUBST(archive_dir)
REQUIRE_PACKAGE(crypto, [$abs_srcdir/external/ours/library/crypto], crypto_dir, [$crypto_dir/include/FirstCrypto.h]) AC_SUBST(crypto_dir)
REQUIRE_PACKAGE(fileInterface, [$abs_srcdir/external/ours/library/fileInterface], fileInterface_dir, [$fileInterface_dir/include/public/fileInterface/FirstFileInterface.h]) AC_SUBST(fileInterface_dir)
REQUIRE_PACKAGE(localization, [$abs_srcdir/external/ours/library/localization], localization_dir, [$localization_dir/include/FirstLocalization.h]) AC_SUBST(localization_dir)
REQUIRE_PACKAGE(localizationArchive, [$abs_srcdir/external/ours/library/localizationArchive], localizationArchive_dir, [$localizationArchive_dir/include/public/localizationArchive/FirstLocalizationArchive.h]) AC_SUBST(localizationArchive_dir)
REQUIRE_PACKAGE(singleton, [$abs_srcdir/external/ours/library/singleton], singleton_dir, [$singleton_dir/include/Singleton/Singleton.h]) AC_SUBST(singleton_dir)
REQUIRE_PACKAGE(unicode, [$abs_srcdir/external/ours/library/unicode], unicode_dir, [$unicode_dir/include/Unicode.h]) AC_SUBST(unicode_dir)
REQUIRE_PACKAGE(unicodeArchive, [$abs_srcdir/external/ours/library/unicodeArchive], unicodeArchive_dir, [$unicodeArchive_dir/include/public/unicodeArchive/FirstUnicodeArchive.h]) AC_SUBST(unicodeArchive_dir)
REQUIRE_PACKAGE(boost, [$abs_srcdir/external/3rd/library/boost], boost_dir, [$boost_dir/boost/smart_ptr.hpp]) AC_SUBST(boost_dir)
REQUIRE_PACKAGE(platform, [$abs_srcdir/external/3rd/library/platform], platform_dir, [$platform_dir/MonAPI2/MonitorAPI.h]) AC_SUBST(platform_dir)
REQUIRE_PACKAGE(stlport, [$abs_srcdir/external/3rd/library/stlport453], stlport_dir, [$stlport_dir/stlport/algorithm]) AC_SUBST(stlport_dir)
REQUIRE_PACKAGE(udplibrary, [$abs_srcdir/external/3rd/library/udplibrary], udplibrary_dir, [$udplibrary_dir/UdpLibrary.hpp]) AC_SUBST(udplibrary_dir)
REQUIRE_PACKAGE(engine, [$abs_srcdir/engine], engine_dir, [$engine_dir/shared/library/sharedFoundation/include/public/sharedFoundation/FirstSharedFoundation.h]) AC_SUBST(engine_dir)
REQUIRE_PACKAGE(game, [$abs_srcdir/game], game_dir, [$game_dir/shared/library/swgSharedUtility/include/public/swgSharedUtility/FirstSwgSharedUtility.h]) AC_SUBST(game_dir)
REQUIRE_PACKAGE(oracle, [$abs_srcdir/external/3rd/library/oracle], oracle_dir, [$oracle_dir/include/oci.h]) AC_SUBST(oracle_dir)
REQUIRE_PACKAGE(perforce, [$abs_srcdir/external/3rd/library/perforce], perforce_dir, [$perforce_dir/include/clientapi.h]) AC_SUBST(perforce_dir)
REQUIRE_PACKAGE(pcre, [$abs_srcdir/external/3rd/library/pcre/4.1/$platform], pcre_dir, [$pcre_dir/include/pcre/pcre.h]) AC_SUBST(pcre_dir)
REQUIRE_PACKAGE(soePlatform, [$abs_srcdir/external/3rd/library/soePlatform], soePlatform_dir, [$soePlatform_dir/Base/Base.h]) AC_SUBST(soePlatform_dir)
REQUIRE_PACKAGE(libxml, [$abs_srcdir/external/3rd/library/libxml], libxml_dir, [$libxml_dir/libxml.h]) AC_SUBST(libxml_dir)
# Checks for libraries.
# Checks for header files.
# Checks for typedefs, structures, and compiler characteristics.
# Checks for library functions.
AC_CONFIG_FILES([Makefile])
AC_CONFIG_FILES([engine/Makefile])
AC_CONFIG_FILES([external/Makefile])
AC_CONFIG_FILES([external/ours/Makefile])
AC_CONFIG_FILES([external/ours/library/Makefile])
AC_CONFIG_FILES([external/ours/library/fileInterface/Makefile])
AC_CONFIG_FILES([external/ours/library/archive/Makefile])
AC_CONFIG_FILES([external/ours/library/localization/Makefile])
AC_CONFIG_FILES([external/ours/library/localizationArchive/Makefile])
AC_CONFIG_FILES([external/ours/library/unicode/Makefile])
AC_CONFIG_FILES([external/ours/application/Makefile])
AC_CONFIG_FILES([external/ours/application/LocalizationToolCon/Makefile])
AC_CONFIG_FILES([external/ours/application/LocalizationToolCon/src/Makefile])
AC_CONFIG_FILES([external/ours/application/LocalizationToolCon/src/shared/Makefile])
AC_CONFIG_FILES([external/3rd/Makefile])
AC_CONFIG_FILES([external/3rd/library/Makefile])
AC_CONFIG_FILES([external/3rd/library/platform/Makefile])
AC_CONFIG_FILES([external/3rd/library/platform/MonAPI2/Makefile])
AC_CONFIG_FILES([test/Makefile])
AC_OUTPUT
-5
View File
@@ -1,5 +0,0 @@
AUTOMAKE_OPTIONS=foreign
SUBDIRS=shared server .
include $(engine_dir)/../make_include/engine.include
-13
View File
@@ -1,13 +0,0 @@
#!/bin/sh
if ! test -d config; then
mkdir config;
fi
aclocal && libtoolize --force && automake --force --foreign --add-missing --copy && autoconf
SUBDIRS=
for d in $SUBDIRS; do
cd $d && ./bootstrap && cd ..
done
-198
View File
@@ -1,198 +0,0 @@
###############################################################################
#
# Master Makefile for Engine
#
# This file invokes the makefiles for specific engine projects as needed.
#
# Organization:
# Targets
# Definitions and includes
# Application build rules (all applications build required libs implicitly)
# Special targets (e.g. clean, publish, dependcheck)
#
# Typically used targets:
# make engine_debug Builds the debug version of all libs/applications
# make engine_release Builds the release version of all libs/applications
# make noGameServer_<debug/release> Builds everything except the SwgGameServer and
# SwgDatabaseServer procs. (libgameServer.a is
# enormous, so excluding it is sometimes a good
# idea, if you do not really need to rebuild it.)
# make <servername> Builds a server process and any libraries needed by that process.
# e.g. make GameServer_d
###############################################################################
noGameServer_debug: CentralServer_d \
ConnectionServer_d \
LoginServer_d \
ServerConsole_d \
PlanetServer_d \
TaskManager_d \
ChatServer_d \
LogServer_d \
MetricsServer_d \
LoginPing_d \
CustomerServiceServer_d \
CommoditiesServer_d \
noGameServer_release: CentralServer_r \
ConnectionServer_r \
LoginServer_r \
ServerConsole_r \
PlanetServer_r \
TaskManager_r \
ChatServer_r \
LogServer_r \
MetricsServer_r \
LoginPing_r \
CustomerServiceServer_r \
CommoditiesServer_r \
engine_debug: noGameServer_debug \
engine_release: noGameServer_release \
SwgGameServer_r \
SwgDatabaseServer_r \
###############################################################################
# Definitions and includes
###############################################################################
SRCDIR =../../..
SERVER_ENGINE_DIR =$(SRCDIR)/engine/server/application
SHARED_ENGINE_DIR =$(SRCDIR)/engine/shared/application
SERVER_GAME_DIR =$(SRCDIR)/game/server/application
###############################################################################
# Rules to invoke the makefiles for specific applications
###############################################################################
debug_libs:
+@make -C $(SERVER_ENGINE_DIR)/PhonyApp/build/linux debug
CentralServer_d:
+@make -C $(SERVER_ENGINE_DIR)/CentralServer/build/linux debug
CentralServer_r:
+@make -C $(SERVER_ENGINE_DIR)/CentralServer/build/linux release
ConnectionServer_d:
+@make -C $(SERVER_ENGINE_DIR)/ConnectionServer/build/linux debug
ConnectionServer_r:
+@make -C $(SERVER_ENGINE_DIR)/ConnectionServer/build/linux release
LoginServer_d:
+@make -C $(SERVER_ENGINE_DIR)/LoginServer/build/linux debug
LoginServer_r:
+@make -C $(SERVER_ENGINE_DIR)/LoginServer/build/linux release
ServerConsole_d:
+@make -C $(SERVER_ENGINE_DIR)/ServerConsole/build/linux debug
ServerConsole_r:
+@make -C $(SERVER_ENGINE_DIR)/ServerConsole/build/linux release
PlanetServer_d:
+@make -C $(SERVER_ENGINE_DIR)/PlanetServer/build/linux debug
PlanetServer_r:
+@make -C $(SERVER_ENGINE_DIR)/PlanetServer/build/linux release
TaskManager_d:
+@make -C $(SERVER_ENGINE_DIR)/TaskManager/build/linux debug
TaskManager_r:
+@make -C $(SERVER_ENGINE_DIR)/TaskManager/build/linux release
ChatServer_d:
+@make -C $(SERVER_ENGINE_DIR)/ChatServer/build/linux debug
ChatServer_r:
+@make -C $(SERVER_ENGINE_DIR)/ChatServer/build/linux release
CustomerServiceServer_d:
+@make -C $(SERVER_ENGINE_DIR)/CustomerServiceServer/build/linux debug
CustomerServiceServer_r:
+@make -C $(SERVER_ENGINE_DIR)/CustomerServiceServer/build/linux release
LoginPing_d:
+@make -C $(SERVER_ENGINE_DIR)/LoginPing/build/linux debug
LoginPing_r:
+@make -C $(SERVER_ENGINE_DIR)/LoginPing/build/linux release
MetricsServer_d:
+@make -C $(SERVER_ENGINE_DIR)/MetricsServer/build/linux debug
MetricsServer_r:
+@make -C $(SERVER_ENGINE_DIR)/MetricsServer/build/linux release
LogServer_d:
+@make -C $(SERVER_ENGINE_DIR)/LogServer/build/linux debug
LogServer_r:
+@make -C $(SERVER_ENGINE_DIR)/LogServer/build/linux release
TemplateCompiler_d:
+@make -C $(SHARED_ENGINE_DIR)/TemplateCompiler/build/linux debug
TemplateCompiler_r:
+@make -C $(SHARED_ENGINE_DIR)/TemplateCompiler/build/linux release
DataTableTool_d:
+@make -C $(SHARED_ENGINE_DIR)/DataTableTool/build/linux debug
DataTableTool_r:
+@make -C $(SHARED_ENGINE_DIR)/DataTableTool/build/linux release
GameServer_d:
+@make -C $(SERVER_ENGINE_DIR)/GameServer/build/linux debug
GameServer_r:
+@make -C $(SERVER_ENGINE_DIR)/GameServer/build/linux release
CommoditiesServer_d:
@echo " BOGUS CommoditiesServer_d rule, ignoring..."
# [ ! -f $(SRCDIR)/../dev/linux/CommoditiesServer_d ] || \
# chmod u+w $(SRCDIR)/../dev/linux/CommoditiesServer_d
# cp $(SRCDIR)/../exe/linux/CommoditiesServer_d $(SRCDIR)/../dev/linux
CommoditiesServer_r:
[ ! -f $(SRCDIR)/../dev/linux/CommoditiesServer_r ] || \
chmod u+w $(SRCDIR)/../dev/linux/CommoditiesServer_r
cp $(SRCDIR)/../exe/linux/CommoditiesServer_r $(SRCDIR)/../dev/linux
###############################################################################
# Special targets
###############################################################################
clean:
+@make -C $(SERVER_ENGINE_DIR)/LoginServer/build/linux clean
+@make -C $(SERVER_ENGINE_DIR)/ServerConsole/build/linux clean
+@make -C $(SERVER_ENGINE_DIR)/CentralServer/build/linux clean
+@make -C $(SERVER_GAME_DIR)/SwgGameServer/build/linux clean
+@make -C $(SERVER_GAME_DIR)/SwgDatabaseServer/build/linux clean
+@make -C $(SERVER_ENGINE_DIR)/ConnectionServer/build/linux clean
+@make -C $(SERVER_ENGINE_DIR)/TaskManager/build/linux clean
+@make -C $(SERVER_ENGINE_DIR)/PlanetServer/build/linux clean
+@make -C $(SERVER_ENGINE_DIR)/ChatServer/build/linux clean
+@make -C $(SERVER_ENGINE_DIR)/CustomerServiceServer/build/linux clean
+@make -C $(SERVER_ENGINE_DIR)/LogServer/build/linux clean
+@make -C $(SERVER_ENGINE_DIR)/MetricsServer/build/linux clean
+@make -C $(SERVER_ENGINE_DIR)/LoginPing/build/linux clean
lint:
+@make -C $(SERVER_ENGINE_DIR)/LoginServer/build/linux lint
+@make -C $(SERVER_ENGINE_DIR)/ServerConsole/build/linux lint
+@make -C $(SERVER_ENGINE_DIR)/CentralServer/build/linux lint
+@make -C $(SERVER_ENGINE_DIR)/SwgGameServer/build/linux lint
+@make -C $(SERVER_ENGINE_DIR)/SwgDatabaseServer/build/linux lint
+@make -C $(SERVER_ENGINE_DIR)/ConnectionServer/build/linux lint
+@make -C $(SERVER_ENGINE_DIR)/TaskManager/build/linux lint
+@make -C $(SERVER_ENGINE_DIR)/PlanetServer/build/linux lint
+@make -C $(SERVER_ENGINE_DIR)/ChatServer/build/linux lint
+@make -C $(SERVER_ENGINE_DIR)/LogServer/build/linux lint
@@ -925,10 +925,6 @@
<Project>{eaa23f07-4419-4aed-83d2-06654119b6f6}</Project>
<ReferenceOutputAssembly>false</ReferenceOutputAssembly>
</ProjectReference>
<ProjectReference Include="..\..\..\..\..\..\game\server\library\swgServerNetworkMessages\build\win32\swgServerNetworkMessages.vcxproj">
<Project>{950e9cf2-cd44-476c-826a-bb7869241f5b}</Project>
<ReferenceOutputAssembly>false</ReferenceOutputAssembly>
</ProjectReference>
<ProjectReference Include="..\..\..\..\..\..\game\shared\library\swgSharedNetworkMessages\build\win32\swgSharedNetworkMessages.vcxproj">
<Project>{fcc0f2b5-aade-4454-aff2-4d91365b4883}</Project>
<ReferenceOutputAssembly>false</ReferenceOutputAssembly>
@@ -345,10 +345,6 @@
<Project>{eaa23f07-4419-4aed-83d2-06654119b6f6}</Project>
<ReferenceOutputAssembly>false</ReferenceOutputAssembly>
</ProjectReference>
<ProjectReference Include="..\..\..\..\..\..\game\server\library\swgServerNetworkMessages\build\win32\swgServerNetworkMessages.vcxproj">
<Project>{950e9cf2-cd44-476c-826a-bb7869241f5b}</Project>
<ReferenceOutputAssembly>false</ReferenceOutputAssembly>
</ProjectReference>
<ProjectReference Include="..\..\..\..\..\..\game\shared\library\swgSharedNetworkMessages\build\win32\swgSharedNetworkMessages.vcxproj">
<Project>{fcc0f2b5-aade-4454-aff2-4d91365b4883}</Project>
<ReferenceOutputAssembly>false</ReferenceOutputAssembly>
@@ -392,10 +392,6 @@
<Project>{b97963ef-49e4-477e-85ff-e7fee7c626d7}</Project>
<ReferenceOutputAssembly>false</ReferenceOutputAssembly>
</ProjectReference>
<ProjectReference Include="..\..\..\..\..\..\game\server\library\swgServerNetworkMessages\build\win32\swgServerNetworkMessages.vcxproj">
<Project>{950e9cf2-cd44-476c-826a-bb7869241f5b}</Project>
<ReferenceOutputAssembly>false</ReferenceOutputAssembly>
</ProjectReference>
<ProjectReference Include="..\..\..\..\..\..\game\shared\library\swgSharedNetworkMessages\build\win32\swgSharedNetworkMessages.vcxproj">
<Project>{fcc0f2b5-aade-4454-aff2-4d91365b4883}</Project>
<ReferenceOutputAssembly>false</ReferenceOutputAssembly>
@@ -1,76 +0,0 @@
# Experimental makefile for Miff-Unix
INCLUDE_DIRS = \
-I../../../../../shared/library/sharedCompression/include/public \
-I../../../../../shared/library/sharedDebug/include/public \
-I../../../../../shared/library/sharedFile/include/public \
-I../../../../../shared/library/sharedFoundation/include/public \
-I../../../../../shared/library/sharedFoundationTypes/include/public \
-I../../../../../shared/library/sharedMemoryManager/include/public \
-I../../../../../shared/library/sharedThread/include/public \
-I../../../../../../external/3rd/library/stlport453/stlport \
-I../../../../../../external/ours/library/fileInterface/include/public
GPP_FLAGS = -g -Wall -Wno-unused -Wno-unknown-pragmas -Werror -Wno-ctor-dtor-privacy -D_DEBUG -D__STL_NO_BAD_ALLOC -DLINUX $(INCLUDE_DIRS) # Always builds with debugging info
GCC_FLAGS = -w #no warnings for code generated by yacc -- it's not our fault
LIBS = \
../../../../../../compile/linux/sharedCompression/debug/libsharedCompression_d.a \
../../../../../../compile/linux/sharedDebug/debug/libsharedDebug_d.a \
../../../../../../compile/linux/sharedFile/debug/libsharedFile_d.a \
../../../../../../compile/linux/sharedFoundation/debug/libsharedFoundation_d.a \
../../../../../../compile/linux/sharedMath/debug/libsharedMath_d.a \
../../../../../../compile/linux/sharedMemoryManager/debug/libsharedMemoryManager_d.a \
../../../../../../compile/linux/sharedRandom/debug/libsharedRandom_d.a \
../../../../../../compile/linux/sharedSynchronization/debug/libsharedSynchronization_d.a \
../../../../../../compile/linux/sharedThread/debug/libsharedThread_d.a \
../../../../../../external/3rd/library/stlport453/lib/libstlport_gcc.a \
../../../../../../external/ours/library/fileInterface/build/linux/output/debug/libfileInterface.a \
../../../../../../external/ours/library/archive/build/linux/output/debug/libarchive.a \
../../../../../../external/ours/library/unicode/compile/linux/Debug/libunicode.a \
../../../../../../external/ours/library/unicodeArchive/build/linux/output/debug/libunicodeArchive.a \
../../../../../../external/ours/library/localization/compile/linux/Debug/libLocalization.a \
../../../../../../external/ours/library/localizationArchive/compile/linux/Debug/libLocalizationArchive.a \
-lncurses -lz -ldl
SRCDIR = ../../src/linux
OBJDIR = ../../src/linux
OBJS = $(addprefix $(OBJDIR)/, lex_yy.o parser.o miff.o InputFileHandler.o OutputFileHandler.o)
miff: $(OBJS) $(LIBS)
g++ $(OBJS) $(LIBS) -lpthread -g -o miff
$(OBJDIR)/lex_yy.o: $(SRCDIR)/lex_yy.c $(SRCDIR)/parser.h
gcc $(GCC_FLAGS) $(SRCDIR)/lex_yy.c -c -g -o $(OBJDIR)/lex_yy.o
$(OBJDIR)/parser.o: $(SRCDIR)/parser.c $(SRCDIR)/parser.h
gcc $(GCC_FLAGS) $(SRCDIR)/parser.c -c -g -o $(OBJDIR)/parser.o
$(OBJDIR)/miff.o: $(SRCDIR)/miff.cpp
g++ $(GPP_FLAGS) $(SRCDIR)/miff.cpp -c -g -o $(OBJDIR)/miff.o
$(OBJDIR)/InputFileHandler.o: $(SRCDIR)/InputFileHandler.cpp
g++ $(GPP_FLAGS) $(SRCDIR)/InputFileHandler.cpp -c -g -o $(OBJDIR)/InputFileHandler.o
$(OBJDIR)/OutputFileHandler.o: $(SRCDIR)/OutputFileHandler.cpp
g++ $(GPP_FLAGS) $(SRCDIR)/OutputFileHandler.cpp -c -g -o $(OBJDIR)/OutputFileHandler.o
$(SRCDIR)/lex_yy.c: $(SRCDIR)/parser.lex
flex -w -o$(SRCDIR)/lex_yy.c $(SRCDIR)/parser.lex
$(SRCDIR)/parser.c $(SRCDIR)/parser.h: $(SRCDIR)/parser.yac
bison -d -o$(SRCDIR)/parser.c $(SRCDIR)/parser.yac
clean:
rm -f $(OBJS) $(SRCDIR)/parser.c $(SRCDIR)/parser.h $(SRCDIR)/lex_yy.c .depend
include .depend
.depend:
@echo Generating dependencies for miff
@touch .depend
@g++ -MM $(GPP_FLAGS) $(INCLUDE_DIRS) $(SRCDIR)/miff.cpp -c -g >> .depend
@g++ -MM $(GPP_FLAGS) $(INCLUDE_DIRS) $(SRCDIR)/InputFileHandler.cpp -c -g >> .depend
@g++ -MM $(GPP_FLAGS) $(INCLUDE_DIRS) $(SRCDIR)/OutputFileHandler.cpp -c -g >> .depend
@@ -693,10 +693,6 @@
<Project>{b97963ef-49e4-477e-85ff-e7fee7c626d7}</Project>
<ReferenceOutputAssembly>false</ReferenceOutputAssembly>
</ProjectReference>
<ProjectReference Include="..\..\..\..\..\..\game\server\library\swgServerNetworkMessages\build\win32\swgServerNetworkMessages.vcxproj">
<Project>{950e9cf2-cd44-476c-826a-bb7869241f5b}</Project>
<ReferenceOutputAssembly>false</ReferenceOutputAssembly>
</ProjectReference>
<ProjectReference Include="..\..\..\..\..\..\game\shared\library\swgSharedNetworkMessages\build\win32\swgSharedNetworkMessages.vcxproj">
<Project>{fcc0f2b5-aade-4454-aff2-4d91365b4883}</Project>
<ReferenceOutputAssembly>false</ReferenceOutputAssembly>
@@ -1267,10 +1267,6 @@
<Project>{eaa23f07-4419-4aed-83d2-06654119b6f6}</Project>
<ReferenceOutputAssembly>false</ReferenceOutputAssembly>
</ProjectReference>
<ProjectReference Include="..\..\..\..\..\..\game\server\library\swgServerNetworkMessages\build\win32\swgServerNetworkMessages.vcxproj">
<Project>{950e9cf2-cd44-476c-826a-bb7869241f5b}</Project>
<ReferenceOutputAssembly>false</ReferenceOutputAssembly>
</ProjectReference>
<ProjectReference Include="..\..\..\..\..\..\game\shared\library\swgSharedNetworkMessages\build\win32\swgSharedNetworkMessages.vcxproj">
<Project>{fcc0f2b5-aade-4454-aff2-4d91365b4883}</Project>
<ReferenceOutputAssembly>false</ReferenceOutputAssembly>
@@ -1,57 +0,0 @@
DEBUG_PLATFORM_CPP_FLAGS =-DLINUX -D_REENTRANT -D_XOPEN_SOURCE=500 -D_GNU_SOURCE -DTRUE=TRUE $(PERSONAL_FLAGS)
DEBUG_PLATFORM_CPP_FLAGS =-DLINUX -D_REENTRANT -D_XOPEN_SOURCE=500 -D_GNU_SOURCE -DTRUE=TRUE $(PERSONAL_FLAGS)
include ../../../../../build/linux/platformDefs.mak
include ../../../../../build/shared_unix/defs.mak
OUTPUT = remoteDebugTool
DEBUG_LINK_FLAGS += -lpthread -lodbc -L/usr/lib/qt-3.0.3/lib -lqui -ldl
RELEASE_LINK_FLAGS += -lpthread -lodbc -L/usr/lib/qt-3.0.3/lib -lqui -ldl
INCLUDE_DIRS = \
../../src/shared \
../../include/private \
../../include/public \
$(ARCHIVE_INCLUDE_PATH) \
$(DEBUG_INCLUDE_PATH) \
$(FILE_INCLUDE_PATH) \
$(FOUNDATION_INCLUDE_PATH) \
$(FOUNDATION_TYPES_INCLUDE_PATH) \
$(SYNCHRONIZATION_INCLUDE_PATH) \
$(THREAD_INCLUDE_PATH) \
$(UTILITY_INCLUDE_PATH) \
$(SHARED_NETWORK_INCLUDE_PATH) \
$(CLIENT_REMOTE_DEBUG_INCLUDE_PATH) \
$(STL_INCLUDE_PATH) \
$(COMMON_ENGINE_LIBRARY_INCLUDES) \
/usr/lib/qt-3.0.3/include \
DEBUG_LINK_LIBRARIES = \
$(CLIENT_REMOTE_DEBUG_DEBUG_LIB) \
$(COMMON_ENGINE_DEBUG_LIBS) \
$(UNICODE_DEBUG_LIB)
DEBUG_SHARED_LIBRARIES = \
RELEASE_LINK_LIBRARIES = \
$(CLIENT_REMOTE_DEBUG_RELEASE_LIB) \
$(COMMON_ENGINE_RELEASE_LIBS) \
$(UNICODE_RELEASE_LIB)
RELEASE_SHARED_LIBRARIES = \
SHARED_SRC_LIST = $(shell find $$PWD/../../src/shared -name "*.cpp")
PLATFORM_SRC_LIST =
SRC_LIST = $(SHARED_SRC_LIST) $(PLATFORM_SRC_LIST)
debug_custom_step:
release_custom_step:
depend_custom_step:
%.moc: %.h
moc -o $@ $<
include ../../../../../build/shared_unix/application.mak
@@ -1,3 +0,0 @@
PLATFORM =linux
include ../shared_unix/shared_unix.mak
-414
View File
@@ -1,414 +0,0 @@
AC_PREREQ(2.53)
AC_INIT(engine, 1.0.0, [email protected])
AC_CONFIG_AUX_DIR(config)
AC_CANONICAL_BUILD
AC_CANONICAL_HOST
AC_CANONICAL_TARGET
AC_ARG_ENABLE([debug], AC_HELP_STRING([--enable-debug\[=yes\|no\] ], [defines _DEBUG and enables debugging features]), AC_DEFINE(_DEBUG) CXXFLAGS="$CXXFLAGS -g", [])
# todo - when using gcc-3, pick more optimizations for use
AC_ARG_ENABLE([optimized], AC_HELP_STRING([--enable-optimized\[=yes\|no\] ], [enables optimizations]), CXXFLAGS="$CXXFLAGS -O2", [])
case $target in
*-linux-*)
platform=[linux];
AC_DEFINE(LINUX)
AC_DEFINE(_REENTRANT)
AC_DEFINE(_XOPEN_SOURCE, 500)
AC_DEFINE(_GNU_SOURCE)
AC_DEFINE(linux)
AC_DEFINE(_GNU_SOURCE)
AC_DEFINE(_USING_STL)
AC_DEFINE(__STL_NO_BAD_ALLOC)
esac
AC_SUBST(platform)
AM_INIT_AUTOMAKE
AC_PROG_LIBTOOL
AC_PROG_CXX
AC_PROG_CC
# setup common CXXFLAGS if none were specified in the environment
#if ! test $CXXFLAGS; then
# CXXFLAGS = -g -Wall -Wno-unused -Werror -Wno-ctor-dtor-privacy -Wno-unknown-pragmas -Wchar-subscripts -Wformat -Wimplicit -Wmultichar -Wparentheses -Wreturn-type -Wswitch -Weffc++
#fi
AC_DEFUN([REQUIRE_PACKAGE], [if ! test $$3; then AC_ARG_WITH([$1], AC_HELP_STRING([--with-$1=path/to/$1], [where to find $1]), AC_SUBST($3, $withval), AC_SUBST($3, $2)) AC_CHECK_FILE($4, [], AC_MSG_ERROR([$1 is required but was not found in $$3])) fi])
REQUIRE_PACKAGE(engine, [`pwd`], engine_dir, [$engine_dir/shared/library/sharedFoundation/include/public/sharedFoundation/FirstSharedFoundation.h]) AC_SUBST(engine_dir)
REQUIRE_PACKAGE(stlport, [`pwd`/../external/3rd/library/stlport453], stlport_dir, [$stlport_dir/stlport/algorithm]) AC_SUBST(stlport_dir)
REQUIRE_PACKAGE(archive, [`pwd`/../external/ours/library/archive], archive_dir, [$archive_dir/include/Archive/Archive.h]) AC_SUBST(archive_dir)
REQUIRE_PACKAGE(localization, [`pwd`/../external/ours/library/localization], localization_dir, [$localization_dir/include/FirstLocalization.h]) AC_SUBST(localization_dir)
REQUIRE_PACKAGE(crypto, [`pwd`/../external/ours/library/crypto], crypto_dir, [$crypto_dir/include/FirstCrypto.h]) AC_SUBST(crypto_dir)
REQUIRE_PACKAGE(localizationArchive, [`pwd`/../external/ours/library/localizationArchive], localizationArchive_dir, [$localizationArchive_dir/include/public/localizationArchive/FirstLocalizationArchive.h]) AC_SUBST(localizationArchive_dir)
REQUIRE_PACKAGE(fileInterface, [`pwd`/../external/ours/library/fileInterface], fileInterface_dir, [$fileInterface_dir/include/public/fileInterface/FirstFileInterface.h]) AC_SUBST(fileInterface_dir)
REQUIRE_PACKAGE(unicode, [`pwd`/../external/ours/library/unicode], unicode_dir, [$unicode_dir/include/Unicode.h]) AC_SUBST(unicode_dir)
REQUIRE_PACKAGE(unicodeArchive, [`pwd`/../external/ours/library/unicodeArchive], unicodeArchive_dir, [$unicodeArchive_dir/include/public/unicodeArchive/FirstUnicodeArchive.h]) AC_SUBST(unicodeArchive_dir)
REQUIRE_PACKAGE(udplibrary, [`pwd`/../external/3rd/library/udplibrary], udplibrary_dir, [$udplibrary_dir/UdpLibrary.hpp]) AC_SUBST(udplibrary_dir)
REQUIRE_PACKAGE(oracle, [`pwd`/../external/3rd/library/oracle], oracle_dir, [$oracle_dir/include/oci.h]) AC_SUBST(oracle_dir)
REQUIRE_PACKAGE(libxml, [`pwd`/../external/3rd/library/libxml], libxml_dir, [$libxml_dir/libxml.h]) AC_SUBST(libxml_dir)
AC_MSG_WARN([engine has a forward dependency on game])
REQUIRE_PACKAGE(game, [`pwd`/../game], game_dir, [$game_dir/shared/library/swgSharedUtility/include/public/swgSharedUtility/FirstSwgSharedUtility.h]) AC_SUBST(game_dir)
REQUIRE_PACKAGE(singleton, [`pwd`/../external/ours/library/singleton], singleton_dir, [$singleton_dir/include/Singleton/Singleton.h]) AC_SUBST(singleton_dir)
REQUIRE_PACKAGE(boost, [`pwd`/../external/3rd/library/boost], boost_dir, [$boost_dir/boost/smart_ptr.hpp]) AC_SUBST(boost_dir)
REQUIRE_PACKAGE(pcre, [`pwd`/../external/3rd/library/pcre/4.1/$platform], pcre_dir, [$pcre_dir/include/pcre/pcre.h]) AC_SUBST(pcre_dir)
REQUIRE_PACKAGE(perforce, [`pwd`/../external/3rd/library/perforce], perforce_dir, [$perforce_dir/include/clientapi.h]) AC_SUBST(perforce_dir)
REQUIRE_PACKAGE(soePlatform, [`pwd`/../external/3rd/library/soePlatform], soePlatform_dir, [$soePlatform_dir/Base/Base.h]) AC_SUBST(soePlatform_dir)
REQUIRE_PACKAGE(platform, [`pwd`/../external/3rd/library/platform], platform_dir, [$platform_dir/MonAPI2/MonitorAPI.h]) AC_SUBST(platform_dir)
# AC_DEFUN([ENGINE_AUTOMAKE], [AC_MSG_NOTICE([creating $1.in]) ; automake $1])
# ENGINE_AUTOMAKE($engine_dir/shared/library/sharedDebug/src/$platform/Makefile)
# ENGINE_AUTOMAKE($engine_dir/shared/library/sharedFile/src/$platform/Makefile)
# ENGINE_AUTOMAKE($engine_dir/shared/library/sharedFoundation/src/$platform/Makefile)
# ENGINE_AUTOMAKE($engine_dir/shared/library/sharedRegex/src/$platform/Makefile)
# ENGINE_AUTOMAKE($engine_dir/shared/library/sharedLog/src/$platform/Makefile)
# ENGINE_AUTOMAKE($engine_dir/shared/library/sharedMemoryManager/src/$platform/Makefile)
# ENGINE_AUTOMAKE($engine_dir/shared/library/sharedNetwork/src/$platform/Makefile)
# ENGINE_AUTOMAKE($engine_dir/shared/library/sharedSynchronization/src/$platform/Makefile)
# ENGINE_AUTOMAKE($engine_dir/shared/library/sharedThread/src/$platform/Makefile)
# ENGINE_AUTOMAKE($engine_dir/shared/application/TemplateCompiler/src/$platform/Makefile)
# ENGINE_AUTOMAKE($engine_dir/shared/application/ArmorExporterTool/src/$platform/Makefile)
# ENGINE_AUTOMAKE($engine_dir/shared/application/DataTableTool/src/$platform/Makefile)
# ENGINE_AUTOMAKE($engine_dir/shared/application/TemplateDefinitionCompiler/src/$platform/Makefile)
# ENGINE_AUTOMAKE($engine_dir/shared/application/WeaponExporterTool/src/$platform/Makefile)
# ENGINE_AUTOMAKE($engine_dir/shared/application/CoreWeaponExporterTool/src/$platform/Makefile)
# ENGINE_AUTOMAKE($engine_dir/server/application/CentralServer/src/$platform/Makefile)
# ENGINE_AUTOMAKE($engine_dir/server/application/ChatServer/src/$platform/Makefile)
# ENGINE_AUTOMAKE($engine_dir/server/application/ConnectionServer/src/$platform/Makefile)
# ENGINE_AUTOMAKE($engine_dir/server/application/CustomerServiceServer/src/$platform/Makefile)
# ENGINE_AUTOMAKE($engine_dir/server/application/LoginPing/src/$platform/Makefile)
# ENGINE_AUTOMAKE($engine_dir/server/application/LoginServer/src/$platform/Makefile)
# ENGINE_AUTOMAKE($engine_dir/server/application/LogServer/src/$platform/Makefile)
# ENGINE_AUTOMAKE($engine_dir/server/application/MetricsServer/src/$platform/Makefile)
# ENGINE_AUTOMAKE($engine_dir/server/application/PlanetServer/src/$platform/Makefile)
# ENGINE_AUTOMAKE($engine_dir/server/application/TaskManager/src/$platform/Makefile)
# ENGINE_AUTOMAKE($engine_dir/server/application/TransferServer/src/$platform/Makefile)
# ENGINE_AUTOMAKE($engine_dir/server/library/serverUtility/src/$platform/Makefile)
AC_OUTPUT(Makefile \
shared/Makefile \
shared/library/Makefile \
shared/library/sharedCollision/Makefile \
shared/library/sharedCollision/src/Makefile \
shared/library/sharedCollision/src/shared/Makefile \
shared/library/sharedCollision/src/shared/core/Makefile \
shared/library/sharedCollision/src/shared/extent/Makefile \
shared/library/sharedCompression/Makefile \
shared/library/sharedCompression/src/Makefile \
shared/library/sharedCompression/src/shared/Makefile \
shared/library/sharedCommandParser/Makefile \
shared/library/sharedCommandParser/src/Makefile \
shared/library/sharedCommandParser/src/shared/Makefile \
shared/library/sharedDatabaseInterface/Makefile \
shared/library/sharedDatabaseInterface/src/Makefile \
shared/library/sharedDatabaseInterface/src/shared/Makefile \
shared/library/sharedDatabaseInterface/src/shared/core/Makefile \
shared/library/sharedDatabaseInterface/src/shared/logger/Makefile \
shared/library/sharedDatabaseInterface/src/shared/queue/Makefile \
shared/library/sharedDatabaseInterface/src_oci/Makefile \
shared/library/sharedDebug/Makefile \
shared/library/sharedDebug/src/Makefile \
shared/library/sharedDebug/src/shared/Makefile \
shared/library/sharedDebug/src/linux/Makefile \
shared/library/sharedFile/Makefile \
shared/library/sharedFile/src/Makefile \
shared/library/sharedFile/src/shared/Makefile \
shared/library/sharedFile/src/linux/Makefile \
shared/library/sharedFoundation/Makefile \
shared/library/sharedFoundation/src/Makefile \
shared/library/sharedFoundation/src/linux/Makefile \
shared/library/sharedFoundation/src/shared/Makefile \
shared/library/sharedFoundation/src/shared/dynamicVariable/Makefile \
shared/library/sharedFractal/Makefile \
shared/library/sharedFractal/src/Makefile \
shared/library/sharedFractal/src/shared/Makefile \
shared/library/sharedGame/Makefile \
shared/library/sharedGame/src/Makefile \
shared/library/sharedGame/src/shared/Makefile \
shared/library/sharedGame/src/shared/appearance/Makefile \
shared/library/sharedGame/src/shared/collision/Makefile \
shared/library/sharedGame/src/shared/combat/Makefile \
shared/library/sharedGame/src/shared/command/Makefile \
shared/library/sharedGame/src/shared/core/Makefile \
shared/library/sharedGame/src/shared/dynamics/Makefile \
shared/library/sharedGame/src/shared/mount/Makefile \
shared/library/sharedGame/src/shared/object/Makefile \
shared/library/sharedGame/src/shared/objectTemplate/Makefile \
shared/library/sharedGame/src/shared/quest/Makefile \
shared/library/sharedGame/src/shared/space/Makefile \
shared/library/sharedGame/src/shared/sui/Makefile \
shared/library/sharedGame/src/shared/travel/Makefile \
shared/library/sharedImage/Makefile \
shared/library/sharedImage/src/Makefile \
shared/library/sharedImage/src/shared/Makefile \
shared/library/sharedInputMap/Makefile \
shared/library/sharedInputMap/src/Makefile \
shared/library/sharedInputMap/src/shared/Makefile \
shared/library/sharedIoWin/Makefile \
shared/library/sharedIoWin/src/Makefile \
shared/library/sharedIoWin/src/shared/Makefile \
shared/library/sharedLog/Makefile \
shared/library/sharedLog/src/Makefile \
shared/library/sharedLog/src/shared/Makefile \
shared/library/sharedLog/src/linux/Makefile \
shared/library/sharedMath/Makefile \
shared/library/sharedMath/src/Makefile \
shared/library/sharedMath/src/shared/Makefile \
shared/library/sharedMath/src/shared/core/Makefile \
shared/library/sharedMath/src/shared/debug/Makefile \
shared/library/sharedMemoryManager/Makefile \
shared/library/sharedMemoryManager/src/Makefile \
shared/library/sharedMemoryManager/src/linux/Makefile \
shared/library/sharedMemoryManager/src/shared/Makefile \
shared/library/sharedMessageDispatch/Makefile \
shared/library/sharedMessageDispatch/src/Makefile \
shared/library/sharedMessageDispatch/src/shared/Makefile \
shared/library/sharedNetwork/Makefile \
shared/library/sharedNetwork/src/Makefile \
shared/library/sharedNetwork/src/linux/Makefile \
shared/library/sharedNetwork/src/shared/Makefile \
shared/library/sharedNetwork/src/shared/UdpLibraryMT/Makefile \
shared/library/sharedNetworkMessages/Makefile \
shared/library/sharedNetworkMessages/src/Makefile \
shared/library/sharedNetworkMessages/src/shared/Makefile \
shared/library/sharedNetworkMessages/src/shared/chat/Makefile \
shared/library/sharedNetworkMessages/src/shared/clientGameServer/Makefile \
shared/library/sharedNetworkMessages/src/shared/clientLoginServer/Makefile \
shared/library/sharedNetworkMessages/src/shared/common/Makefile \
shared/library/sharedNetworkMessages/src/shared/core/Makefile \
shared/library/sharedNetworkMessages/src/shared/customerService/Makefile \
shared/library/sharedNetworkMessages/src/shared/planetWatch/Makefile \
shared/library/sharedNetworkMessages/src/shared/voicechat/Makefile \
shared/library/sharedObject/Makefile \
shared/library/sharedObject/src/Makefile \
shared/library/sharedObject/src/shared/Makefile \
shared/library/sharedObject/src/shared/appearance/Makefile \
shared/library/sharedObject/src/shared/container/Makefile \
shared/library/sharedObject/src/shared/controller/Makefile \
shared/library/sharedObject/src/shared/core/Makefile \
shared/library/sharedObject/src/shared/customization/Makefile \
shared/library/sharedObject/src/shared/dynamics/Makefile \
shared/library/sharedObject/src/shared/lot/Makefile \
shared/library/sharedObject/src/shared/movement/Makefile \
shared/library/sharedObject/src/shared/object/Makefile \
shared/library/sharedObject/src/shared/portal/Makefile \
shared/library/sharedObject/src/shared/property/Makefile \
shared/library/sharedObject/src/shared/world/Makefile \
shared/library/sharedPathfinding/Makefile \
shared/library/sharedPathfinding/src/Makefile \
shared/library/sharedPathfinding/src/shared/Makefile \
shared/library/sharedRandom/Makefile \
shared/library/sharedRandom/src/Makefile \
shared/library/sharedRandom/src/shared/Makefile \
shared/library/sharedRegex/Makefile \
shared/library/sharedRegex/src/Makefile \
shared/library/sharedRegex/src/linux/Makefile \
shared/library/sharedRegex/src/shared/Makefile \
shared/library/sharedRemoteDebugServer/Makefile \
shared/library/sharedRemoteDebugServer/src/Makefile \
shared/library/sharedRemoteDebugServer/src/shared/Makefile \
shared/library/sharedSkillSystem/Makefile \
shared/library/sharedSkillSystem/src/Makefile \
shared/library/sharedSkillSystem/src/shared/Makefile \
shared/library/sharedSwitcher/Makefile \
shared/library/sharedSwitcher/src/Makefile \
shared/library/sharedSwitcher/src/shared/Makefile \
shared/library/sharedSynchronization/Makefile \
shared/library/sharedSynchronization/src/Makefile \
shared/library/sharedSynchronization/src/linux/Makefile \
shared/library/sharedSynchronization/src/shared/Makefile \
shared/library/sharedTemplate/Makefile \
shared/library/sharedTemplate/src/Makefile \
shared/library/sharedTemplate/src/shared/Makefile \
shared/library/sharedTemplate/src/shared/core/Makefile \
shared/library/sharedTemplate/src/shared/template/Makefile \
shared/library/sharedTemplateDefinition/Makefile \
shared/library/sharedTemplateDefinition/src/Makefile \
shared/library/sharedTemplateDefinition/src/shared/Makefile \
shared/library/sharedTemplateDefinition/src/shared/core/Makefile \
shared/library/sharedTerrain/Makefile \
shared/library/sharedTerrain/src/Makefile \
shared/library/sharedTerrain/src/shared/Makefile \
shared/library/sharedTerrain/src/shared/appearance/Makefile \
shared/library/sharedTerrain/src/shared/core/Makefile \
shared/library/sharedTerrain/src/shared/flora/Makefile \
shared/library/sharedTerrain/src/shared/generator/Makefile \
shared/library/sharedTerrain/src/shared/object/Makefile \
shared/library/sharedThread/Makefile \
shared/library/sharedThread/src/Makefile \
shared/library/sharedThread/src/linux/Makefile \
shared/library/sharedThread/src/shared/Makefile \
shared/library/sharedUtility/Makefile \
shared/library/sharedUtility/src/Makefile \
shared/library/sharedUtility/src/shared/Makefile \
shared/library/sharedXml/Makefile \
shared/library/sharedXml/src/Makefile \
shared/library/sharedXml/src/shared/Makefile \
shared/library/sharedXml/src/shared/core/Makefile \
shared/library/sharedXml/src/shared/tree/Makefile \
shared/application/Makefile \
shared/application/ArmorExporterTool/Makefile \
shared/application/ArmorExporterTool/src/Makefile \
shared/application/ArmorExporterTool/src/shared/Makefile \
shared/application/ArmorExporterTool/src/linux/Makefile \
shared/application/DataTableTool/Makefile \
shared/application/DataTableTool/src/Makefile \
shared/application/DataTableTool/src/shared/Makefile \
shared/application/DataTableTool/src/linux/Makefile \
shared/application/TemplateCompiler/Makefile \
shared/application/TemplateCompiler/src/Makefile \
shared/application/TemplateCompiler/src/shared/Makefile \
shared/application/TemplateCompiler/src/linux/Makefile \
shared/application/TemplateDefinitionCompiler/Makefile \
shared/application/TemplateDefinitionCompiler/src/Makefile \
shared/application/TemplateDefinitionCompiler/src/shared/Makefile \
shared/application/TemplateDefinitionCompiler/src/shared/core/Makefile \
shared/application/TemplateDefinitionCompiler/src/linux/Makefile \
shared/application/WeaponExporterTool/Makefile \
shared/application/WeaponExporterTool/src/Makefile \
shared/application/WeaponExporterTool/src/shared/Makefile \
shared/application/WeaponExporterTool/src/linux/Makefile \
shared/application/CoreWeaponExporterTool/Makefile \
shared/application/CoreWeaponExporterTool/src/Makefile \
shared/application/CoreWeaponExporterTool/src/shared/Makefile \
shared/application/CoreWeaponExporterTool/src/linux/Makefile \
server/Makefile \
server/library/Makefile \
server/library/serverBase/Makefile \
server/library/serverBase/src/Makefile \
server/library/serverBase/src/shared/Makefile \
server/library/serverBase/src/shared/core/Makefile \
server/library/serverDatabase/Makefile \
server/library/serverDatabase/src/Makefile \
server/library/serverDatabase/src/shared/Makefile \
server/library/serverGame/Makefile \
server/library/serverGame/src/Makefile \
server/library/serverGame/src/shared/Makefile \
server/library/serverGame/src/shared/ai/Makefile \
server/library/serverGame/src/shared/behavior/Makefile \
server/library/serverGame/src/shared/city/Makefile \
server/library/serverGame/src/shared/collision/Makefile \
server/library/serverGame/src/shared/command/Makefile \
server/library/serverGame/src/shared/commoditiesMarket/Makefile \
server/library/serverGame/src/shared/console/Makefile \
server/library/serverGame/src/shared/container/Makefile \
server/library/serverGame/src/shared/controller/Makefile \
server/library/serverGame/src/shared/core/Makefile \
server/library/serverGame/src/shared/generated/Makefile \
server/library/serverGame/src/shared/guild/Makefile \
server/library/serverGame/src/shared/metrics/Makefile \
server/library/serverGame/src/shared/network/Makefile \
server/library/serverGame/src/shared/object/Makefile \
server/library/serverGame/src/shared/objectTemplate/Makefile \
server/library/serverGame/src/shared/pvp/Makefile \
server/library/serverGame/src/shared/region/Makefile \
server/library/serverGame/src/shared/region3d/Makefile \
server/library/serverGame/src/shared/resource/Makefile \
server/library/serverGame/src/shared/space/Makefile \
server/library/serverGame/src/shared/stationplayers/Makefile \
server/library/serverGame/src/shared/synchronizedUi/Makefile \
server/library/serverGame/src/shared/trading/Makefile \
server/library/serverKeyShare/Makefile \
server/library/serverKeyShare/src/Makefile \
server/library/serverKeyShare/src/shared/Makefile \
server/library/serverMetrics/Makefile \
server/library/serverMetrics/src/Makefile \
server/library/serverMetrics/src/shared/Makefile \
server/library/serverUtility/Makefile \
server/library/serverUtility/src/Makefile \
server/library/serverUtility/src/linux/Makefile \
server/library/serverUtility/src/shared/Makefile \
server/library/serverNetworkMessages/Makefile \
server/library/serverNetworkMessages/src/Makefile \
server/library/serverNetworkMessages/src/shared/Makefile \
server/library/serverNetworkMessages/src/shared/centralConnectionServer/Makefile \
server/library/serverNetworkMessages/src/shared/centralGameServer/Makefile \
server/library/serverNetworkMessages/src/shared/centralPlanetServer/Makefile \
server/library/serverNetworkMessages/src/shared/centralTaskManager/Makefile \
server/library/serverNetworkMessages/src/shared/commoditiesSwgDatabase/Makefile \
server/library/serverNetworkMessages/src/shared/core/Makefile \
server/library/serverNetworkMessages/src/shared/gameCommoditiesServer/Makefile \
server/library/serverNetworkMessages/src/shared/gameConnectionServer/Makefile \
server/library/serverNetworkMessages/src/shared/gameGameServer/Makefile \
server/library/serverNetworkMessages/src/shared/gamePlanetServer/Makefile \
server/library/serverNetworkMessages/src/shared/gameStationPlayersCollector/Makefile \
server/library/serverNetworkMessages/src/shared/gameTaskManager/Makefile \
server/library/serverNetworkMessages/src/shared/loginCentralServer/Makefile \
server/library/serverNetworkMessages/src/shared/metricsMessages/Makefile \
server/library/serverNetworkMessages/src/shared/transferServer/Makefile \
server/library/serverPathfinding/Makefile \
server/library/serverPathfinding/src/Makefile \
server/library/serverPathfinding/src/shared/Makefile \
server/library/serverScript/Makefile \
server/library/serverScript/src/Makefile \
server/library/serverScript/src/shared/Makefile \
server/application/Makefile \
server/application/CentralServer/Makefile \
server/application/CentralServer/src/Makefile \
server/application/CentralServer/src/linux/Makefile \
server/application/CentralServer/src/shared/Makefile \
server/application/CentralServer/src/shared/AuctionTransferGameAPI/Makefile \
server/application/CentralServer/src/shared/AuctionTransferGameAPI/zip/Makefile \
server/application/CentralServer/src/shared/AuctionTransferGameAPI/zip/Zip/Makefile \
server/application/CentralServer/src/shared/AuctionTransferGameAPI/Base/Makefile \
server/application/CentralServer/src/shared/AuctionTransferGameAPI/Base/linux/Makefile \
server/application/CentralServer/src/shared/AuctionTransferGameAPI/TcpLibrary/Makefile \
server/application/CentralServer/src/shared/AuctionTransferGameAPI/ATGenericAPI/Makefile \
server/application/ChatServer/Makefile \
server/application/ChatServer/src/Makefile \
server/application/ChatServer/src/linux/Makefile \
server/application/ChatServer/src/shared/Makefile \
server/application/CommoditiesServer/Makefile \
server/application/CommoditiesServer/src/Makefile \
server/application/CommoditiesServer/src/linux/Makefile \
server/application/CommoditiesServer/src/shared/Makefile \
server/application/ConnectionServer/Makefile \
server/application/ConnectionServer/src/Makefile \
server/application/ConnectionServer/src/linux/Makefile \
server/application/ConnectionServer/src/shared/Makefile \
server/application/CustomerServiceServer/Makefile \
server/application/CustomerServiceServer/src/Makefile \
server/application/CustomerServiceServer/src/linux/Makefile \
server/application/CustomerServiceServer/src/shared/Makefile \
server/application/LoginPing/Makefile \
server/application/LoginPing/src/Makefile \
server/application/LoginPing/src/linux/Makefile \
server/application/LoginPing/src/shared/Makefile \
server/application/LoginServer/Makefile \
server/application/LoginServer/src/Makefile \
server/application/LoginServer/src/linux/Makefile \
server/application/LoginServer/src/shared/Makefile \
server/application/LogServer/Makefile \
server/application/LogServer/src/Makefile \
server/application/LogServer/src/linux/Makefile \
server/application/LogServer/src/shared/Makefile \
server/application/MetricsServer/Makefile \
server/application/MetricsServer/src/Makefile \
server/application/MetricsServer/src/linux/Makefile \
server/application/MetricsServer/src/shared/Makefile \
server/application/PlanetServer/Makefile \
server/application/PlanetServer/src/Makefile \
server/application/PlanetServer/src/linux/Makefile \
server/application/PlanetServer/src/shared/Makefile \
server/application/ServerConsole/Makefile \
server/application/ServerConsole/src/Makefile \
server/application/ServerConsole/src/linux/Makefile \
server/application/ServerConsole/src/shared/Makefile \
server/application/StationPlayersCollector/Makefile \
server/application/StationPlayersCollector/src/Makefile \
server/application/StationPlayersCollector/src/linux/Makefile \
server/application/StationPlayersCollector/src/shared/Makefile \
server/application/TaskManager/Makefile \
server/application/TaskManager/src/Makefile \
server/application/TaskManager/src/linux/Makefile \
server/application/TaskManager/src/shared/Makefile \
server/application/TransferServer/Makefile \
server/application/TransferServer/src/Makefile \
server/application/TransferServer/src/linux/Makefile \
server/application/TransferServer/src/shared/Makefile)
-6
View File
@@ -1,6 +0,0 @@
AUTOMAKE_OPTIONS=foreign
SUBDIRS=library \
application \
.
include $(engine_dir)/../make_include/engine.include
@@ -1,4 +0,0 @@
AUTOMAKE_OPTIONS=foreign
SUBDIRS=src .
include $(engine_dir)/../make_include/engine.include
@@ -1,86 +0,0 @@
DEBUG_PLATFORM_CPP_FLAGS =-DLINUX -D_REENTRANT -D_XOPEN_SOUCE=500 -D_GNU_SOURCE $(PERSONAL_FLAGS)
RELEASE_PLATFORM_CPP_FLAGS =-DLINUX -D_REENTRANT -D_XOPEN_SOUCE=500 -D_GNU_SOURCE $(PERSONAL_FLAGS)
include ../../../../../build/linux/platformDefs.mak
include ../../../../../build/shared_unix/defs.mak
OUTPUT = CentralServer
#######################################################
# standard defines
#######################################################
DEBUG_LINK_FLAGS +=-lpthread -ldl
RELEASE_LINK_FLAGS +=-lpthread -ldl
#######################################################
# includes & linked libraries
#######################################################
INCLUDE_DIRS = \
../../src/linux \
../../src/shared \
../../../../../../engine/shared/library/sharedCommandParser/include/public \
$(COMMON_ENGINE_INCLUDES)
DEBUG_LINK_LIBRARIES = \
$(COMMON_ENGINE_DEBUG_LIBS) \
$(STL_LIB) \
$(ZLIB_LIB)
# TODO: This build system has to pull in all of shared game, which in turn means all of
# skill system and swg shared utility. The autoconf system is able to make a lib out of any directories
# source files, and it appears that Justin narrowed down the dependencies to that level. It is leaner than
# what is here.
# The real solution would be to layer the libs correctly.
DEBUG_SHARED_LIBRARIES= \
$(COMMAND_PARSER_DEBUG_LIB) \
$(COMMON_ENGINE_SHARED_DEBUG_LIBS) \
$(SHARED_GAME_DEBUG_LIB) \
$(SKILL_SYSTEM_DEBUG_LIB) \
$(SWG_SHARED_UTILITY_DEBUG_LIB) \
RELEASE_LINK_LIBRARIES = \
$(COMMAND_PARSER_RELEASE_LIB) \
$(COMMON_ENGINE_RELEASE_LIBS)
RELEASE_SHARED_LIBRARIES= \
$(COMMON_ENGINE_SHARED_RELEASE_LIBS)
#######################################################
# Project depends
# (The makefile for these projects will be
# automatically invoked.)
#######################################################
DEBUG_PROJECT_DEPENDS = \
$(COMMON_ENGINE_DEBUG_DEPENDS)
RELEASE_PROJECT_DEPENDS = \
$(COMMON_ENGINE_RELEASE_DEPENDS)
#######################################################
# Source file list
#######################################################
SHARED_SRC_LIST =$(shell find $$PWD/../../src/shared -name "*.cpp")
PLATFORM_SRC_LIST =$(shell find $$PWD/../../src/linux -name "*.cpp")
SRC_LIST =$(SHARED_SRC_LIST) $(PLATFORM_SRC_LIST)
#######################################################
# Custom build steps
#######################################################
debug_custom_step:
release_custom_step:
depend_custom_step:
#######################################################
# include the common makefile
#######################################################
include ../../../../../build/shared_unix/application.mak
File diff suppressed because it is too large Load Diff
@@ -1,466 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|Win32">
<Configuration>Debug</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Optimized|Win32">
<Configuration>Optimized</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|Win32">
<Configuration>Release</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup Label="Globals">
<ProjectGuid>{D5CA7486-D01E-4DCB-883B-8E60F7F64D26}</ProjectGuid>
<Keyword>Win32Proj</Keyword>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<PlatformToolset>v120</PlatformToolset>
<UseOfMfc>false</UseOfMfc>
<CharacterSet>MultiByte</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Optimized|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<PlatformToolset>v120</PlatformToolset>
<UseOfMfc>false</UseOfMfc>
<CharacterSet>MultiByte</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<PlatformToolset>v120</PlatformToolset>
<UseOfMfc>false</UseOfMfc>
<CharacterSet>MultiByte</CharacterSet>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings">
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Optimized|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup>
<_ProjectFileVersion>12.0.30501.0</_ProjectFileVersion>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<OutDir>..\..\..\..\..\..\compile\win32\$(ProjectName)\$(Configuration)\</OutDir>
<IntDir>..\..\..\..\..\..\compile\win32\$(ProjectName)\$(Configuration)\</IntDir>
<LinkIncremental>true</LinkIncremental>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Optimized|Win32'">
<OutDir>..\..\..\..\..\..\compile\win32\$(ProjectName)\$(Configuration)\</OutDir>
<IntDir>..\..\..\..\..\..\compile\win32\$(ProjectName)\$(Configuration)\</IntDir>
<LinkIncremental>true</LinkIncremental>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<OutDir>..\..\..\..\..\..\compile\win32\$(ProjectName)\$(Configuration)\</OutDir>
<IntDir>..\..\..\..\..\..\compile\win32\$(ProjectName)\$(Configuration)\</IntDir>
<LinkIncremental>false</LinkIncremental>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<ClCompile>
<Optimization>Disabled</Optimization>
<InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
<AdditionalIncludeDirectories>..\..\..\..\..\..\engine\server\library\serverKeyShare\include\public;..\..\..\..\..\..\engine\server\library\serverMetrics\include\public;..\..\..\..\..\..\engine\server\library\serverNetworkMessages\include\public;..\..\..\..\..\..\engine\server\library\serverUtility\include\public;..\..\..\..\..\..\engine\shared\library\sharedCompression\include\public;..\..\..\..\..\..\engine\shared\library\sharedCommandParser\include\public;..\..\..\..\..\..\engine\shared\library\sharedDebug\include\public;..\..\..\..\..\..\engine\shared\library\sharedFile\include\public;..\..\..\..\..\..\engine\shared\library\sharedFoundation\include\public;..\..\..\..\..\..\engine\shared\library\sharedFoundationTypes\include\public;..\..\..\..\..\..\engine\shared\library\sharedLog\include\public;..\..\..\..\..\..\engine\shared\library\sharedMath\include\public;..\..\..\..\..\..\engine\shared\library\sharedMathArchive\include\public;..\..\..\..\..\..\engine\shared\library\sharedMemoryManager\include\public;..\..\..\..\..\..\engine\shared\library\sharedMessageDispatch\include\public;..\..\..\..\..\..\engine\shared\library\sharedNetwork\include\public;..\..\..\..\..\..\engine\shared\library\sharedNetworkMessages\include\public;..\..\..\..\..\..\engine\shared\library\sharedRandom\include\public;..\..\..\..\..\..\engine\shared\library\sharedSynchronization\include\public;..\..\..\..\..\..\engine\shared\library\sharedThread\include\public;..\..\..\..\..\..\engine\shared\library\sharedUtility\include\public;..\..\..\..\..\..\external\3rd\library\stlport453\stlport;..\..\..\..\..\..\external\ours\library\archive\include;..\..\..\..\..\..\external\ours\library\fileInterface\include\public;..\..\..\..\..\..\external\ours\library\localization\include;..\..\..\..\..\..\external\ours\library\localizationArchive\include\public;..\..\..\..\..\..\external\ours\library\singleton\include;..\..\..\..\..\..\external\ours\library\unicode\include;..\..\..\..\..\..\external\ours\library\unicodeArchive\include\public;..\..\src\shared;..\..\src\win32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>WIN32;_DEBUG;_MBCS;DEBUG_LEVEL=2;_CRT_SECURE_NO_DEPRECATE=1;_USE_32BIT_TIME_T=1;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
<FunctionLevelLinking>true</FunctionLevelLinking>
<ForceConformanceInForLoopScope>true</ForceConformanceInForLoopScope>
<RuntimeTypeInfo>true</RuntimeTypeInfo>
<PrecompiledHeaderFile>FirstCentralServer.h</PrecompiledHeaderFile>
<PrecompiledHeaderOutputFile>$(OutDir)$(ProjectName).pch</PrecompiledHeaderOutputFile>
<AssemblerListingLocation>$(OutDir)</AssemblerListingLocation>
<ObjectFileName>$(OutDir)</ObjectFileName>
<ProgramDataBaseFileName>$(OutDir)$(ProjectName)_d.pdb</ProgramDataBaseFileName>
<WarningLevel>Level4</WarningLevel>
<TreatWarningAsError>false</TreatWarningAsError>
<SuppressStartupBanner>true</SuppressStartupBanner>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
<CompileAs>Default</CompileAs>
<UseFullPaths>true</UseFullPaths>
<TreatWChar_tAsBuiltInType>false</TreatWChar_tAsBuiltInType>
</ClCompile>
<Link>
<AdditionalDependencies>winmm.lib;ws2_32.lib;zlib.lib;mswsock.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(ProjectName)_d.exe</OutputFile>
<AdditionalLibraryDirectories>..\..\..\..\..\..\external\3rd\library\stlport453\lib\win32;..\..\..\..\..\..\external\3rd\library\zlib\lib\win32;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<IgnoreSpecificDefaultLibraries>libcmt;libc;%(IgnoreSpecificDefaultLibraries)</IgnoreSpecificDefaultLibraries>
<GenerateDebugInformation>true</GenerateDebugInformation>
<ProgramDatabaseFile>$(OutDir)$(ProjectName)_d.pdb</ProgramDatabaseFile>
<SubSystem>Console</SubSystem>
<ImageHasSafeExceptionHandlers>false</ImageHasSafeExceptionHandlers>
</Link>
<ResourceCompile>
<PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<Culture>0x0409</Culture>
</ResourceCompile>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Optimized|Win32'">
<ClCompile>
<Optimization>Full</Optimization>
<InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
<IntrinsicFunctions>true</IntrinsicFunctions>
<FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
<OmitFramePointers>false</OmitFramePointers>
<AdditionalIncludeDirectories>..\..\..\..\..\..\engine\server\library\serverKeyShare\include\public;..\..\..\..\..\..\engine\server\library\serverMetrics\include\public;..\..\..\..\..\..\engine\server\library\serverNetworkMessages\include\public;..\..\..\..\..\..\engine\server\library\serverUtility\include\public;..\..\..\..\..\..\engine\shared\library\sharedCompression\include\public;..\..\..\..\..\..\engine\shared\library\sharedCommandParser\include\public;..\..\..\..\..\..\engine\shared\library\sharedDebug\include\public;..\..\..\..\..\..\engine\shared\library\sharedFile\include\public;..\..\..\..\..\..\engine\shared\library\sharedFoundation\include\public;..\..\..\..\..\..\engine\shared\library\sharedFoundationTypes\include\public;..\..\..\..\..\..\engine\shared\library\sharedLog\include\public;..\..\..\..\..\..\engine\shared\library\sharedMath\include\public;..\..\..\..\..\..\engine\shared\library\sharedMathArchive\include\public;..\..\..\..\..\..\engine\shared\library\sharedMemoryManager\include\public;..\..\..\..\..\..\engine\shared\library\sharedMessageDispatch\include\public;..\..\..\..\..\..\engine\shared\library\sharedNetwork\include\public;..\..\..\..\..\..\engine\shared\library\sharedNetworkMessages\include\public;..\..\..\..\..\..\engine\shared\library\sharedRandom\include\public;..\..\..\..\..\..\engine\shared\library\sharedSynchronization\include\public;..\..\..\..\..\..\engine\shared\library\sharedThread\include\public;..\..\..\..\..\..\engine\shared\library\sharedUtility\include\public;..\..\..\..\..\..\external\3rd\library\stlport453\stlport;..\..\..\..\..\..\external\ours\library\archive\include;..\..\..\..\..\..\external\ours\library\fileInterface\include\public;..\..\..\..\..\..\external\ours\library\localization\include;..\..\..\..\..\..\external\ours\library\localizationArchive\include\public;..\..\..\..\..\..\external\ours\library\singleton\include;..\..\..\..\..\..\external\ours\library\unicode\include;..\..\..\..\..\..\external\ours\library\unicodeArchive\include\public;..\..\src\shared;..\..\src\win32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>WIN32;_DEBUG;_MBCS;DEBUG_LEVEL=1;_CRT_SECURE_NO_DEPRECATE=1;_USE_32BIT_TIME_T=1;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
<FunctionLevelLinking>true</FunctionLevelLinking>
<ForceConformanceInForLoopScope>true</ForceConformanceInForLoopScope>
<RuntimeTypeInfo>true</RuntimeTypeInfo>
<PrecompiledHeaderFile>FirstCentralServer.h</PrecompiledHeaderFile>
<PrecompiledHeaderOutputFile>$(OutDir)$(ProjectName).pch</PrecompiledHeaderOutputFile>
<AssemblerListingLocation>$(OutDir)</AssemblerListingLocation>
<ObjectFileName>$(OutDir)</ObjectFileName>
<ProgramDataBaseFileName>$(OutDir)$(ProjectName)_o.pdb</ProgramDataBaseFileName>
<WarningLevel>Level4</WarningLevel>
<TreatWarningAsError>false</TreatWarningAsError>
<SuppressStartupBanner>true</SuppressStartupBanner>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
<CompileAs>Default</CompileAs>
<UseFullPaths>true</UseFullPaths>
<TreatWChar_tAsBuiltInType>false</TreatWChar_tAsBuiltInType>
</ClCompile>
<Link>
<AdditionalDependencies>winmm.lib;ws2_32.lib;zlib.lib;mswsock.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(ProjectName)_o.exe</OutputFile>
<AdditionalLibraryDirectories>..\..\..\..\..\..\external\3rd\library\stlport453\lib\win32;..\..\..\..\..\..\external\3rd\library\zlib\lib\win32;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<IgnoreSpecificDefaultLibraries>libcmt;libc;%(IgnoreSpecificDefaultLibraries)</IgnoreSpecificDefaultLibraries>
<GenerateDebugInformation>true</GenerateDebugInformation>
<ProgramDatabaseFile>$(OutDir)$(ProjectName)_o.pdb</ProgramDatabaseFile>
<SubSystem>Console</SubSystem>
</Link>
<ResourceCompile>
<PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<Culture>0x0409</Culture>
</ResourceCompile>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<ClCompile>
<Optimization>MaxSpeed</Optimization>
<InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
<IntrinsicFunctions>true</IntrinsicFunctions>
<FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
<OmitFramePointers>true</OmitFramePointers>
<AdditionalIncludeDirectories>..\..\..\..\..\..\engine\server\library\serverKeyShare\include\public;..\..\..\..\..\..\engine\server\library\serverMetrics\include\public;..\..\..\..\..\..\engine\server\library\serverNetworkMessages\include\public;..\..\..\..\..\..\engine\server\library\serverUtility\include\public;..\..\..\..\..\..\engine\shared\library\sharedCompression\include\public;..\..\..\..\..\..\engine\shared\library\sharedCommandParser\include\public;..\..\..\..\..\..\engine\shared\library\sharedDebug\include\public;..\..\..\..\..\..\engine\shared\library\sharedFile\include\public;..\..\..\..\..\..\engine\shared\library\sharedFoundation\include\public;..\..\..\..\..\..\engine\shared\library\sharedFoundationTypes\include\public;..\..\..\..\..\..\engine\shared\library\sharedLog\include\public;..\..\..\..\..\..\engine\shared\library\sharedMath\include\public;..\..\..\..\..\..\engine\shared\library\sharedMathArchive\include\public;..\..\..\..\..\..\engine\shared\library\sharedMemoryManager\include\public;..\..\..\..\..\..\engine\shared\library\sharedMessageDispatch\include\public;..\..\..\..\..\..\engine\shared\library\sharedNetwork\include\public;..\..\..\..\..\..\engine\shared\library\sharedNetworkMessages\include\public;..\..\..\..\..\..\engine\shared\library\sharedRandom\include\public;..\..\..\..\..\..\engine\shared\library\sharedSynchronization\include\public;..\..\..\..\..\..\engine\shared\library\sharedThread\include\public;..\..\..\..\..\..\engine\shared\library\sharedUtility\include\public;..\..\..\..\..\..\external\3rd\library\stlport453\stlport;..\..\..\..\..\..\external\ours\library\archive\include;..\..\..\..\..\..\external\ours\library\fileInterface\include\public;..\..\..\..\..\..\external\ours\library\localization\include;..\..\..\..\..\..\external\ours\library\localizationArchive\include\public;..\..\..\..\..\..\external\ours\library\singleton\include;..\..\..\..\..\..\external\ours\library\unicode\include;..\..\..\..\..\..\external\ours\library\unicodeArchive\include\public;..\..\src\shared;..\..\src\win32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>WIN32;NDEBUG;_MBCS;DEBUG_LEVEL=0;_CRT_SECURE_NO_DEPRECATE=1;_USE_32BIT_TIME_T=1;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<StringPooling>true</StringPooling>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
<FunctionLevelLinking>true</FunctionLevelLinking>
<ForceConformanceInForLoopScope>true</ForceConformanceInForLoopScope>
<RuntimeTypeInfo>true</RuntimeTypeInfo>
<PrecompiledHeaderFile>FirstCentralServer.h</PrecompiledHeaderFile>
<PrecompiledHeaderOutputFile>$(OutDir)$(ProjectName).pch</PrecompiledHeaderOutputFile>
<AssemblerListingLocation>$(OutDir)</AssemblerListingLocation>
<ObjectFileName>$(OutDir)</ObjectFileName>
<ProgramDataBaseFileName>$(OutDir)$(ProjectName)_r.pdb</ProgramDataBaseFileName>
<WarningLevel>Level4</WarningLevel>
<TreatWarningAsError>false</TreatWarningAsError>
<SuppressStartupBanner>true</SuppressStartupBanner>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
<CompileAs>Default</CompileAs>
<UseFullPaths>true</UseFullPaths>
<TreatWChar_tAsBuiltInType>false</TreatWChar_tAsBuiltInType>
</ClCompile>
<Link>
<AdditionalDependencies>winmm.lib;ws2_32.lib;zlib.lib;mswsock.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(ProjectName)_r.exe</OutputFile>
<AdditionalLibraryDirectories>..\..\..\..\..\..\external\3rd\library\stlport453\lib\win32;..\..\..\..\..\..\external\3rd\library\zlib\lib\win32;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<IgnoreSpecificDefaultLibraries>libc;%(IgnoreSpecificDefaultLibraries)</IgnoreSpecificDefaultLibraries>
<GenerateDebugInformation>true</GenerateDebugInformation>
<ProgramDatabaseFile>$(OutDir)$(ProjectName)_r.pdb</ProgramDatabaseFile>
<SubSystem>Console</SubSystem>
</Link>
<ResourceCompile>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<Culture>0x0409</Culture>
</ResourceCompile>
</ItemDefinitionGroup>
<ItemGroup>
<ClCompile Include="..\..\src\shared\AuctionTransferClient.cpp" />
<ClCompile Include="..\..\src\shared\AuctionTransferGameAPI\ATGenericAPI\GenericApiCore.cpp" />
<ClCompile Include="..\..\src\shared\AuctionTransferGameAPI\ATGenericAPI\GenericConnection.cpp" />
<ClCompile Include="..\..\src\shared\AuctionTransferGameAPI\ATGenericAPI\GenericMessage.cpp" />
<ClCompile Include="..\..\src\shared\AuctionTransferGameAPI\AuctionTransferAPI.cpp" />
<ClCompile Include="..\..\src\shared\AuctionTransferGameAPI\AuctionTransferAPICore.cpp" />
<ClCompile Include="..\..\src\shared\AuctionTransferGameAPI\Base\Archive.cpp" />
<ClCompile Include="..\..\src\shared\AuctionTransferGameAPI\Base\win32\Platform.cpp" />
<ClCompile Include="..\..\src\shared\AuctionTransferGameAPI\Character.cpp" />
<ClCompile Include="..\..\src\shared\AuctionTransferGameAPI\Request.cpp" />
<ClCompile Include="..\..\src\shared\AuctionTransferGameAPI\Response.cpp" />
<ClCompile Include="..\..\src\shared\AuctionTransferGameAPI\TcpLibrary\Clock.cpp" />
<ClCompile Include="..\..\src\shared\AuctionTransferGameAPI\TcpLibrary\IPAddress.cpp" />
<ClCompile Include="..\..\src\shared\AuctionTransferGameAPI\TcpLibrary\TcpBlockAllocator.cpp" />
<ClCompile Include="..\..\src\shared\AuctionTransferGameAPI\TcpLibrary\TcpConnection.cpp" />
<ClCompile Include="..\..\src\shared\AuctionTransferGameAPI\TcpLibrary\TcpManager.cpp" />
<ClCompile Include="..\..\src\shared\CentralCSHandler.cpp" />
<ClCompile Include="..\..\src\shared\CentralServer.cpp">
<Optimization Condition="'$(Configuration)|$(Platform)'=='Optimized|Win32'">MaxSpeed</Optimization>
</ClCompile>
<ClCompile Include="..\..\src\shared\CentralServerMetricsData.cpp">
<Optimization Condition="'$(Configuration)|$(Platform)'=='Optimized|Win32'">MaxSpeed</Optimization>
</ClCompile>
<ClCompile Include="..\..\src\shared\CharacterCreationTracker.cpp">
<Optimization Condition="'$(Configuration)|$(Platform)'=='Optimized|Win32'">MaxSpeed</Optimization>
</ClCompile>
<ClCompile Include="..\..\src\shared\ChatServerConnection.cpp">
<Optimization Condition="'$(Configuration)|$(Platform)'=='Optimized|Win32'">MaxSpeed</Optimization>
</ClCompile>
<ClCompile Include="..\..\src\shared\ConfigCentralServer.cpp">
<Optimization Condition="'$(Configuration)|$(Platform)'=='Optimized|Win32'">MaxSpeed</Optimization>
</ClCompile>
<ClCompile Include="..\..\src\shared\ConnectionServerConnection.cpp">
<Optimization Condition="'$(Configuration)|$(Platform)'=='Optimized|Win32'">MaxSpeed</Optimization>
</ClCompile>
<ClCompile Include="..\..\src\shared\ConsoleCommandParser.cpp">
<Optimization Condition="'$(Configuration)|$(Platform)'=='Optimized|Win32'">MaxSpeed</Optimization>
</ClCompile>
<ClCompile Include="..\..\src\shared\ConsoleCommandParserDatabase.cpp">
<Optimization Condition="'$(Configuration)|$(Platform)'=='Optimized|Win32'">MaxSpeed</Optimization>
</ClCompile>
<ClCompile Include="..\..\src\shared\ConsoleCommandParserGame.cpp">
<Optimization Condition="'$(Configuration)|$(Platform)'=='Optimized|Win32'">MaxSpeed</Optimization>
</ClCompile>
<ClCompile Include="..\..\src\shared\ConsoleCommandParserLoginServer.cpp">
<Optimization Condition="'$(Configuration)|$(Platform)'=='Optimized|Win32'">MaxSpeed</Optimization>
</ClCompile>
<ClCompile Include="..\..\src\shared\ConsoleConnection.cpp">
<Optimization Condition="'$(Configuration)|$(Platform)'=='Optimized|Win32'">MaxSpeed</Optimization>
</ClCompile>
<ClCompile Include="..\..\src\shared\ConsoleManager.cpp">
<Optimization Condition="'$(Configuration)|$(Platform)'=='Optimized|Win32'">MaxSpeed</Optimization>
</ClCompile>
<ClCompile Include="..\..\src\shared\CustomerServiceConnection.cpp">
<Optimization Condition="'$(Configuration)|$(Platform)'=='Optimized|Win32'">MaxSpeed</Optimization>
</ClCompile>
<ClCompile Include="..\..\src\shared\GameServerConnection.cpp">
<Optimization Condition="'$(Configuration)|$(Platform)'=='Optimized|Win32'">MaxSpeed</Optimization>
</ClCompile>
<ClCompile Include="..\..\src\shared\LoginServerConnection.cpp">
<Optimization Condition="'$(Configuration)|$(Platform)'=='Optimized|Win32'">MaxSpeed</Optimization>
</ClCompile>
<ClCompile Include="..\..\src\shared\PlanetManager.cpp">
<Optimization Condition="'$(Configuration)|$(Platform)'=='Optimized|Win32'">MaxSpeed</Optimization>
</ClCompile>
<ClCompile Include="..\..\src\shared\PlanetServerConnection.cpp">
<Optimization Condition="'$(Configuration)|$(Platform)'=='Optimized|Win32'">MaxSpeed</Optimization>
</ClCompile>
<ClCompile Include="..\..\src\shared\StationPlayersCollectorConnection.cpp" />
<ClCompile Include="..\..\src\shared\TaskConnection.cpp">
<Optimization Condition="'$(Configuration)|$(Platform)'=='Optimized|Win32'">MaxSpeed</Optimization>
</ClCompile>
<ClCompile Include="..\..\src\shared\TransferServerConnection.cpp">
<Optimization Condition="'$(Configuration)|$(Platform)'=='Optimized|Win32'">MaxSpeed</Optimization>
</ClCompile>
<ClCompile Include="..\..\src\shared\UniverseManager.cpp">
<Optimization Condition="'$(Configuration)|$(Platform)'=='Optimized|Win32'">MaxSpeed</Optimization>
</ClCompile>
<ClCompile Include="..\..\src\win32\FirstCentralServer.cpp">
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Create</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Optimized|Win32'">Create</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Create</PrecompiledHeader>
</ClCompile>
<ClCompile Include="..\..\src\win32\WinMain.cpp">
<Optimization Condition="'$(Configuration)|$(Platform)'=='Optimized|Win32'">MaxSpeed</Optimization>
</ClCompile>
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\..\src\shared\AuctionTransferClient.h" />
<ClInclude Include="..\..\src\shared\AuctionTransferGameAPI\ATGenericAPI\GenericApiCore.h" />
<ClInclude Include="..\..\src\shared\AuctionTransferGameAPI\ATGenericAPI\GenericConnection.h" />
<ClInclude Include="..\..\src\shared\AuctionTransferGameAPI\ATGenericAPI\GenericMessage.h" />
<ClInclude Include="..\..\src\shared\AuctionTransferGameAPI\AuctionTransferAPI.h" />
<ClInclude Include="..\..\src\shared\AuctionTransferGameAPI\AuctionTransferAPICore.h" />
<ClInclude Include="..\..\src\shared\AuctionTransferGameAPI\AuctionTransferEnum.h" />
<ClInclude Include="..\..\src\shared\AuctionTransferGameAPI\Base\win32\Archive.h" />
<ClInclude Include="..\..\src\shared\AuctionTransferGameAPI\Base\win32\Platform.h" />
<ClInclude Include="..\..\src\shared\AuctionTransferGameAPI\Base\win32\Types.h" />
<ClInclude Include="..\..\src\shared\AuctionTransferGameAPI\Character.h" />
<ClInclude Include="..\..\src\shared\AuctionTransferGameAPI\Request.h" />
<ClInclude Include="..\..\src\shared\AuctionTransferGameAPI\Response.h" />
<ClInclude Include="..\..\src\shared\AuctionTransferGameAPI\TcpLibrary\Clock.h" />
<ClInclude Include="..\..\src\shared\AuctionTransferGameAPI\TcpLibrary\IPAddress.h" />
<ClInclude Include="..\..\src\shared\AuctionTransferGameAPI\TcpLibrary\TcpBlockAllocator.h" />
<ClInclude Include="..\..\src\shared\AuctionTransferGameAPI\TcpLibrary\TcpConnection.h" />
<ClInclude Include="..\..\src\shared\AuctionTransferGameAPI\TcpLibrary\TcpHandlers.h" />
<ClInclude Include="..\..\src\shared\AuctionTransferGameAPI\TcpLibrary\TcpManager.h" />
<ClInclude Include="..\..\src\shared\AuctionTransferGameAPI\zip\GZipHelper.h" />
<ClInclude Include="..\..\src\shared\AuctionTransferGameAPI\zip\Zip\deflate.h" />
<ClInclude Include="..\..\src\shared\AuctionTransferGameAPI\zip\Zip\infblock.h" />
<ClInclude Include="..\..\src\shared\AuctionTransferGameAPI\zip\Zip\infcodes.h" />
<ClInclude Include="..\..\src\shared\AuctionTransferGameAPI\zip\Zip\inffast.h" />
<ClInclude Include="..\..\src\shared\AuctionTransferGameAPI\zip\Zip\inffixed.h" />
<ClInclude Include="..\..\src\shared\AuctionTransferGameAPI\zip\Zip\inftrees.h" />
<ClInclude Include="..\..\src\shared\AuctionTransferGameAPI\zip\Zip\infutil.h" />
<ClInclude Include="..\..\src\shared\AuctionTransferGameAPI\zip\Zip\trees.h" />
<ClInclude Include="..\..\src\shared\AuctionTransferGameAPI\zip\Zip\zconf.h" />
<ClInclude Include="..\..\src\shared\AuctionTransferGameAPI\zip\Zip\zlib.h" />
<ClInclude Include="..\..\src\shared\AuctionTransferGameAPI\zip\Zip\zutil.h" />
<ClInclude Include="..\..\src\shared\CentralCSHandler.h" />
<ClInclude Include="..\..\src\shared\CentralServer.h" />
<ClInclude Include="..\..\src\shared\CentralServerMetricsData.h" />
<ClInclude Include="..\..\src\shared\CharacterCreationTracker.h" />
<ClInclude Include="..\..\src\shared\ChatServerConnection.h" />
<ClInclude Include="..\..\src\shared\ConfigCentralServer.h" />
<ClInclude Include="..\..\src\shared\ConnectionServerConnection.h" />
<ClInclude Include="..\..\src\shared\ConsoleCommandParser.h" />
<ClInclude Include="..\..\src\shared\ConsoleCommandParserDatabase.h" />
<ClInclude Include="..\..\src\shared\ConsoleCommandParserGame.h" />
<ClInclude Include="..\..\src\shared\ConsoleCommandParserLoginServer.h" />
<ClInclude Include="..\..\src\shared\ConsoleConnection.h" />
<ClInclude Include="..\..\src\shared\ConsoleManager.h" />
<ClInclude Include="..\..\src\shared\CustomerServiceConnection.h" />
<ClInclude Include="..\..\src\shared\FirstCentralServer.h" />
<ClInclude Include="..\..\src\shared\GameServerConnection.h" />
<ClInclude Include="..\..\src\shared\LoginServerConnection.h" />
<ClInclude Include="..\..\src\shared\PlanetManager.h" />
<ClInclude Include="..\..\src\shared\PlanetServerConnection.h" />
<ClInclude Include="..\..\src\shared\StationPlayersCollectorConnection.h" />
<ClInclude Include="..\..\src\shared\TaskConnection.h" />
<ClInclude Include="..\..\src\shared\TransferServerConnection.h" />
<ClInclude Include="..\..\src\shared\UniverseManager.h" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\..\..\..\..\external\3rd\library\udplibrary\udplibrary.vcxproj">
<Project>{1a7d1159-3474-4520-882f-f1842f0aafae}</Project>
<ReferenceOutputAssembly>false</ReferenceOutputAssembly>
</ProjectReference>
<ProjectReference Include="..\..\..\..\..\..\external\ours\library\archive\build\win32\archive.vcxproj">
<Project>{52153865-1abf-4fbb-84c4-0fc439716f1e}</Project>
<ReferenceOutputAssembly>false</ReferenceOutputAssembly>
</ProjectReference>
<ProjectReference Include="..\..\..\..\..\..\external\ours\library\crypto\build\win32\crypto.vcxproj">
<Project>{861a873c-d6ad-4b8a-9bed-0314a8b74b54}</Project>
<ReferenceOutputAssembly>false</ReferenceOutputAssembly>
</ProjectReference>
<ProjectReference Include="..\..\..\..\..\..\external\ours\library\fileInterface\build\win32\fileInterface.vcxproj">
<Project>{de93996c-cb51-4d61-85a0-a9dfc677445f}</Project>
<ReferenceOutputAssembly>false</ReferenceOutputAssembly>
</ProjectReference>
<ProjectReference Include="..\..\..\..\..\..\external\ours\library\localizationArchive\build\win32\localizationArchive.vcxproj">
<Project>{a8036ec1-9682-4315-a3d2-6b26c3245d50}</Project>
<ReferenceOutputAssembly>false</ReferenceOutputAssembly>
</ProjectReference>
<ProjectReference Include="..\..\..\..\..\..\external\ours\library\localization\build\win32\localization.vcxproj">
<Project>{0fb11bc8-3bd1-4471-8dda-da3bc05937b2}</Project>
<ReferenceOutputAssembly>false</ReferenceOutputAssembly>
</ProjectReference>
<ProjectReference Include="..\..\..\..\..\..\external\ours\library\singleton\build\win32\singleton.vcxproj">
<Project>{d409a18e-f788-4f1b-bad1-ed58ee4d458f}</Project>
<ReferenceOutputAssembly>false</ReferenceOutputAssembly>
</ProjectReference>
<ProjectReference Include="..\..\..\..\..\..\external\ours\library\unicodeArchive\build\win32\unicodeArchive.vcxproj">
<Project>{41269a52-38b8-4f9a-ae38-1103bb03a10b}</Project>
<ReferenceOutputAssembly>false</ReferenceOutputAssembly>
</ProjectReference>
<ProjectReference Include="..\..\..\..\..\..\external\ours\library\unicode\build\win32\unicode.vcxproj">
<Project>{b97963ef-49e4-477e-85ff-e7fee7c626d7}</Project>
<ReferenceOutputAssembly>false</ReferenceOutputAssembly>
</ProjectReference>
<ProjectReference Include="..\..\..\..\..\shared\library\sharedCommandParser\build\win32\sharedCommandParser.vcxproj">
<Project>{20d4d8eb-87ca-4c5f-8ba3-ffc898563c40}</Project>
<ReferenceOutputAssembly>false</ReferenceOutputAssembly>
</ProjectReference>
<ProjectReference Include="..\..\..\..\..\shared\library\sharedCompression\build\win32\sharedCompression.vcxproj">
<Project>{6bd52b35-92ca-44e4-995e-2b79c7398183}</Project>
<ReferenceOutputAssembly>false</ReferenceOutputAssembly>
</ProjectReference>
<ProjectReference Include="..\..\..\..\..\shared\library\sharedDebug\build\win32\sharedDebug.vcxproj">
<Project>{f3245c29-7760-4956-b1b7-fc483be417cd}</Project>
<ReferenceOutputAssembly>false</ReferenceOutputAssembly>
</ProjectReference>
<ProjectReference Include="..\..\..\..\..\shared\library\sharedFile\build\win32\sharedFile.vcxproj">
<Project>{e0f9d922-daa7-475e-a95a-7bc540ed58fe}</Project>
<ReferenceOutputAssembly>false</ReferenceOutputAssembly>
</ProjectReference>
<ProjectReference Include="..\..\..\..\..\shared\library\sharedFoundationTypes\build\win32\sharedFoundationTypes.vcxproj">
<Project>{d6cc353f-4fd1-4aeb-a984-e7b2e9ce4e69}</Project>
<ReferenceOutputAssembly>false</ReferenceOutputAssembly>
</ProjectReference>
<ProjectReference Include="..\..\..\..\..\shared\library\sharedFoundation\build\win32\sharedFoundation.vcxproj">
<Project>{c595c10e-ada8-429a-896a-8904a46737d3}</Project>
<ReferenceOutputAssembly>false</ReferenceOutputAssembly>
</ProjectReference>
<ProjectReference Include="..\..\..\..\..\shared\library\sharedIoWin\build\win32\sharedIoWin.vcxproj">
<Project>{03819289-4e8b-44e9-9f3b-a3243c9797c9}</Project>
<ReferenceOutputAssembly>false</ReferenceOutputAssembly>
</ProjectReference>
<ProjectReference Include="..\..\..\..\..\shared\library\sharedLog\build\win32\sharedLog.vcxproj">
<Project>{2ae0cef0-c4f2-4786-a026-8338fb09d61b}</Project>
<ReferenceOutputAssembly>false</ReferenceOutputAssembly>
</ProjectReference>
<ProjectReference Include="..\..\..\..\..\shared\library\sharedMathArchive\build\win32\sharedMathArchive.vcxproj">
<Project>{0202adb3-5587-4138-a626-52b7db52fbba}</Project>
<ReferenceOutputAssembly>false</ReferenceOutputAssembly>
</ProjectReference>
<ProjectReference Include="..\..\..\..\..\shared\library\sharedMath\build\win32\sharedMath.vcxproj">
<Project>{5789ea7c-6596-4dcc-a9fb-dd7582888f90}</Project>
<ReferenceOutputAssembly>false</ReferenceOutputAssembly>
</ProjectReference>
<ProjectReference Include="..\..\..\..\..\shared\library\sharedMemoryManager\build\win32\sharedMemoryManager.vcxproj">
<Project>{dc2cd926-8ea3-4add-aa62-a95cca8ac7dd}</Project>
<ReferenceOutputAssembly>false</ReferenceOutputAssembly>
</ProjectReference>
<ProjectReference Include="..\..\..\..\..\shared\library\sharedMessageDispatch\build\win32\sharedMessageDispatch.vcxproj">
<Project>{c87164f5-14a9-403c-8bc4-217fd40731ea}</Project>
<ReferenceOutputAssembly>false</ReferenceOutputAssembly>
</ProjectReference>
<ProjectReference Include="..\..\..\..\..\shared\library\sharedNetworkMessages\build\win32\sharedNetworkMessages.vcxproj">
<Project>{decf2964-3a66-4fa6-ab27-d4507c5480ea}</Project>
<ReferenceOutputAssembly>false</ReferenceOutputAssembly>
</ProjectReference>
<ProjectReference Include="..\..\..\..\..\shared\library\sharedNetwork\build\win32\sharedNetwork.vcxproj">
<Project>{df4d72ef-2341-4462-ab78-b130450511da}</Project>
<ReferenceOutputAssembly>false</ReferenceOutputAssembly>
</ProjectReference>
<ProjectReference Include="..\..\..\..\..\shared\library\sharedRandom\build\win32\sharedRandom.vcxproj">
<Project>{2e6982e0-dcb6-4ed9-bfad-d29daeea6ad2}</Project>
<ReferenceOutputAssembly>false</ReferenceOutputAssembly>
</ProjectReference>
<ProjectReference Include="..\..\..\..\..\shared\library\sharedSynchronization\build\win32\sharedSynchronization.vcxproj">
<Project>{2fe4e38d-be7d-4e3b-9613-63e9f01855f4}</Project>
<ReferenceOutputAssembly>false</ReferenceOutputAssembly>
</ProjectReference>
<ProjectReference Include="..\..\..\..\..\shared\library\sharedThread\build\win32\sharedThread.vcxproj">
<Project>{858f7dce-325a-467c-9dda-2fe40217286f}</Project>
<ReferenceOutputAssembly>false</ReferenceOutputAssembly>
</ProjectReference>
<ProjectReference Include="..\..\..\..\..\shared\library\sharedUtility\build\win32\sharedUtility.vcxproj">
<Project>{52df0d16-d070-47fc-b987-8d80b027d114}</Project>
<ReferenceOutputAssembly>false</ReferenceOutputAssembly>
</ProjectReference>
<ProjectReference Include="..\..\..\..\library\serverKeyShare\build\win32\serverKeyShare.vcxproj">
<Project>{4f237764-394d-40cb-9314-daeded42e2cd}</Project>
<ReferenceOutputAssembly>false</ReferenceOutputAssembly>
</ProjectReference>
<ProjectReference Include="..\..\..\..\library\SERVERMETRICS\build\win32\serverMetrics.vcxproj">
<Project>{4eff0958-fbc8-4053-971a-7022eb0035e4}</Project>
<ReferenceOutputAssembly>false</ReferenceOutputAssembly>
</ProjectReference>
<ProjectReference Include="..\..\..\..\library\serverNetworkMessages\build\win32\serverNetworkMessages.vcxproj">
<Project>{38df394c-0909-4507-8029-53d960fea464}</Project>
<ReferenceOutputAssembly>false</ReferenceOutputAssembly>
</ProjectReference>
<ProjectReference Include="..\..\..\..\library\serverUtility\build\win32\serverUtility.vcxproj">
<Project>{67bfda04-f26e-497f-a6fe-ee52550c15fe}</Project>
<ReferenceOutputAssembly>false</ReferenceOutputAssembly>
</ProjectReference>
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
</ImportGroup>
</Project>
@@ -1,31 +0,0 @@
../../../../../../engine/server/library/serverKeyShare/include/public
../../../../../../engine/server/library/serverMetrics/include/public
../../../../../../engine/server/library/serverNetworkMessages/include/public
../../../../../../engine/server/library/serverUtility/include/public
../../../../../../engine/shared/library/sharedCompression/include/public
../../../../../../engine/shared/library/sharedCommandParser/include/public
../../../../../../engine/shared/library/sharedDebug/include/public
../../../../../../engine/shared/library/sharedFile/include/public
../../../../../../engine/shared/library/sharedFoundation/include/public
../../../../../../engine/shared/library/sharedFoundationTypes/include/public
../../../../../../engine/shared/library/sharedLog/include/public
../../../../../../engine/shared/library/sharedMath/include/public
../../../../../../engine/shared/library/sharedMathArchive/include/public
../../../../../../engine/shared/library/sharedMemoryManager/include/public
../../../../../../engine/shared/library/sharedMessageDispatch/include/public
../../../../../../engine/shared/library/sharedNetwork/include/public
../../../../../../engine/shared/library/sharedNetworkMessages/include/public
../../../../../../engine/shared/library/sharedRandom/include/public
../../../../../../engine/shared/library/sharedSynchronization/include/public
../../../../../../engine/shared/library/sharedThread/include/public
../../../../../../engine/shared/library/sharedUtility/include/public
../../../../../../external/3rd/library/stlport453/stlport
../../../../../../external/ours/library/archive/include
../../../../../../external/ours/library/fileInterface/include/public
../../../../../../external/ours/library/localization/include
../../../../../../external/ours/library/localizationArchive/include/public
../../../../../../external/ours/library/singleton/include
../../../../../../external/ours/library/unicode/include
../../../../../../external/ours/library/unicodeArchive/include/public
../../src/shared
../../src/win32
@@ -1,5 +0,0 @@
winmm.lib
ws2_32.lib
zlib.lib
mswsock.lib
@@ -1,2 +0,0 @@
..\..\..\..\..\..\external\3rd\library\stlport453\lib\win32
..\..\..\..\..\..\external\3rd\library\zlib\lib\win32
@@ -1,2 +0,0 @@
console noPchDirectory copyDev
debugInline
@@ -1,39 +0,0 @@
-i../../library/serverKeyShare/include/public
-i../../library/serverMetrics/include/public
-i../../library/serverNetworkMessages/include/public
-i../../library/serverUtility/include/public
-i../../../../engine/shared/library/sharedCompression/include/public
-i../../../../engine/shared/library/sharedCommandParser/include/public
-i../../../../engine/shared/library/sharedDebug/include/public
-i../../../../engine/shared/library/sharedFile/include/public
-i../../../../engine/shared/library/sharedFoundation/include/public
-i../../../../engine/shared/library/sharedFoundationTypes/include/public
-i../../../../engine/shared/library/sharedLog/include/public
-i../../../../engine/shared/library/sharedMath/include/public
-i../../../../engine/shared/library/sharedMathArchive/include/public
-i../../../../engine/shared/library/sharedMemoryManager/include/public
-i../../../../engine/shared/library/sharedMessageDispatch/include/public
-i../../../../engine/shared/library/sharedNetwork/include/public
-i../../../../engine/shared/library/sharedNetworkMessages/include/public
-i../../../../engine/shared/library/sharedRandom/include/public
-i../../../../engine/shared/library/sharedSynchronization/include/public
-i../../../../engine/shared/library/sharedThread/include/public
-i../../../../engine/shared/library/sharedUtility/include/public
-i../../../../external/3rd/library/stlport453/stlport
-i../../../../external/ours/library/archive/include
-i../../../../external/ours/library/fileInterface/include/public
-i../../../../external/ours/library/localization/include
-i../../../../external/ours/library/localizationArchive/include/public
-i../../../../external/ours/library/singleton/include
-i../../../../external/ours/library/unicode/include
-i../../../../external/ours/library/unicodeArchive/include/public
-isrc/shared
-iinclude/private
-iinclude/public
std.lnt
swg-gen.lnt
swg-stlport.lnt
-e1774
@@ -1,6 +0,0 @@
AUTOMAKE_OPTIONS=foreign
SUBDIRS=shared linux .
include $(engine_dir)/../make_include/engine.include
@@ -1,263 +0,0 @@
AUTOMAKE_OPTIONS=foreign
bin_PROGRAMS=CentralServer
CentralServer_CXXFLAGS=-I$(srcdir)/../$(platform) \
-I$(srcdir)/../shared \
-I$(archive_dir)/include \
-I$(unicode_dir)/include \
-I$(localization_dir)/include \
-I$(singleton_dir)/include \
-I$(engine_dir)/server/library/serverNetworkMessages/include/public \
-I$(engine_dir)/server/library/serverKeyShare/include/public \
-I$(engine_dir)/shared/library/sharedCompression/include/public \
-I$(engine_dir)/shared/library/sharedDebug/include/public \
-I$(engine_dir)/shared/library/sharedFile/include/public \
-I$(engine_dir)/shared/library/sharedFoundationTypes/include/public \
-I$(engine_dir)/shared/library/sharedFoundation/include/public \
-I$(engine_dir)/shared/library/sharedMemoryManager/include/public \
-I$(engine_dir)/shared/library/sharedMessageDispatch/include/public \
-I$(engine_dir)/shared/library/sharedNetwork/include/public \
-I$(engine_dir)/shared/library/sharedRandom/include/public \
-I$(engine_dir)/shared/library/sharedRegex/include/public \
-I$(engine_dir)/shared/library/sharedTemplate/include/public \
-I$(engine_dir)/shared/library/sharedThread/include/public \
-I$(engine_dir)/shared/library/sharedUtility/include/public \
-I$(stlport_dir)/stlport \
-I$(perforce_dir)/include \
-Wno-ctor-dtor-privacy
CentralServer_SOURCES=main.cpp
CentralServer_LDADD = $(top_builddir)/../engine/shared/library/sharedMemoryManager/libsharedMemoryManager.la \
../shared/libCentralServershared.la \
../shared/AuctionTransferGameAPI/libAuctionTransferGameAPI.la \
../shared/AuctionTransferGameAPI/ATGenericAPI/libAuctionTransferGameAPIATGenericAPI.la \
../shared/AuctionTransferGameAPI/Base/libAuctionTransferGameAPIBase.la \
../shared/AuctionTransferGameAPI/Base/linux/libAuctionTransferGameAPIlinux.la \
../shared/AuctionTransferGameAPI/TcpLibrary/libAuctionTransferGameAPITcpLibrary.la \
../shared/AuctionTransferGameAPI/zip/Zip/libAuctionTransferGameAPIZip.la \
$(top_builddir)/../engine/server/library/serverKeyShare/libserverKeyShare.la \
$(top_builddir)/../engine/shared/library/sharedGame/src/shared/sui/libsharedGamesharedsui.la \
$(top_builddir)/../engine/shared/library/sharedNetwork/libsharedNetwork.la \
$(top_builddir)/../engine/shared/library/sharedLog/libsharedLog.la \
$(top_builddir)/../engine/server/library/serverUtility/libserverUtility.la \
$(top_builddir)/../engine/shared/library/sharedNetworkMessages/src/shared/common/libsharedNetworkMessagessharedcommon.la \
$(top_builddir)/../engine/shared/library/sharedNetworkMessages/src/shared/clientGameServer/libsharedNetworkMessagessharedclientGameServer.la \
$(top_builddir)/../engine/shared/library/sharedNetworkMessages/src/shared/libsharedNetworkMessagesshared.la \
$(top_builddir)/../engine/shared/library/sharedImage/libsharedImage.la \
$(top_builddir)/../engine/shared/library/sharedCommandParser/libsharedCommandParser.la \
$(top_builddir)/../engine/server/library/serverMetrics/libserverMetrics.la \
$(top_builddir)/../engine/server/library/serverNetworkMessages/src/shared/transferServer/libserverNetworkMessagessharedtransferServer.la \
$(top_builddir)/../engine/server/library/serverNetworkMessages/src/shared/gameStationPlayersCollector/libserverNetworkMessagessharedgameStationPlayersCollector.la \
$(top_builddir)/../engine/server/library/serverNetworkMessages/src/shared/libserverNetworkMessagesshared.la \
$(top_builddir)/../engine/server/library/serverNetworkMessages/src/shared/centralPlanetServer/libserverNetworkMessagessharedcentralPlanetServer.la \
$(top_builddir)/../engine/server/library/serverNetworkMessages/src/shared/gamePlanetServer/libserverNetworkMessagessharedgamePlanetServer.la \
$(top_builddir)/../engine/server/library/serverNetworkMessages/src/shared/centralConnectionServer/libserverNetworkMessagessharedcentralConnectionServer.la \
$(top_builddir)/../engine/server/library/serverNetworkMessages/src/shared/gameGameServer/libserverNetworkMessagessharedgameGameServer.la \
$(top_builddir)/../engine/server/library/serverNetworkMessages/src/shared/centralTaskManager/libserverNetworkMessagessharedcentralTaskManager.la \
$(top_builddir)/../engine/server/library/serverNetworkMessages/src/shared/loginCentralServer/libserverNetworkMessagessharedloginCentralServer.la \
$(top_builddir)/../engine/server/library/serverNetworkMessages/src/shared/metricsMessages/libserverNetworkMessagessharedmetricsMessages.la \
$(top_builddir)/../engine/server/library/serverNetworkMessages/src/shared/centralGameServer/libserverNetworkMessagessharedcentralGameServer.la \
$(top_builddir)/../engine/shared/library/sharedUtility/libsharedUtility.la \
$(top_builddir)/../engine/shared/library/sharedXml/libsharedXml.la \
$(top_builddir)/../engine/shared/library/sharedMessageDispatch/libsharedMessageDispatch.la \
$(top_builddir)/../engine/shared/library/sharedFile/libsharedFile.la \
$(top_builddir)/../engine/shared/library/sharedCompression/libsharedCompression.la \
$(top_builddir)/../engine/shared/library/sharedDebug/libsharedDebug.la \
$(top_builddir)/../game/shared/library/swgSharedUtility/libswgSharedUtility.la \
$(top_builddir)/../engine/shared/library/sharedFoundation/libsharedFoundation.la \
$(top_builddir)/../engine/shared/library/sharedThread/libsharedThread.la \
$(top_builddir)/../engine/shared/library/sharedSynchronization/libsharedSynchronization.la \
$(top_builddir)/../engine/shared/library/sharedMath/libsharedMath.la \
$(top_builddir)/../engine/shared/library/sharedRandom/libsharedRandom.la \
$(top_builddir)/../external/ours/library/localizationArchive/liblocalizationArchive.la \
$(top_builddir)/../external/ours/library/localization/liblocalization.la \
$(top_builddir)/../external/ours/library/unicodeArchive/libunicodeArchive.la \
$(top_builddir)/../external/ours/library/unicode/libunicode.la \
$(top_builddir)/../external/ours/library/fileInterface/libfileInterface.la \
$(top_builddir)/../external/ours/library/crypto/libcrypto.la \
$(top_builddir)/../external/ours/library/archive/libarchive.la \
$(libxml_dir)/libxml2.la \
$(stlport_dir)/lib/libstlport_gcc.a \
$(pcre_dir)/lib/libpcre.a \
$(udplibrary_dir)/output/debug/libudplibrary.a
CentralServer_LDFLAGS=-lpthread -ldl -lz -lm -lncurses
../shared/libCentralServershared.la:
make -C ../shared
../shared/AuctionTransferGameAPI/libAuctionTransferGameAPI.la:
make -C ../shared/AuctionTransferGameAPI
../shared/AuctionTransferGameAPI/ATGericAPI/libAuctionTransferGameAPIATGenericAPI.la:
make -C ../shared/AuctionTransferGameAPI/ATGenericAPI
../shared/AuctionTransferGameAPI/Base/libAuctionTransferGameAPIBase.la:
make -C ../shared/AuctionTransferGameAPI/Base
../shared/AuctionTransferGameAPI/Base/linux/libAuctionTransferGameAPIlinux.la:
make -C ../shared/AuctionTransferGameAPI/Base/linux
../shared/AuctionTransferGameAPI/TcpLibrary/libAuctionTransferGameAPITcpLibrary.la:
make -C ../shared/AuctionTransferGameAPI/TcpLibrary
../shared/AuctionTransferGameAPI/zip/Zip/libAuctionTransferGameAPIZip.la:
make -C ../shared/AuctionTransferGameAPI/zip/Zip
$(top_builddir)/../game/shared/library/swgSharedUtility/libswgSharedUtility.la:
make -C $(top_builddir)/../game/shared/library/swgSharedUtility
$(top_builddir)/../engine/shared/library/sharedSkillSystem/libsharedSkillSystem.la:
make -C $(top_builddir)/../engine/shared/library/sharedSkillSystem
$(top_builddir)/../engine/shared/library/sharedImage/libsharedImage.la:
make -C $(top_builddir)/../engine/shared/library/sharedImage
$(top_builddir)/../engine/shared/library/sharedFractal/libsharedFractal.la:
make -C $(top_builddir)/../engine/shared/library/sharedFractal
$(top_builddir)/../engine/shared/library/sharedTerrain/libsharedTerrain.la:
make -C $(top_builddir)/../engine/shared/library/sharedTerrain
$(top_builddir)/../engine/shared/library/sharedCollision/libsharedCollision.la:
make -C $(top_builddir)/../engine/shared/library/sharedCollision
$(top_builddir)/../engine/shared/library/sharedObject/src/shared/object/libsharedObjectsharedobject.la:
make -C $(top_builddir)/../engine/shared/library/sharedObject/src/shared/object
$(top_builddir)/../engine/shared/library/sharedGame/libsharedGame.la:
make -C $(top_builddir)/../engine/shared/library/sharedGame
$(top_builddir)/../engine/shared/library/sharedNetworkMessages/src/shared/common/libsharedNetworkMessagessharedcommon.la:
make -C $(top_builddir)/../engine/shared/library/sharedNetworkMessages/src/shared/common
$(top_builddir)/../engine/shared/library/sharedNetworkMessages/src/shared/clientGameServer/libsharedNetworkMessagessharedclientGameServer.la:
make -C $(top_builddir)/../engine/shared/library/sharedNetworkMessages/src/shared/clientGameServer
$(top_builddir)/../engine/shared/library/sharedNetworkMessages/src/shared/libsharedNetworkMessagesshared.la:
make -C $(top_builddir)/../engine/shared/library/sharedNetworkMessages/src/shared
$(top_builddir)/../engine/shared/library/sharedMath/libsharedMath.la:
make -C $(top_builddir)/../engine/shared/library/sharedMath
$(top_builddir)/../engine/shared/library/sharedCommandParser/libsharedCommandParser.la:
make -C $(top_builddir)/../engine/shared/library/sharedCommandParser
$(top_builddir)/../engine/shared/library/sharedRandom/libsharedRandom.la:
make -C $(top_builddir)/../engine/shared/library/sharedRandom
$(top_builddir)/../engine/shared/library/sharedUtility/libsharedUtility.la:
make -C $(top_builddir)/../engine/shared/library/sharedUtility
$(top_builddir)/../engine/shared/library/sharedXml/libsharedXml.la:
make -C $(top_builddir)/../engine/shared/library/sharedXml
$(top_builddir)/../engine/server/library/serverMetrics/libserverMetrics.la:
make -C $(top_builddir)/../engine/server/library/serverMetrics
$(top_builddir)/../engine/server/library/serverNetworkMessages/src/shared/centralGameServer/libserverNetworkMessagessharedcentralGameServer.la:
make -C $(top_builddir)/../engine/server/library/serverNetworkMessages/src/shared/centralGameServer
$(top_builddir)/../engine/server/library/serverNetworkMessages/src/shared/centralConnectionServer/libserverNetworkMessagessharedcentralConnectionServer.la:
make -C $(top_builddir)/../engine/server/library/serverNetworkMessages/src/shared/centralConnectionServer
$(top_builddir)/../engine/server/library/serverNetworkMessages/src/shared/loginCentralServer/libserverNetworkMessagessharedloginCentralServer.la:
make -C $(top_builddir)/../engine/server/library/serverNetworkMessages/src/shared/centralConnectionServer
$(top_builddir)/../engine/server/library/serverNetworkMessages/src/shared/libserverNetworkMessagesshared.la:
make -C $(top_builddir)/../engine/server/library/serverNetworkMessages/src/shared
$(top_builddir)/../engine/server/library/serverNetworkMessages/src/shared/metricsMessages/libserverNetworkMessagessharedmetricsMessages.la:
make -C $(top_builddir)/../engine/server/library/serverNetworkMessages/src/shared/metricsMessages
$(top_builddir)/../engine/server/library/serverNetworkMessages/src/shared/transferServer/libserverNetworkMessagessharedtransferServer.la:
make -C $(top_builddir)/../engine/server/library/serverNetworkMessages/src/shared/transferServer
$(top_builddir)/../engine/server/library/serverNetworkMessages/src/shared/gameStationPlayersCollector/libserverNetworkMessagessharedgameStationPlayersCollector.la:
make -C $(top_builddir)/../engine/server/library/serverNetworkMessages/src/shared/gameStationPlayersCollector
$(top_builddir)/../engine/server/library/serverNetworkMessages/src/shared/centralPlanetServer/libserverNetworkMessagessharedcentralPlanetServer.la:
make -C $(top_builddir)/../engine/server/library/serverNetworkMessages/src/shared/centralPlanetServer
$(top_builddir)/../engine/server/library/serverNetworkMessages/src/shared/gamePlanetServer/libserverNetworkMessagessharedgamePlanetServer.la:
make -C $(top_builddir)/../engine/server/library/serverNetworkMessages/src/shared/gamePlanetServer
$(top_builddir)/../engine/server/library/serverNetworkMessages/src/shared/gameGameServer/libserverNetworkMessagessharedgameGameServer.la:
make -C $(top_builddir)/../engine/server/library/serverNetworkMessages/src/shared/gameGameServer
$(top_builddir)/../engine/server/library/serverNetworkMessages/src/shared/centralTaskManager/libserverNetworkMessagessharedcentralTaskManager.la:
make -C $(top_builddir)/../engine/server/library/serverNetworkMessages/src/shared/centralTaskManager
$(top_builddir)/../engine/server/library/serverUtility/libserverUtility.la:
make -C $(top_builddir)/../engine/server/library/serverUtility
$(top_builddir)/../engine/shared/library/sharedCompression/libsharedCompression.la:
make -C $(top_builddir)/../engine/shared/library/sharedCompression
$(top_builddir)/../engine/shared/library/sharedDebug/libsharedDebug.la:
make -C $(top_builddir)/../engine/shared/library/sharedDebug
$(top_builddir)/../engine/shared/library/sharedFile/libsharedFile.la:
make -C $(top_builddir)/../engine/shared/library/sharedFile
$(top_builddir)/../engine/shared/library/sharedFoundation/libsharedFoundation.la:
make -C $(top_builddir)/../engine/shared/library/sharedFoundation
$(top_builddir)/../engine/shared/library/sharedLog/libsharedLog.la:
make -C $(top_builddir)/../engine/shared/library/sharedLog
$(top_builddir)/../engine/shared/library/sharedMemoryManager/libsharedMemoryManager.la:
make -C $(top_builddir)/../engine/shared/library/sharedMemoryManager
$(top_builddir)/../engine/shared/library/sharedMessageDispatch/libsharedMessageDispatch.la:
make -C $(top_builddir)/../engine/shared/library/sharedMessageDispatch
$(top_builddir)/../engine/shared/library/sharedNetwork/libsharedNetwork.la:
make -C $(top_builddir)/../engine/shared/library/sharedNetwork
$(top_builddir)/../engine/shared/library/sharedNetworkMessages/libsharedNetworkMessages.la:
make -C $(top_builddir)/../engine/shared/library/sharedNetworkMessages
$(top_builddir)/../engine/shared/library/sharedSynchronization/libsharedSynchronization.la:
make -C $(top_builddir)/../engine/shared/library/sharedSynchronization
$(top_builddir)/../engine/shared/library/sharedThread/libsharedThread.la:
make -C $(top_builddir)/../engine/shared/library/sharedThread
$(top_builddir)/../engine/server/library/serverKeyShare/libserverKeyShare.la:
make -C $(top_builddir)/../engine/server/library/serverKeyShare
$(top_builddir)/../external/ours/library/unicodeArchive/libunicodeArchive.la:
make -C $(top_builddir)/../external/ours/library/unicodeArchive
$(top_builddir)/../external/ours/library/unicode/libunicode.la:
make -C $(top_builddir)/../external/ours/library/unicode
$(top_builddir)/../external/ours/library/localizationArchive/liblocalizationArchive.la:
make -C $(top_builddir)/../external/ours/library/localizationArchive
$(top_builddir)/../external/ours/library/localization/liblocalization.la:
make -C $(top_builddir)/../external/ours/library/localization
$(top_builddir)/../external/ours/library/fileInterface/libfileInterface.la:
make -C $(top_builddir)/../external/ours/library/fileInterface
$(top_builddir)/../external/ours/library/crypto/libcrypto.la:
make -C $(top_builddir)/../external/ours/library/crypto
$(top_builddir)/../external/ours/library/archive/libarchive.la:
make -C $(top_builddir)/../external/ours/library/archive
$(udplibrary_dir)/output/debug/libudplibrary.a:
make -C $(udplibrary_dir)
$(stlport_dir)/lib/libstlport_gcc.a:
make -C $(stlport_dir)/src -f gcc-linux.mak
$(top_builddir)/../engine/shared/library/sharedGame/src/shared/sui/libsharedGamesharedsui.la:
cd $(top_builddir)/../engine/shared/library/sharedGame/src/shared/sui && $(MAKE)
include $(engine_dir)/../make_include/engine.include
@@ -1,55 +0,0 @@
#include "sharedFoundation/FirstSharedFoundation.h"
#include "ConfigCentralServer.h"
#include "CentralServer.h"
#include "sharedCompression/SetupSharedCompression.h"
#include "sharedDebug/SetupSharedDebug.h"
#include "sharedFile/SetupSharedFile.h"
#include "sharedFoundation/Os.h"
#include "sharedNetwork/NetworkHandler.h"
#include "sharedFoundation/SetupSharedFoundation.h"
#include "sharedRandom/SetupSharedRandom.h"
#include "sharedThread/SetupSharedThread.h"
// ======================================================================
int main(int argc, char ** argv)
{
SetupSharedThread::install();
SetupSharedDebug::install(1024);
//-- setup foundation
SetupSharedFoundation::Data setupFoundationData(SetupSharedFoundation::Data::D_game);
setupFoundationData.lpCmdLine = ConvertCommandLine(argc,argv);
SetupSharedFoundation::install(setupFoundationData);
SetupSharedCompression::install();
SetupSharedFile::install(false);
SetupSharedRandom::install(time(0)); //lint !e732
NetworkHandler::install();
Os::setProgramName("CentralServer");
ConfigCentralServer::install();
std::string cmdLine = setupFoundationData.lpCmdLine;
size_t firstArg = cmdLine.find(" ", 0);
size_t lastSlash = 0;
size_t nextSlash = 0;
while(nextSlash < firstArg)
{
nextSlash = cmdLine.find("/", lastSlash);
if(nextSlash == cmdLine.npos || nextSlash >= firstArg) //lint !e1705 static class members may be accessed by the scoping operator (huh?)
break;
lastSlash = nextSlash + 1;
}
cmdLine = cmdLine.substr(lastSlash);
CentralServer::getInstance().setCommandLine(cmdLine);
//-- run game
SetupSharedFoundation::callbackWithExceptionHandling(CentralServer::run);
NetworkHandler::remove();
SetupSharedFoundation::remove();
return 0;
}
@@ -1,58 +0,0 @@
#include "FirstCentralServer.h"
#include "AuctionTransferClient.h"
#include "sharedLog/Log.h"
AuctionTransferClient::AuctionTransferClient(const char *hostName[], const short port[], int count, const char *identifier[], unsigned identifierCount) :
AuctionTransferAPI( hostName, port, count, identifier, identifierCount )
{
}
AuctionTransferClient::~AuctionTransferClient()
{
}
// Connection status callbacks
void AuctionTransferClient::onConnect(const char* host, unsigned short port, const short current, const short max)
{
LOG("AuctionTransferClient", ("onConnect"));
}
void AuctionTransferClient::onDisconnect(const char *host, const short port, const short current, const short max)
{
LOG("AuctionTransferClient", ("onDisconnect"));
}
/*****************************
void AuctionTransferClient::addCoinToAuction( const ExchangeListCreditsMessage& msg )
{
//1. get transaction id from auction system (save msg details for use when get response)
//2. on response: if success:
// 2a. send prepare transaction
// 2b. on response:
// 2bi. if user connected: send VeAuctionCoinReply (with result code) to user's ES
// 2bii. if user not connected: send immediate abort back to auction service
const unsigned uTrack = getNewTransactionID( NULL );
AuctionAssetDetails &details = m_mPendingRequestDetails[ uTrack ];
details.u8Type = AuctionAssetDetails::TYPE_COIN;
details.u32AccountNum = msg.getAccountNum();
details.u32CharDBID = msg.getCharacterId();
details.i64ItemDBID = 0;
details.u32ItemStackCount = 0;
details.i64Credits = msg.getCredits();
details.sAssetXML = ""; ///msg.getAssetXML();
}
**********************/
@@ -1,141 +0,0 @@
#ifndef AUCTIONSTRANFERCLIENT_H
#define AUCTIONSTRANFERCLIENT_H
#ifndef _WIN32
#include "AuctionTransferGameAPI/AuctionTransferAPI.h"
#else
namespace AuctionTransfer
{
class AuctionTransferAPI
{
public:
AuctionTransferAPI( const char *[], const short [], int , const char *[], unsigned )
{};
virtual void process() {};
};
};
#endif
class AuctionTransferClient : public AuctionTransfer::AuctionTransferAPI
{
public:
AuctionTransferClient(const char *hostName[], const short port[], int count, const char *identifier[], unsigned identifierCount);
virtual ~AuctionTransferClient();
// Connection status callbacks
virtual void onConnect(const char* host, unsigned short port, const short current, const short max);
virtual void onDisconnect(const char *host, const short port, const short current, const short max);
// Callbacks that are responses
void onSendPrepareTransaction(unsigned int, unsigned int, void *) {};
void onSendPrepareTransactionCompressed(unsigned int, unsigned int, void *) {};
void onSendCommitTransaction(unsigned int, unsigned int, void *) {};
void onSendAbortTransaction(unsigned int, unsigned int, void *) {};
void onSendAuditAssetTransfer(unsigned int, unsigned int, void *) {};
void onGetNewTransactionID(unsigned int, unsigned int, int64, void *) {};
// Responses to reply requests
void onReplyReceivePrepareTransaction(unsigned int, unsigned int, void *) {};
void onReplyReceiveCommitTransaction(unsigned int, unsigned int, void *) {};
void onReplyReceiveAbortTransaction(unsigned int, unsigned int, void *) {};
void onReplyReceiveGetCharacterList(unsigned int, unsigned int, void *) {};
// house keeping
void onIdentifyHost(unsigned int, unsigned int, void *) {};
// callbacks initiated by auction
void onReceivePrepareTransaction(unsigned int, int64, unsigned int, unsigned int, int64, const char *) {};
void onReceiveCommitTransaction(unsigned int, int64) {};
void onReceiveAbortTransaction(unsigned int, int64) {};
void onReceiveGetCharacterList(unsigned int, unsigned int, const char *) {};
private:
/*************************************************
struct AuctionAssetDetails
{
enum eAssetTypes
{
TYPE_ITEM,
TYPE_COIN,
TYPE_CHARACTER,
TYPE_FOR_IMAGE_UPLOAD
};
AuctionAssetDetails()
: u8Type( TYPE_ITEM ),
u32AccountNum( 0 ),
u32CharDBID( 0 ),
i64ItemDBID( INVALID_EQUID ),
u32ItemStackCount( 0 ),
i64AssetID( 0 )
{}
uns8 u8Type;
uns32 u32AccountNum;
uns32 u32CharDBID;
int64 i64ItemDBID;
uns32 u32ItemStackCount;
int64 i64Copper;
CharString sAssetXML;
int64 i64AssetID;
};
typedef std::map< unsigned, AuctionAssetDetails > PendingRequestMap;
PendingRequestMap m_mPendingRequestDetails;
struct IncomingPrepareDetails
{
int64 i64TransactionID;
int64 i64AssetID;
uns32 u32DestStationID;
uns32 u32DestCharDBID;
};
typedef std::map< unsigned, IncomingPrepareDetails > IncomingPrepareMap;//key=tracking
IncomingPrepareMap m_mPendingIncomingPrepareDetails;
typedef std::map< unsigned, int64 > IncomingCommitMap;//key=tracking, val=transaction
IncomingCommitMap m_mPendingIncomingCommitDetails;
struct TransferDetails
{
TransferDetails()
: i64AssetID( 0 ),
u32DestStationID( 0 ),
u32DestCharDBID( INVALID_EQUID )
{}
int64 i64AssetID;
uns32 u32DestStationID;
uns32 u32DestCharDBID;
//used when committing
std::vector< uns8 > aAssetSerialData;
int32 i32Copper;
};
typedef std::map< int64, TransferDetails > PendingTransferMap;
PendingTransferMap m_mPendingTransferDetails;
**********************************************/
};
#endif
@@ -1,272 +0,0 @@
#include "GenericApiCore.h"
#include "GenericConnection.h"
#include "GenericMessage.h"
//----------------------------------------
//
// WARNING: These files are NOT standard generic API files
// They have been modified for this project.
// Do NOT replace them with generic API files
//
//----------------------------------------
using namespace std;
#ifdef EXTERNAL_DISTRO
namespace NAMESPACE
{
#endif
//----------------------------------------
ServerTrackObject::ServerTrackObject(unsigned mapped_track, unsigned real_track, GenericConnection *con)
: m_mappedTrack(mapped_track), m_realTrack(real_track), m_connection(con)
//----------------------------------------
{
}
//----------------------------------------
GenericAPICore::GenericAPICore(const char *host,
short port,
unsigned reqTimeout,
unsigned reconnectTimeout,
unsigned noDataTimeoutSecs,
unsigned noAckTimeoutSecs,
unsigned incomingBufSizeInKB,
unsigned outgoingBufSizeInKB,
unsigned keepAlive,
unsigned maxRecvMessageSizeInKB)
: m_currTrack(0),
m_reconnectTimeout(0),
m_outCount(0),
m_pendingCount(0),
m_requestTimeout(reqTimeout),
m_currentConnections(0), m_maxConnections(0),
m_suspended(false),
m_nextConnectionIndex(0)
//----------------------------------------
{
GenericConnection *con = new GenericConnection(host, port, this, reconnectTimeout, noDataTimeoutSecs, noAckTimeoutSecs, incomingBufSizeInKB, outgoingBufSizeInKB, keepAlive, maxRecvMessageSizeInKB);
m_serverConnections.push_back(con);
}
//----------------------------------------
GenericAPICore::GenericAPICore(const char *game, const char *hosts[],
const short port[],
unsigned arraySize,
unsigned reqTimeout,
unsigned reconnectTimeout,
unsigned noDataTimeoutSecs,
unsigned noAckTimeoutSecs,
unsigned incomingBufSizeInKB,
unsigned outgoingBufSizeInKB,
unsigned keepAlive,
unsigned maxRecvMessageSizeInKB)
: m_currTrack(0),
m_reconnectTimeout(0),
m_outCount(0),
m_pendingCount(0),
m_requestTimeout(reqTimeout),
m_currentConnections(0), m_maxConnections(0),
m_suspended(false),
m_nextConnectionIndex(0),
m_game(game)
//----------------------------------------
{
for (unsigned i=0; i<arraySize; i++)
{
GenericConnection *con = new GenericConnection(hosts[i], port[i], this, reconnectTimeout, noDataTimeoutSecs, noAckTimeoutSecs, incomingBufSizeInKB, outgoingBufSizeInKB, keepAlive, maxRecvMessageSizeInKB);
m_serverConnections.push_back(con);
}
}
//----------------------------------------
GenericAPICore::~GenericAPICore()
//----------------------------------------
{
for (std::vector<GenericConnection *>::iterator conIter = m_serverConnections.begin(); conIter != m_serverConnections.end(); conIter++)
{
GenericConnection *con = *conIter;
delete con;
}
m_serverConnections.clear();
for(map<unsigned, GenericResponse *>::iterator iter = m_pending.begin(); iter != m_pending.end(); ++iter)
{
delete (*iter).second;
}
m_pending.empty();
while(m_outCount > 0)
{
delete m_outboundQueue.front().second;
delete m_outboundQueue.front().first;
m_outboundQueue.pop();
--m_outCount;
}
}
//----------------------------------------
unsigned GenericAPICore::submitRequest(GenericRequest *req, GenericResponse *res)
//----------------------------------------
{
++m_outCount;
if(m_currTrack == 0)
{
m_currTrack++;
}
req->setTrack(m_currTrack);
res->setTrack(m_currTrack);
time_t timeout = time(NULL) + m_requestTimeout;
req->setTimeout(timeout);
res->setTimeout(timeout);
m_outboundQueue.push(pair<GenericRequest *, GenericResponse *>(req, res));
return(m_currTrack++);
}
//----------------------------------------
void GenericAPICore::process()
//----------------------------------------
{
GenericRequest *req;
GenericResponse *res;
if (!m_suspended)
{
// Process timeout on pending requests
while((m_outCount > 0) && ((req = m_outboundQueue.front().first)->getTimeout() <= time(NULL)))
{
--m_outCount;
res = m_outboundQueue.front().second;
m_outboundQueue.pop();
responseCallback(res);
delete res;
delete req;
}
// Process timeout on pending responses
while((m_pendingCount > 0) && ((res = (*m_pending.begin()).second)->getTimeout() <= time(NULL)))
{
--m_pendingCount;
m_pending.erase(m_pending.begin());
responseCallback(res);
delete res;
}
while(m_outCount > 0)
{
pair<GenericRequest *, GenericResponse *> out_pair = m_outboundQueue.front();
req = out_pair.first;
res = out_pair.second;
GenericConnection *con = NULL;
if (req->getMappedServerTrack() == 0) // request has no originating "owner" server
{
con = getNextActiveConnection(); // it does not matter which server we send this to
}
else
{
ServerTrackObject *stobj = findServer(req->getMappedServerTrack());
if (stobj)
{
con = stobj->getConnection(); // the server connection to respond to
req->setServerTrack(stobj->getRealServerTrack()); // map server track back to REAL server track
//printf("\nUnmapping %d to %d", stobj->getMappedServerTrack(), req->getMappedServerTrack()); //debug
delete stobj;
}
}
if (con != NULL)
{
Base::ByteStream msg;
req->pack(msg);
con->Send(msg);
m_pending.insert(pair<unsigned, GenericResponse *>(res->getTrack(), res));
--m_outCount;
++m_pendingCount;
m_outboundQueue.pop();
delete req;
}
else
{
//no active connections
break; //from while loop
}
}
}
for (std::vector<GenericConnection *>::iterator conIter = m_serverConnections.begin(); conIter != m_serverConnections.end(); conIter++)
{
GenericConnection *con = *conIter;
con->process();
}
}
//----------------------------------------
GenericConnection *GenericAPICore::getNextActiveConnection()
//----------------------------------------
{
unsigned startIndex = m_nextConnectionIndex;
unsigned maxIndex = m_serverConnections.size() - 1;
GenericConnection *con = NULL;
//loop until we find an active connection, or until we get back
// to where we started
do
{
if (m_serverConnections[m_nextConnectionIndex]->isConnected())
{
con = m_serverConnections[m_nextConnectionIndex];
if (m_nextConnectionIndex == maxIndex)
m_nextConnectionIndex = 0;
else
m_nextConnectionIndex++;
}
else if (++m_nextConnectionIndex > maxIndex)
{
//went past end of vector, start back at 0
m_nextConnectionIndex = 0;
}
}while (con == NULL && m_nextConnectionIndex != startIndex);
return con;
}
//----------------------------------------
void GenericAPICore::countOpenConnections()
//----------------------------------------
{
m_currentConnections = 0;
m_maxConnections = m_serverConnections.size();
for (std::vector<GenericConnection *>::iterator conIter = m_serverConnections.begin(); conIter != m_serverConnections.end(); conIter++)
{
GenericConnection *con = *conIter;
if (con->isConnected())
++m_currentConnections;
}
}
//----------------------------------------
ServerTrackObject *GenericAPICore::findServer(unsigned server_track)
//----------------------------------------
{
std::map<unsigned, ServerTrackObject *>::iterator iter = m_serverTracks.find(server_track);
if (iter == m_serverTracks.end())
return NULL;
ServerTrackObject *stobj = (*iter).second;
m_serverTracks.erase(server_track);
return stobj;
}
#ifdef EXTERNAL_DISTRO
};
#endif
@@ -1,123 +0,0 @@
#if !defined (GENERICAPICORE_H_)
#define GENERICAPICORE_H_
//----------------------------------------
//
// WARNING: These files are NOT standard generic API files
// They have been modified for this project.
// Do NOT replace them with generic API files
//
//----------------------------------------
#pragma warning (disable: 4786)
#include <map>
#include <queue>
#include <time.h>
#include "../Base/Archive.h"
#ifdef EXTERNAL_DISTRO
namespace NAMESPACE
{
#endif
class GenericRequest;
class GenericResponse;
class GenericConnection;
//----------------------------------------------
class ServerTrackObject
//----------------------------------------------
{
public:
ServerTrackObject(unsigned mapped_track, unsigned real_track, GenericConnection *con);
~ServerTrackObject() { }
inline GenericConnection *getConnection() { return m_connection; }
inline unsigned getRealServerTrack() { return m_realTrack; }
inline unsigned getMappedServerTrack() { return m_mappedTrack; }
private:
unsigned m_mappedTrack;
unsigned m_realTrack;
GenericConnection *m_connection;
};
//----------------------------------------------
class GenericAPICore
//----------------------------------------------
{
public:
friend class GenericConnection;
GenericAPICore::GenericAPICore(const char *host,
short port,
unsigned reqTimeout,
unsigned reconnectTimeout,
unsigned noDataTimeoutSecs = 5,
unsigned noAckTimeoutSecs = 5,
unsigned incomingBufSizeInKB = 32,
unsigned outgoingBufSizeInKB = 32,
unsigned keepAlive = 1,
unsigned maxRecvMessageSizeInKB = 0);
/**
* NOTE: arraySize must be actual size of host and port arrays.
* ALSO: cannot specify a 0 array size.
*/
GenericAPICore(const char *game, const char *hosts[],
const short port[],
unsigned arraySize,
unsigned reqTimeout,
unsigned reconnectTimeout,
unsigned noDataTimeoutSecs = 5,
unsigned noAckTimeoutSecs = 5,
unsigned incomingBufSizeInKB = 32,
unsigned outgoingBufSizeInKB = 32,
unsigned keepAlive = 1,
unsigned maxRecvMessageSizeInKB = 0);
virtual ~GenericAPICore();
void process();
virtual void responseCallback(short type, Base::ByteStream::ReadIterator &iter, GenericConnection *con) = 0;
virtual void responseCallback(GenericResponse *R) = 0;
virtual void OnDisconnect(GenericConnection *con) = 0;
virtual void OnConnect(GenericConnection *con) = 0;
void countOpenConnections();
ServerTrackObject *findServer(unsigned server_track);
void suspendProcessing() { m_suspended = true; }
void resumeProcessing() { m_suspended = false; }
unsigned submitRequest(GenericRequest *req, GenericResponse *res);
GenericConnection *getNextActiveConnection();
std::string &getGameCode() { return m_game; }
void addIdentifier(std::string id) { m_gameIdentifiers.push_back(id);}
protected:
std::vector<GenericConnection *> m_serverConnections;
std::map<unsigned, GenericResponse *> m_pending;
std::queue<std::pair<GenericRequest *, GenericResponse *> > m_outboundQueue;
unsigned m_currTrack;
time_t m_reconnectTimeout;
unsigned m_outCount;
unsigned m_pendingCount;
unsigned m_requestTimeout;
unsigned m_currentConnections; // number currently connected
unsigned m_maxConnections; // number that should be connected
std::map<unsigned, ServerTrackObject *> m_serverTracks;
std::vector<std::string> m_gameIdentifiers;
private:
bool m_suspended;
unsigned m_nextConnectionIndex;
std::string m_game;
};
#ifdef EXTERNAL_DISTRO
};
#endif
#endif
@@ -1,218 +0,0 @@
#include "GenericApiCore.h"
#include "GenericConnection.h"
#include "GenericMessage.h"
#include "../AuctionTransferAPICore.h"
//----------------------------------------
//
// WARNING: These files are NOT standard generic API files
// They have been modified for this project.
// Do NOT replace them with generic API files
//
//----------------------------------------
#define REQUEST_SET_API 0
#define GAME_RESOURCE 1
#ifdef EXTERNAL_DISTRO
namespace NAMESPACE
{
#endif
using namespace std;
using namespace Base;
GenericConnection::GenericConnection(const char *host, short port, GenericAPICore *apiCore, unsigned reconnectTimeout, unsigned noDataTimeoutSecs, unsigned noAckTimeoutSecs, unsigned incomingBufSizeInKB, unsigned outgoingBufSizeInKB, unsigned keepAlive, unsigned maxRecvMessageSizeInKB)
: m_bConnected(CON_NONE),
m_apiCore(apiCore),
m_con(NULL),
m_host(host),
m_port(port),
m_lastTrack(123455), //random choice != 1
m_conState(CON_DISCONNECT),
m_reconnectTimeout(reconnectTimeout)
{
TcpManager::TcpParams params;
params.incomingBufferSize = incomingBufSizeInKB * 1024;
params.outgoingBufferSize = outgoingBufSizeInKB * 1024;
params.maxConnections = 1;
params.port = 0;
params.maxRecvMessageSize = maxRecvMessageSizeInKB*1024;
params.keepAliveDelay = keepAlive * 1000;
params.noDataTimeout = noDataTimeoutSecs * 1000;
//params.oldestUnacknowledgedTimeout = noAckTimeoutSecs * 1000;
m_manager = new TcpManager(params);
}
GenericConnection::~GenericConnection()
{
if(m_con)
{
m_con->SetHandler(NULL);
m_con->Disconnect();//don't worry about onterminated being called, we've set it's handler to null, so it wont
m_con->Release();
}
m_manager->Release();
}
void GenericConnection::disconnect()
{
if (m_con)
{
m_con->Disconnect();
//no need to release, since callback to onTerminated releases it, and callback is allways made m_con->Release();
m_con = NULL;
}
m_conState = CON_DISCONNECT;
m_bConnected = CON_NONE;
}
void GenericConnection::OnTerminated(TcpConnection *con)
{
// m_apiCore->OnDisconnect(m_host.c_str(), m_port);
m_apiCore->OnDisconnect(this);
if(m_con)
{
m_con->Release();
m_con = NULL;
}
m_conState = CON_DISCONNECT;
m_bConnected = CON_NONE;
}
void GenericConnection::OnRoutePacket(TcpConnection *con, const unsigned char *data, int dataLen)
{
short type;
unsigned track;
ByteStream msg(data, dataLen);
ByteStream::ReadIterator iter = msg.begin();
get(iter, type);
get(iter, track);
GenericResponse *res = NULL;
// the following if block is a temporary fix that prevents
// a crash with a game team in which they occasionally find
// themselves receiving a dupe track in consecutive calls to
// OnRoutePacket (which then leads to a callback being called
// twice and data being invalid on the second call -> crash!).
// TODO: resolve this BK
/* if (track != 0 &&
track == m_lastTrack)
{
printf("!!! ERROR !!! Got a duplicate track ID %u\n", track);
return;
}
m_lastTrack = track;
*/
// end temporary fix.
if(track == 0) // notification message from the server, not as a response to a request from this API
{
if (type == ATGAME_REQUEST_CONNECT)
{ // this is a special case, for when we have identified our game code to server
m_bConnected = CON_IDENTIFIED;
m_apiCore->OnConnect(this);
}
else
{
m_apiCore->responseCallback(type, iter, this);
}
}
else
{
map<unsigned, GenericResponse *>::iterator mapIter = m_apiCore->m_pending.find(track);
if(mapIter != m_apiCore->m_pending.end())
{
res = (*mapIter).second;
iter = msg.begin();
res->unpack(iter);
m_apiCore->responseCallback(res);
m_apiCore->m_pendingCount--;
m_apiCore->m_pending.erase(mapIter);
delete res;
}
}
}
void GenericConnection::process()
{
switch(m_conState)
{
case CON_DISCONNECT:
// create connection object, attempting to connect and
// checking for connection in next state, CON_NEGOTIATE
m_con = m_manager->EstablishConnection(m_host.c_str(), m_port);
if(m_con)
{
m_con->SetHandler(this);
m_conState = CON_NEGOTIATE;
m_conTimeout = time(NULL) + m_reconnectTimeout;
}
break;
case CON_NEGOTIATE:
// check for connection
if(m_con->GetStatus() == TcpConnection::StatusConnected)
{
// we're connected
m_conState = CON_CONNECT;
m_bConnected = CON_CONNECTED;
// instead of calling OnConnect() right now, we are going to submit a connection packet
// identifying us
// m_apiCore->OnConnect(this);
Base::ByteStream msg;
put(msg, (short)REQUEST_SET_API);
put(msg, (unsigned)0); // track
put(msg, (unsigned)API_VERSION_CODE);
put(msg, GAME_RESOURCE); // identify us as a game connection resource
// now add in the game identifiers
put(msg, (unsigned)m_apiCore->m_gameIdentifiers.size()); // number of strings to read
for(unsigned index = 0; index < m_apiCore->m_gameIdentifiers.size(); index++)
put(msg, std::string(m_apiCore->m_gameIdentifiers[index]));
Send(msg);
}
else if(time(NULL) > m_conTimeout)
{
// we did not connect
m_con->Disconnect();
//no need to release, since callback to onTerminated releases it, and callback is allways made m_con->Release();
m_con = NULL;
m_conState = CON_DISCONNECT;
m_bConnected = CON_NONE;
}
break;
case CON_CONNECT:
// do nothing
break;
default:
// this should not occur, but we revert to CON_DISCONNECT if it does
m_conState = CON_DISCONNECT;
m_bConnected = CON_NONE;
if (m_con)
{
m_con->Disconnect();
//no need to release, since callback to onTerminated releases it, and callback is allways made m_con->Release();
m_con = NULL;
}
}
m_manager->GiveTime();
}
void GenericConnection::Send(Base::ByteStream &msg)
{
if(m_con && m_con->GetStatus() == TcpConnection::StatusConnected)
{
m_con->Send((const char *)msg.getBuffer(), msg.getSize());
}
}
#ifdef EXTERNAL_DISTRO
};
#endif
@@ -1,88 +0,0 @@
#if !defined (GENERICCONNECTION_H_)
#define GENERICCONNECTION_H_
//----------------------------------------
//
// WARNING: These files are NOT standard generic API files
// They have been modified for this project.
// Do NOT replace them with generic API files
//
//----------------------------------------
#include "../Base/Archive.h"
#include "../TcpLibrary/TcpManager.h"
#include "../TcpLibrary/TcpConnection.h"
#include "../TcpLibrary/TcpHandlers.h"
#ifdef EXTERNAL_DISTRO
namespace NAMESPACE
{
#endif
static const unsigned API_VERSION_CODE = 1;
//////////////////////////////////////////////////////////////////////////////////////////////
// these will never change. They will also be in the enumeration. These are defined here to
// prevent us from having to re-compile and include the enumeration file in this generic code.
#define ATGAME_REQUEST_CONNECT 0
#define ATWEB_REQUEST_CONNECT 10000
//////////////////////////////////////////////////////////////////////////////////////////////
enum eConState
{
CON_DISCONNECT,
CON_NEGOTIATE,
CON_CONNECT
};
enum eConnectStatus
{
CON_NONE,
CON_CONNECTED,
CON_IDENTIFIED
};
class GenericConnection : public TcpConnectionHandler
{
public:
GenericConnection(const char *host,
short port,
GenericAPICore *apiCore,
unsigned reconnectTimeout,
unsigned noDataTimeoutSecs = 5,
unsigned noAckTimeoutSecs = 5,
unsigned incomingBufSizeInKB = 32,
unsigned outgoingBufSizeInKB = 32,
unsigned keepAlive = 1,
unsigned maxRecvMessageSizeInKB = 0);
virtual ~GenericConnection();
virtual void OnRoutePacket(TcpConnection *con, const unsigned char *data, int dataLen);
virtual void OnTerminated(TcpConnection *con);
void Send(Base::ByteStream &msg);
inline const char *getHost() const { return m_host.c_str(); }
inline const short getPort() const { return m_port; }
inline eConnectStatus isConnected() { return m_bConnected; }
void disconnect();
void process();
private:
eConnectStatus m_bConnected;
GenericAPICore *m_apiCore;
TcpManager *m_manager;
TcpConnection *m_con;
std::string m_host;
short m_port;
unsigned m_lastTrack;
eConState m_conState;
time_t m_conTimeout;
unsigned m_reconnectTimeout;
};
#ifdef EXTERNAL_DISTRO
};
#endif
#endif
@@ -1,44 +0,0 @@
#include "GenericMessage.h"
//----------------------------------------
//
// WARNING: These files are NOT standard generic API files
// They have been modified for this project.
// Do NOT replace them with generic API files
//
//----------------------------------------
#ifdef EXTERNAL_DISTRO
namespace NAMESPACE
{
#endif
using namespace Base;
//-------------------------------------------
GenericRequest::GenericRequest(short type, unsigned server_track)
: m_type(type), m_server_track(server_track)
//-------------------------------------------
{
}
//-------------------------------------------
GenericResponse::GenericResponse(short type, unsigned result, void *user)
: m_type(type), m_result(result), m_user(user)
//-------------------------------------------
{
}
//-----------------------------------------
void GenericResponse::unpack(ByteStream::ReadIterator &iter)
//-----------------------------------------
{
get(iter, m_type);
get(iter, m_track);
get(iter, m_result);
}
#ifdef EXTERNAL_DISTRO
};
#endif
@@ -1,75 +0,0 @@
#if !defined (GENERICMESSAGE_H_)
#define GENERICMESSAGE_H_
//----------------------------------------
//
// WARNING: These files are NOT standard generic API files
// They have been modified for this project.
// Do NOT replace them with generic API files
//
//----------------------------------------
#include <time.h>
#include "../Base/Archive.h"
#ifdef EXTERNAL_DISTRO
namespace NAMESPACE
{
#endif
//-------------------------------------------
class GenericRequest
//-------------------------------------------
{
public:
GenericRequest(short type, unsigned server_track = 0);
virtual ~GenericRequest() {};
virtual void pack(Base::ByteStream &msg) = 0;
short getType() const { return m_type; }
void setTimeout(time_t t) { m_timeout = t; }
time_t getTimeout() { return m_timeout; }
void setTrack(unsigned t) { m_track = t; }
unsigned getTrack() const { return m_track; }
inline const unsigned getMappedServerTrack() const { return m_server_track; }
inline void setServerTrack(unsigned track) { m_server_track = track; }
protected:
short m_type;
unsigned m_track;
time_t m_timeout;
unsigned m_server_track;
};
// Basic response message from server. In the case that this response to a request
// submitted from this API, the response would have been generated at request submission
// time, and the timeout value filled in appropriatly
//-------------------------------------------
class GenericResponse
//-------------------------------------------
{
public:
GenericResponse(short type, unsigned result, void *user);
virtual ~GenericResponse() {};
virtual void unpack(Base::ByteStream::ReadIterator &iter);
short getType() const { return m_type; }
void setTimeout(time_t t) { m_timeout = t; }
time_t getTimeout() { return m_timeout; }
void setTrack(unsigned t) { m_track = t; }
unsigned getTrack() const { return m_track; }
unsigned getResult() const { return m_result; }
void setResult(unsigned res) { m_result = res; }
void * getUser() const { return m_user; }
protected:
short m_type;
unsigned m_track;
unsigned m_result;
void *m_user;
time_t m_timeout;
};
#ifdef EXTERNAL_DISTRO
};
#endif
#endif
@@ -1,13 +0,0 @@
AUTOMAKE_OPTIONS=foreign
INCLUDES = \
-I$(top_srcdir)/server/application/CentralServer/src/shared/AuctionTransferGameAPI \
-I$(top_srcdir)/external/3rd/library/platform -I.. \
-I$(platform_dir)/utils/Base/
METASOURCES = AUTO
libAuctionTransferGameAPIATGenericAPI_la_LDFLAGS = -avoid-version
noinst_LTLIBRARIES = libAuctionTransferGameAPIATGenericAPI.la
libAuctionTransferGameAPIATGenericAPI_la_SOURCES = GenericApiCore.cpp GenericApiCore.h\
GenericConnection.cpp GenericConnection.h GenericMessage.cpp\
GenericMessage.h
AM_CXXFLAGS = -DEXTERNAL_DISTRO -DNAMESPACE=AuctionTransfer -DUSE_TCP_LIBRARY
@@ -1,194 +0,0 @@
#include "AuctionTransferAPI.h"
#include "AuctionTransferAPICore.h"
#include "Request.h"
#include "Response.h"
#include "zip/GZipHelper.h"
#define DEFAULT_HOST "sdt-auctionsys1"
#define DEFAULT_PORT 5901
#define DEFAULT_IDENTIFIER "GAME+UNKNOWN"
//////////////////////////////////////////////////////////////////////////////////////
namespace AuctionTransfer
{
//////////////////////////////////////////////////////////////////////////////////////
AuctionTransferAPI::AuctionTransferAPI(const char *hostName[], const short port[], int count, const char *identifier[], unsigned identifierCount, unsigned reqTimeout, unsigned maxRecvMessageSizeInKB)
{
m_apiCore = new AuctionTransferAPICore(hostName, port, count, this, identifier, identifierCount, reqTimeout, maxRecvMessageSizeInKB);
}
//////////////////////////////////////////////////////////////////////////////////////
AuctionTransferAPI::AuctionTransferAPI(const char *hostNames, const char *identifiers)
{
std::vector<const char *> hostArray;
std::vector<const char *> identifierArray;
std::vector<short> portArray;
char hostConfig[4096];
char identifierConfig[4096];
if (hostNames == NULL)
hostNames = DEFAULT_HOST;
if(identifiers == NULL)
identifiers = DEFAULT_IDENTIFIER;
// parse the hosts and ports out :
strncpy(hostConfig, hostNames, 4096); hostConfig[4095] = 0;
char *ptr;
if ((ptr = strtok(hostConfig, " ")))
{
do
{
char * host = ptr;
char * portStr = strchr(host, ':');
unsigned short port = DEFAULT_PORT;
if (portStr)
{
*portStr++ = 0;
port = atoi(portStr);
}
if (::strlen(host) && port)
{
hostArray.push_back(host);
portArray.push_back(port);
}
}
while ((ptr = strtok(NULL, " ")) != NULL);
}
strncpy(identifierConfig, identifiers, 4096); identifierConfig[4095] = 0;
// parse the identifiers out
if ((ptr = strtok(identifierConfig, ";")))
{
do
{
char * identifier = ptr;
if (::strlen(identifier))
{
identifierArray.push_back(identifier);
}
}
while ((ptr = strtok(NULL, ";")) != NULL);
}
if (hostArray.empty())
{
hostArray.push_back(DEFAULT_HOST);
portArray.push_back(DEFAULT_PORT);
}
if(identifierArray.empty())
identifierArray.push_back(DEFAULT_IDENTIFIER);
m_apiCore = new AuctionTransferAPICore(&hostArray[0], &portArray[0], hostArray.size(), this, &identifierArray[0], identifierArray.size());
}
//////////////////////////////////////////////////////////////////////////////////////
AuctionTransferAPI::~AuctionTransferAPI()
{
if( m_apiCore)
delete m_apiCore;
}
//////////////////////////////////////////////////////////////////////////////////////
void AuctionTransferAPI::process()
{
m_apiCore->process();
}
//////////////////////////////////////////////////////////////////////////////////////
// Calls and replies
//////////////////////////////////////////////////////////////////////////////////////
unsigned AuctionTransferAPI::replyReceiveAbortTransaction(unsigned trackingNumber, unsigned responseCode, void *user)
{
ReplyRequest *req = new ReplyRequest( GAME_REPLY_RECEIVE_ABORT, trackingNumber, responseCode );
return m_apiCore->submitRequest( req, new CommonResponse( GAME_REPLY_RECEIVE_ABORT, user ));
}
//////////////////////////////////////////////////////////////////////////////////////
unsigned AuctionTransferAPI::replyReceiveCommitTransaction(unsigned trackingNumber, unsigned responseCode, void *user)
{
ReplyRequest *req = new ReplyRequest( GAME_REPLY_RECEIVE_COMMIT, trackingNumber, responseCode );
return m_apiCore->submitRequest( req, new CommonResponse( GAME_REPLY_RECEIVE_COMMIT, user ));
}
//////////////////////////////////////////////////////////////////////////////////////
unsigned AuctionTransferAPI::replyReceivePrepareTransaction(unsigned trackingNumber, unsigned responseCode, void *user)
{
ReplyRequest *req = new ReplyRequest( GAME_REPLY_RECEIVE_PREPARE_TRANSACTION, trackingNumber, responseCode );
return m_apiCore->submitRequest( req, new CommonResponse( GAME_REPLY_RECEIVE_PREPARE_TRANSACTION, user ));
}
//////////////////////////////////////////////////////////////////////////////////////
unsigned AuctionTransferAPI::sendAbortTransaction(long long transactionID, void *user)
{
CommonRequest *req = new CommonRequest( GAME_REQUEST_SEND_ABORT, 0, transactionID );
return m_apiCore->submitRequest( req, new CommonResponse( GAME_REQUEST_SEND_ABORT, user ));
}
//////////////////////////////////////////////////////////////////////////////////////
unsigned AuctionTransferAPI::sendCommitTransaction(long long transactionID, void *user)
{
CommonRequest *req = new CommonRequest( GAME_REQUEST_SEND_COMMIT, 0, transactionID );
return m_apiCore->submitRequest( req, new CommonResponse( GAME_REQUEST_SEND_COMMIT, user ));
}
//////////////////////////////////////////////////////////////////////////////////////
unsigned AuctionTransferAPI::sendPrepareTransaction(const char *serverIdentifier, long long transactionID, unsigned stationID, unsigned characterID, long long assetID, const char *xmlAsset, void *user, bool compress)
{
RequestTypes requestEnum = GAME_REQUEST_SEND_PREPARE_TRANSACTION;
GenericRequest *req = NULL;
if( compress )
{
requestEnum = GAME_REQUEST_SEND_PREPARE_TRANSACTION_COMPRESSED;
// compress and create the request here
char *data = (char *)xmlAsset;
CA2GZIP zippedData(data, strlen(xmlAsset));
req = new SendPrepareCompressedRequest( requestEnum, 0, serverIdentifier, transactionID, stationID, characterID, assetID, zippedData.pgzip, zippedData.Length );
}
else
{
req = new SendPrepareRequest( requestEnum, 0, serverIdentifier, transactionID, stationID, characterID, assetID, xmlAsset );
}
return m_apiCore->submitRequest( req, new CommonResponse( requestEnum, user ));
}
//////////////////////////////////////////////////////////////////////////////////////
unsigned AuctionTransferAPI::sendPrepareTransactionCompressed (const char *serverIdentifier, long long transactionID, unsigned stationID, unsigned characterID, long long assetID, const unsigned char *zippedXmlAsset, unsigned length, void *user)
{
SendPrepareCompressedRequest *req = new SendPrepareCompressedRequest( GAME_REQUEST_SEND_PREPARE_TRANSACTION_COMPRESSED, 0, serverIdentifier, transactionID, stationID, characterID, assetID, zippedXmlAsset, length );
return m_apiCore->submitRequest( req, new CommonResponse( GAME_REQUEST_SEND_PREPARE_TRANSACTION_COMPRESSED, user ));
}
//////////////////////////////////////////////////////////////////////////////////////
unsigned AuctionTransferAPI::replyReceiveGetCharacterList(unsigned trackingNumber, unsigned responseCode, const Character characters[], unsigned numCharacters, void *user)
{
ReplyGetCharacterListRequest *req = new ReplyGetCharacterListRequest(GAME_REPLY_RECEIVE_GET_CHARACTER_LIST, trackingNumber, responseCode, characters, numCharacters);
return m_apiCore->submitRequest(req, new CommonResponse(GAME_REPLY_RECEIVE_GET_CHARACTER_LIST, user));
}
//////////////////////////////////////////////////////////////////////////////////////
unsigned AuctionTransferAPI::identifyHost( const char *serverID[], unsigned idCount, void *user)
{
IdentifyServerRequest *req = new IdentifyServerRequest(REQUEST_SET_SERVER_LIST, 0, serverID, idCount);
return m_apiCore->submitRequest( req, new CommonResponse(REQUEST_SET_SERVER_LIST, user));
}
//////////////////////////////////////////////////////////////////////////////////////
unsigned AuctionTransferAPI::sendAuditAssetTransfer(const char *gameCode, const char *serverCode, long long inGameAssetID, unsigned stationID, const char *event, const char *message, void *user)
{
SendAuditRequest *req = new SendAuditRequest( GAME_SEND_AUDIT_MESSAGE, 0, gameCode, serverCode, inGameAssetID, stationID, event, message );
return m_apiCore->submitRequest(req, new CommonResponse(GAME_SEND_AUDIT_MESSAGE, user));
}
//////////////////////////////////////////////////////////////////////////////////////
unsigned AuctionTransferAPI::getNewTransactionID(void *user)
{
GetIDRequest *req = new GetIDRequest( GAME_REQUEST_GET_TRANSACTION_ID, 0);
return m_apiCore->submitRequest(req, new GetIDResponse( GAME_REQUEST_GET_TRANSACTION_ID, user));
}
}; // namespace
//////////////////////////////////////////////////////////////////////////////////////
@@ -1,92 +0,0 @@
#ifndef AUCTIONTRANSFERAPI_H
#define AUCTIONTRANSFERAPI_H
#pragma warning (disable : 4786)
#include "AuctionTransferEnum.h"
#include "Base/Archive.h"
#include "Character.h"
//////////////////////////////////////////////////////////////////////////////////////
namespace AuctionTransfer
{
class AuctionTransferAPICore;
//////////////////////////////////////////////////////////////////////////////////////
class AuctionTransferAPI
{
public:
// constructor & destructor
AuctionTransferAPI(const char *hostName[], const short port[], int count, const char *identifier[], unsigned identifierCount, unsigned reqTimeout = 60, unsigned maxRecvMessageSizeInKB = 16000);
///////////////////////////////////////////////////////////////////////////////////////////////////////////
// the identifier list does not have one entry for each connection, it is a simple list of world names that
// are handled by this API connection, no matter how many servers are connected to. In the case of EQ2 this
// identifier list will just contain 1 name, the name of the world making the connection.
// the following constructor does the same as the one above, except that the host array is in the format of:
// "hostname1:port1 hostname2:port2"
// and the identifier array would be a semi-colon separated list of world names such as:
// "Guk Befallen" or "GUK"
AuctionTransferAPI(const char *hostNames, const char *identifiers);
virtual ~AuctionTransferAPI();
// connect and disconnect call backs
virtual void onConnect(const char* hostname, unsigned short port, const short current, const short max) = 0;
virtual void onDisconnect(const char *host, const short port, const short current, const short max) = 0;
//processing
void process();
// Requests Generated by API
unsigned sendPrepareTransaction (const char *serverIdentifier, long long transactionID, unsigned stationID, unsigned characterID, long long assetID, const char *xmlAsset, void *user, bool compress = false);
unsigned sendPrepareTransactionCompressed (const char *serverIdentifier, long long transactionID, unsigned stationID, unsigned characterID, long long assetID, const unsigned char *zippedXmlAsset, unsigned length, void *user);
unsigned sendCommitTransaction (long long transactionID, void *user);
unsigned sendAbortTransaction (long long transactionID, void *user);
unsigned sendAuditAssetTransfer(const char *gameCode, const char *serverCode, long long inGameAssetID, unsigned stationID, const char *event, const char *message, void *user);
unsigned getNewTransactionID(void *user);
// requests as responses to a call initiated by the auction system
unsigned replyReceivePrepareTransaction (unsigned trackingNumber,unsigned responseCode,void *user);
unsigned replyReceiveCommitTransaction (unsigned trackingNumber, unsigned responseCode, void *user);
unsigned replyReceiveAbortTransaction (unsigned trackingNumber, unsigned responseCode, void *user);
unsigned replyReceiveGetCharacterList(unsigned trackingNumber, unsigned responseCode, const Character characters[], unsigned numCharacters, void *user);
// house keeping routines
unsigned identifyHost( const char *serverID[], unsigned idCount, void *user);
// Callbacks that are repsonses
virtual void onSendPrepareTransaction (unsigned trackingNumber, unsigned responseCode, void *user) = 0;
virtual void onSendPrepareTransactionCompressed (unsigned trackingNumber, unsigned responseCode, void *user) = 0;
virtual void onSendCommitTransaction (unsigned trackingNumber, unsigned responseCode, void *user) = 0;
virtual void onSendAbortTransaction (unsigned trackingNumber, unsigned responseCode, void *user) = 0;
virtual void onSendAuditAssetTransfer(unsigned trackingNumber, unsigned responseCode, void *user) = 0;
virtual void onGetNewTransactionID( unsigned trackingNumber, unsigned responseCode, long long transactionID, void *user) = 0;
// responses to reply requests
virtual void onReplyReceivePrepareTransaction (unsigned trackingNumber, unsigned responseCode, void *user) = 0;
virtual void onReplyReceiveCommitTransaction (unsigned trackingNumber, unsigned responseCode, void *user) = 0;
virtual void onReplyReceiveAbortTransaction (unsigned trackingNumber, unsigned responseCode, void *user) = 0;
virtual void onReplyReceiveGetCharacterList(unsigned trackingNumber, unsigned responseCode, void *user) = 0;
// house keeping callbacks
virtual void onIdentifyHost(unsigned trackingNumber, unsigned responseCode, void *user) = 0;
// Callbacks initiated by the Auction System
virtual void onReceivePrepareTransaction (unsigned trackingNumber, long long transactionID, unsigned stationID, unsigned characterID, long long assetID, const char *newName) = 0;
virtual void onReceiveCommitTransaction (unsigned trackingNumber, long long transactionID) = 0;
virtual void onReceiveAbortTransaction (unsigned trackingNumber, long long transactionID) = 0;
virtual void onReceiveGetCharacterList(unsigned trackingNumber, unsigned stationID, const char *serverID) = 0;
private:
AuctionTransferAPICore *m_apiCore;
};
}; // namespace
//////////////////////////////////////////////////////////////////////////////////////
#endif
@@ -1,181 +0,0 @@
#include "AuctionTransferAPICore.h"
#include "AuctionTransferAPI.h"
#include "Response.h"
//////////////////////////////////////////////////////////////////////////////////////
namespace AuctionTransfer
{
/*/////////////////////////////////////////////////////////////////////////////////////
AuctionTransferAPICore::AuctionTransferAPICore(const char *hostName[], const short port[], int count, AuctionTransferAPI *api, const char *identifier[], unsigned identifierCount)
: GenericAPICore(identifier[0], hostName, port, count, 45, 5, 0, 90, 32, 32),
m_api(api),
m_mappedServerTrack(1000)
//////////////////////////////////////////////////////////////////////////////////////
{
for(unsigned i = 0; i < identifierCount; i++)
addIdentifier(identifier[i]);
}
*/
//////////////////////////////////////////////////////////////////////////////////////
AuctionTransferAPICore::AuctionTransferAPICore(const char *hostName[], const short port[], int count, AuctionTransferAPI *api, const char *identifier[], unsigned identifierCount, unsigned reqTimeout, unsigned maxRecvMessageSizeInKB)
: GenericAPICore(identifier[0], hostName, port, count, reqTimeout, 5, 0, 90, 32, 32, 1, maxRecvMessageSizeInKB),
m_api(api),
m_mappedServerTrack(1000)
//////////////////////////////////////////////////////////////////////////////////////
{
for(unsigned i = 0; i < identifierCount; i++)
addIdentifier(identifier[i]);
}
//////////////////////////////////////////////////////////////////////////////////////
AuctionTransferAPICore::~AuctionTransferAPICore()
//////////////////////////////////////////////////////////////////////////////////////
{
}
//////////////////////////////////////////////////////////////////////////////////////
void AuctionTransferAPICore::OnConnect(GenericConnection *connection)
//////////////////////////////////////////////////////////////////////////////////////
{
countOpenConnections();
m_api->onConnect(connection->getHost(), connection->getPort(), m_currentConnections, m_maxConnections);
}
//////////////////////////////////////////////////////////////////////////////////////
void AuctionTransferAPICore::OnDisconnect(GenericConnection *connection)
//////////////////////////////////////////////////////////////////////////////////////
{
countOpenConnections();
m_api->onDisconnect(connection->getHost(), connection->getPort(), m_currentConnections, m_maxConnections);
}
//////////////////////////////////////////////////////////////////////////////////////
void AuctionTransferAPICore::responseCallback(GenericResponse *response)
//////////////////////////////////////////////////////////////////////////////////////
// these callbacks are a result of a call initiated by the game server.
//////////////////////////////////////////////////////////////////////////////////////
{
switch(response->getType())
{
case GAME_REPLY_RECEIVE_PREPARE_TRANSACTION:
m_api->onReplyReceivePrepareTransaction(response->getTrack(),
response->getResult(),
response->getUser());
break;
case GAME_REPLY_RECEIVE_COMMIT:
m_api->onReplyReceiveCommitTransaction( response->getTrack(),
response->getResult(),
response->getUser());
break;
case GAME_REPLY_RECEIVE_ABORT:
m_api->onReplyReceiveAbortTransaction( response->getTrack(),
response->getResult(),
response->getUser());
break;
case GAME_REQUEST_SEND_PREPARE_TRANSACTION:
m_api->onSendPrepareTransaction(response->getTrack(),
response->getResult(),
response->getUser());
break;
case GAME_REQUEST_SEND_PREPARE_TRANSACTION_COMPRESSED:
m_api->onSendPrepareTransactionCompressed(response->getTrack(),
response->getResult(),
response->getUser());
break;
case GAME_REQUEST_SEND_COMMIT:
m_api->onSendCommitTransaction( response->getTrack(),
response->getResult(),
response->getUser());
break;
case GAME_REQUEST_SEND_ABORT:
m_api->onSendAbortTransaction( response->getTrack(),
response->getResult(),
response->getUser());
break;
case GAME_REPLY_RECEIVE_GET_CHARACTER_LIST:
m_api->onReplyReceiveGetCharacterList( response->getTrack(),
response->getResult(),
response->getUser());
break;
case GAME_SEND_AUDIT_MESSAGE:
m_api->onSendAuditAssetTransfer( response->getTrack(),
response->getResult(),
response->getUser());
break;
case REQUEST_SET_SERVER_LIST:
m_api->onIdentifyHost( response->getTrack(),
response->getResult(),
response->getUser());
break;
case GAME_REQUEST_GET_TRANSACTION_ID:
{
GetIDResponse *r = static_cast<GetIDResponse *>(response);
m_api->onGetNewTransactionID( r->getTrack(),
r->getResult(),
r->getNewID(),
r->getUser());
}
break;
default:
break;
}
}
//////////////////////////////////////////////////////////////////////////////////////
void AuctionTransferAPICore::responseCallback(short type, Base::ByteStream::ReadIterator &iter, GenericConnection *connection)
//////////////////////////////////////////////////////////////////////////////////////
// these are the callbacks that are initiated from the Auction System. These callbacks
// will be called to initiate a series of communication between the auction system and
// the game servers.
//////////////////////////////////////////////////////////////////////////////////////
{
unsigned real_server_track;
get(iter, real_server_track);
ServerTrackObject *stobj = new ServerTrackObject(++m_mappedServerTrack, real_server_track, connection);
m_serverTracks.insert(std::pair<unsigned, ServerTrackObject *>(m_mappedServerTrack, stobj));
long long transactionID;
get(iter, transactionID);
switch (type)
{
case GAME_REQUEST_RECEIVE_PREPARE_TRANSACTION:
{
unsigned stationID;
unsigned characterID;
long long assetID;
std::string newName;
get(iter, stationID);
get(iter, characterID);
get(iter, assetID);
get(iter, newName);
m_api->onReceivePrepareTransaction(m_mappedServerTrack, transactionID, stationID, characterID, assetID, newName.c_str());
break;
}
case GAME_REQUEST_RECEIVE_COMMIT:
{
m_api->onReceiveCommitTransaction(m_mappedServerTrack, transactionID);
break;
}
case GAME_REQUEST_RECEIVE_ABORT:
{
m_api->onReceiveAbortTransaction(m_mappedServerTrack, transactionID);
break;
}
case GAME_REQUEST_RECEIVE_GET_CHARACTER_LIST:
{
// this had the stationID read in as the transactionID
std::string serverID;
get(iter, serverID);
m_api->onReceiveGetCharacterList(m_mappedServerTrack, transactionID, serverID.c_str());
}
default:
break;
}
}
}; // namespace AuctionTransfer
//////////////////////////////////////////////////////////////////////////////////////
@@ -1,35 +0,0 @@
#ifndef AUCTIONTRANSFERAPICORE_H
#define AUCTIONTRANSFERAPICORE_H
#include "ATGenericAPI/GenericApiCore.h"
#include "ATGenericAPI/GenericConnection.h"
//////////////////////////////////////////////////////////////////////////////////////
namespace AuctionTransfer
{
class AuctionTransferAPI;
//////////////////////////////////////////////////////////////////////////////////////
class AuctionTransferAPICore : public GenericAPICore
{
public:
AuctionTransferAPICore(const char *hostName[], const short port[], int count, AuctionTransferAPI *api, const char *identifier[], unsigned identifierCount, unsigned timeout = 60, unsigned maxRecvMessageSizeInKB = 16000);
virtual ~AuctionTransferAPICore();
void OnConnect(GenericConnection *connection);
void OnDisconnect(GenericConnection *connection);
void responseCallback(GenericResponse *response);
void responseCallback(short type, Base::ByteStream::ReadIterator &iter, GenericConnection *connection);
private:
AuctionTransferAPI *m_api;
unsigned m_mappedServerTrack;
};
}; // namespace AuctionTransfer
//////////////////////////////////////////////////////////////////////////////////////
#endif //AUCTIONTRANSFERAPICORE_H
@@ -1,164 +0,0 @@
#ifndef AUCTIONTRANSFERENUM_H
#define AUCTIONTRANSFERENUM_H
#include <map>
#include <string>
#define DEFAULT_TIMEOUTSECS 60
//////////////////////////////////////////////////////////////////////////////////////
namespace AuctionTransfer
{
enum CloseReason
{
REASON_HOST_UNREACHABLE,
REASON_LOCAL_DISCONNECT,
REASON_REMOTE_DISCONNECT,
REASON_SOCKET_FAILURE,
REASON_DNS_FAILURE
};
enum ResponseCode
{
RESPONSE_FIRST = 0,
RESPONSE_UNKNOWN = RESPONSE_FIRST, // Initial state internally for call denotes no response yet
RESPONSE_ACCEPTED = 1,
RESPONSE_REJECTED,
RESPONSE_FAILURE,
RESPONSE_DUPLICATE,
GAME_API_TIME_OUT, //5
TRANSFER_SERVER_TIME_OUT,
AUCTION_API_TIME_OUT,
RESPONSE_REJECTED_INVALID_XML,
RESPONSE_REJECTED_USER_NOT_REGISTERED,
RESPONSE_REJECTED_UNABLE_TO_VALIDATE_USER, //10
RESPONSE_REJECTED_NO_PAPER_DOLL_IMAGE,
RESPONSE_REJECTED_INVALID_TRANSACTION_ID,
RESPONSE_REJECTED_USER_NOT_AUTHORIZED,
RESPONSE_REJECTED_HOLDING_AREA_FULL,
RESPONSE_REJECTED_HOLDING_AREA_ASSET_TOO_OLD, //15
RESPONSE_REJECTED_CHARACTER_LIMIT_REACHED,
RESPONSE_REJECTED_CHARACTER_NOT_AVAILABLE,
RESPONSE_REJECTED_MAILBOX_FULL,
RESPONSE_REJECTED_GAME_SERVER_DOWN,
RESPONSE_NAME_INVALID, //20
RESPONSE_NAME_TAKEN,
RESPONSE_FAILURE_DATABASE,
RESPONSE_FAILURE_SERVER,
RESPONSE_FAILURE_NETWORK,
RESPONSE_INVALID_ALIGNMENT, //25
RESPONSE_WEB_SERVICE_TIMEOUT,
RESPONSE_REJECTED_EMAIL_NOT_VALIDATED,
//NOTE: THESE ALWAYS STAY AT THE END. IF EVER ADD A VALUE AFTER THE LAST RESPONSE_*, THEN IT NEEDS TO BE ASSIGNED BELOW
RESPONSE_LAST = RESPONSE_REJECTED_EMAIL_NOT_VALIDATED,
RESPONSE_COUNT = RESPONSE_LAST - RESPONSE_FIRST + 1
};
enum RequestTypes
{
REQUEST_SET_API = 0,
REQUEST_SET_SERVER_LIST,
GAME_REQUEST_SEND_PREPARE_TRANSACTION,
GAME_REQUEST_SEND_COMMIT,
GAME_REQUEST_SEND_ABORT,
GAME_REQUEST_RECEIVE_PREPARE_TRANSACTION, //5
GAME_REQUEST_RECEIVE_COMMIT,
GAME_REQUEST_RECEIVE_ABORT,
GAME_REPLY_RECEIVE_PREPARE_TRANSACTION,
GAME_REPLY_RECEIVE_COMMIT,
GAME_REPLY_RECEIVE_ABORT, //10
GAME_REQUEST_RECEIVE_GET_CHARACTER_LIST,
GAME_REPLY_RECEIVE_GET_CHARACTER_LIST,
GAME_SEND_AUDIT_MESSAGE,
GAME_REQUEST_GET_TRANSACTION_ID,
GAME_REQUEST_SEND_PREPARE_TRANSACTION_COMPRESSED,
WEB_REQUEST_SEND_PREPARE_TRANSACTION = 10000,
WEB_REQUEST_SEND_COMMIT,
WEB_REQUEST_SEND_ABORT,
WEB_REQUEST_RECEIVE_PREPARE_TRANSACTION,
WEB_REQUEST_RECEIVE_COMMIT,
WEB_REQUEST_RECEIVE_ABORT, //10005
WEB_REPLY_RECEIVE_PREPARE_TRANSACTION,
WEB_REPLY_RECEIVE_COMMIT,
WEB_REPLY_RECEIVE_ABORT,
WEB_REQUEST_SEND_GET_CHARACTER_LIST,
WEB_REQUEST_SEND_GET_SERVER_LIST, //10010
WEB_REPLY_RECEIVE_AUDIT,
WEB_REQUEST_RECEIVE_GET_TRANSACTION_ID,
WEB_REPLY_RECEIVE_GET_TRANSACTION_ID,
WEB_REQUEST_RECEIVE_PREPARE_TRANSACTION_COMPRESSED,
WEB_REPLY_RECEIVE_PREPARE_TRANSACTION_COMPRESSED
};
#define response_text std::pair<unsigned,const char *>
static const response_text _responseString[RESPONSE_COUNT] =
{
response_text(RESPONSE_UNKNOWN, "RESPONSE_UNKNOWN"),
response_text(RESPONSE_ACCEPTED, "RESPONSE_ACCEPTED"),
response_text(RESPONSE_REJECTED, "RESPONSE_REJECTED"),
response_text(RESPONSE_FAILURE, "RESPONSE_FAILURE"),
response_text(RESPONSE_DUPLICATE, "RESPONSE_DUPLICATE"),
response_text(GAME_API_TIME_OUT, "GAME_API_TIME_OUT"),
response_text(TRANSFER_SERVER_TIME_OUT, "TRANSFER_SERVER_TIME_OUT"),
response_text(AUCTION_API_TIME_OUT, "AUCTION_API_TIME_OUT"),
response_text(RESPONSE_REJECTED_INVALID_XML, "RESPONSE_REJECTED_INVALID_XML"),
response_text(RESPONSE_REJECTED_USER_NOT_REGISTERED, "RESPONSE_REJECTED_USER_NOT_REGISTERED"),
response_text(RESPONSE_REJECTED_UNABLE_TO_VALIDATE_USER, "RESPONSE_REJECTED_UNABLE_TO_VALIDATE_USER"),
response_text(RESPONSE_REJECTED_NO_PAPER_DOLL_IMAGE, "RESPONSE_REJECTED_NO_PAPER_DOLL_IMAGE"),
response_text(RESPONSE_REJECTED_INVALID_TRANSACTION_ID, "RESPONSE_REJECTED_INVALID_TRANSACTION_ID"),
response_text(RESPONSE_REJECTED_USER_NOT_AUTHORIZED, "RESPONSE_REJECTED_USER_NOT_AUTHORIZED"),
response_text(RESPONSE_REJECTED_HOLDING_AREA_FULL, "RESPONSE_REJECTED_HOLDING_AREA_FULL"),
response_text(RESPONSE_REJECTED_HOLDING_AREA_ASSET_TOO_OLD, "RESPONSE_REJECTED_HOLDING_AREA_ASSET_TOO_OLD"),
response_text(RESPONSE_REJECTED_CHARACTER_LIMIT_REACHED, "RESPONSE_REJECTED_CHARACTER_LIMIT_REACHED"),
response_text(RESPONSE_REJECTED_CHARACTER_NOT_AVAILABLE, "RESPONSE_REJECTED_CHARACTER_NOT_AVAILABLE"),
response_text(RESPONSE_REJECTED_MAILBOX_FULL, "RESPONSE_REJECTED_MAILBOX_FULL"),
response_text(RESPONSE_REJECTED_GAME_SERVER_DOWN, "RESPONSE_REJECTED_GAME_SERVER_DOWN"),
response_text(RESPONSE_NAME_INVALID, "RESPONSE_NAME_INVALID"),
response_text(RESPONSE_NAME_TAKEN, "RESPONSE_NAME_TAKEN"),
response_text(RESPONSE_FAILURE_DATABASE, "RESPONSE_FAILURE_DATABASE"),
response_text(RESPONSE_FAILURE_SERVER, "RESPONSE_FAILURE_SERVER"),
response_text(RESPONSE_FAILURE_NETWORK, "RESPONSE_FAILURE_NETWORK"),
response_text(RESPONSE_INVALID_ALIGNMENT, "RESPONSE_INVALID_ALIGNMENT"),
response_text(RESPONSE_WEB_SERVICE_TIMEOUT, "RESPONSE_WEB_SERVICE_TIMEOUT"),
response_text(RESPONSE_REJECTED_EMAIL_NOT_VALIDATED, "RESPONSE_EMAIL_NOT_VALIDATED"),
};
static std::map<unsigned,const char *> ResponseString((const std::map<unsigned,const char *>::value_type *)&_responseString[0],(const std::map<unsigned,const char *>::value_type *)&_responseString[RESPONSE_COUNT]);
static const response_text _responseText[RESPONSE_COUNT] =
{
response_text(RESPONSE_UNKNOWN, "Unknown response code - default."),
response_text(RESPONSE_ACCEPTED, "The operation completed successfully."),
response_text(RESPONSE_REJECTED, "The operation was rejected by by the auction system."),
response_text(RESPONSE_FAILURE, "There was a general failure processing the request."),
response_text(RESPONSE_DUPLICATE, "This transaction was initiated previously."),
response_text(GAME_API_TIME_OUT, "Unable to contact the Auction Transfer Server."),
response_text(TRANSFER_SERVER_TIME_OUT, "The Auction Transfer Server could not Contact the Web Services."),
response_text(AUCTION_API_TIME_OUT, "The SysEng Web Services did not respond."),
response_text(RESPONSE_REJECTED_INVALID_XML, "The XML format was invalid."),
response_text(RESPONSE_REJECTED_USER_NOT_REGISTERED, "The user has not registered in the Auction System yet."),
response_text(RESPONSE_REJECTED_UNABLE_TO_VALIDATE_USER, "The user account was not able to be validated at this time."),
response_text(RESPONSE_REJECTED_NO_PAPER_DOLL_IMAGE, "There was no image uploaded for this character yet."),
response_text(RESPONSE_REJECTED_INVALID_TRANSACTION_ID, "The transaction id is not valid."),
response_text(RESPONSE_REJECTED_USER_NOT_AUTHORIZED, "The station account is not authorized."),
response_text(RESPONSE_REJECTED_HOLDING_AREA_FULL, "The user has too many items in their holding area."),
response_text(RESPONSE_REJECTED_HOLDING_AREA_ASSET_TOO_OLD, "The user has an item in their holding area that is too old."),
response_text(RESPONSE_REJECTED_CHARACTER_LIMIT_REACHED, "Too Many characters in Auctions."),
response_text(RESPONSE_REJECTED_CHARACTER_NOT_AVAILABLE, "The character is not available for this transaction."),
response_text(RESPONSE_REJECTED_MAILBOX_FULL, "The character mailbox is full."),
response_text(RESPONSE_REJECTED_GAME_SERVER_DOWN, "The game server is unable to process the request."),
response_text(RESPONSE_NAME_INVALID, "The new character name is invalid."),
response_text(RESPONSE_NAME_TAKEN, "The new character name is taken."),
response_text(RESPONSE_FAILURE_DATABASE, "There was a database failure during the transaction."),
response_text(RESPONSE_FAILURE_SERVER, "There was a server failure during the transaction."),
response_text(RESPONSE_FAILURE_NETWORK, "There was a network failure during the transaction."),
response_text(RESPONSE_INVALID_ALIGNMENT, "The alignment of the character for this item is incorrect."),
response_text(RESPONSE_WEB_SERVICE_TIMEOUT, "The AppEng web service failed to respond."),
response_text(RESPONSE_REJECTED_EMAIL_NOT_VALIDATED, "The user has not validated their email with the auction system yet."),
};
static std::map<unsigned,const char *> ResponseText((const std::map<unsigned,const char *>::value_type *)&_responseText[0],(const std::map<unsigned,const char *>::value_type *)&_responseText[RESPONSE_COUNT]);
}; //namespace AuctionTransfer
#endif //AUCTIONTRANSFERENUM_H
@@ -1,30 +0,0 @@
Microsoft Visual Studio Solution File, Format Version 8.00
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "AuctionTransferGameAPI", "AuctionTransferGameAPI.vcproj", "{CC51D0B0-3994-474D-BD51-5B49919AEBE0}"
ProjectSection(ProjectDependencies) = postProject
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "TestApp", "TestApp\TestApp.vcproj", "{7AA05E1D-9952-4432-9975-6C00659BC0ED}"
ProjectSection(ProjectDependencies) = postProject
{CC51D0B0-3994-474D-BD51-5B49919AEBE0} = {CC51D0B0-3994-474D-BD51-5B49919AEBE0}
EndProjectSection
EndProject
Global
GlobalSection(SolutionConfiguration) = preSolution
Debug = Debug
Release = Release
EndGlobalSection
GlobalSection(ProjectConfiguration) = postSolution
{CC51D0B0-3994-474D-BD51-5B49919AEBE0}.Debug.ActiveCfg = Debug|Win32
{CC51D0B0-3994-474D-BD51-5B49919AEBE0}.Debug.Build.0 = Debug|Win32
{CC51D0B0-3994-474D-BD51-5B49919AEBE0}.Release.ActiveCfg = Release|Win32
{CC51D0B0-3994-474D-BD51-5B49919AEBE0}.Release.Build.0 = Release|Win32
{7AA05E1D-9952-4432-9975-6C00659BC0ED}.Debug.ActiveCfg = Debug|Win32
{7AA05E1D-9952-4432-9975-6C00659BC0ED}.Debug.Build.0 = Debug|Win32
{7AA05E1D-9952-4432-9975-6C00659BC0ED}.Release.ActiveCfg = Release|Win32
{7AA05E1D-9952-4432-9975-6C00659BC0ED}.Release.Build.0 = Release|Win32
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
EndGlobalSection
GlobalSection(ExtensibilityAddIns) = postSolution
EndGlobalSection
EndGlobal
@@ -1,326 +0,0 @@
<?xml version="1.0" encoding="Windows-1252"?>
<VisualStudioProject
ProjectType="Visual C++"
Version="7.10"
Name="AuctionTransferGameAPI"
ProjectGUID="{CC51D0B0-3994-474D-BD51-5B49919AEBE0}"
Keyword="Win32Proj">
<Platforms>
<Platform
Name="Win32"/>
</Platforms>
<Configurations>
<Configuration
Name="Debug|Win32"
OutputDirectory="Debug"
IntermediateDirectory="Debug"
ConfigurationType="4"
CharacterSet="2">
<Tool
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories=".\"
PreprocessorDefinitions="WIN32;_DEBUG;_LIB;EXTERNAL_DISTRO;NAMESPACE=&quot;AuctionTransfer&quot;;USE_TCP_LIBRARY"
MinimalRebuild="TRUE"
BasicRuntimeChecks="3"
RuntimeLibrary="5"
UsePrecompiledHeader="0"
WarningLevel="3"
Detect64BitPortabilityProblems="TRUE"
DebugInformationFormat="4"/>
<Tool
Name="VCCustomBuildTool"/>
<Tool
Name="VCLibrarianTool"
AdditionalDependencies="ws2_32.lib"/>
<Tool
Name="VCMIDLTool"/>
<Tool
Name="VCPostBuildEventTool"/>
<Tool
Name="VCPreBuildEventTool"/>
<Tool
Name="VCPreLinkEventTool"/>
<Tool
Name="VCResourceCompilerTool"/>
<Tool
Name="VCWebServiceProxyGeneratorTool"/>
<Tool
Name="VCXMLDataGeneratorTool"/>
<Tool
Name="VCManagedWrapperGeneratorTool"/>
<Tool
Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
</Configuration>
<Configuration
Name="Release|Win32"
OutputDirectory="Release"
IntermediateDirectory="Release"
ConfigurationType="4"
CharacterSet="2">
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories="C:\P4\projects\AuctionTransfer\AuctionTransferGameAPI"
PreprocessorDefinitions="WIN32;_DEBUG;_LIB;EXTERNAL_DISTRO;NAMESPACE=&quot;AuctionTransfer&quot;;USE_TCP_LIBRARY"
RuntimeLibrary="4"
UsePrecompiledHeader="0"
WarningLevel="3"
Detect64BitPortabilityProblems="TRUE"
DebugInformationFormat="3"/>
<Tool
Name="VCCustomBuildTool"/>
<Tool
Name="VCLibrarianTool"
AdditionalDependencies="ws2_32.lib"/>
<Tool
Name="VCMIDLTool"/>
<Tool
Name="VCPostBuildEventTool"/>
<Tool
Name="VCPreBuildEventTool"/>
<Tool
Name="VCPreLinkEventTool"/>
<Tool
Name="VCResourceCompilerTool"/>
<Tool
Name="VCWebServiceProxyGeneratorTool"/>
<Tool
Name="VCXMLDataGeneratorTool"/>
<Tool
Name="VCManagedWrapperGeneratorTool"/>
<Tool
Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
</Configuration>
</Configurations>
<References>
</References>
<Files>
<Filter
Name="Source Files"
Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}">
<File
RelativePath=".\AuctionTransferAPI.cpp">
</File>
<File
RelativePath=".\AuctionTransferAPICore.cpp">
</File>
<File
RelativePath=".\Character.cpp">
</File>
<File
RelativePath=".\Request.cpp">
</File>
<File
RelativePath=".\Response.cpp">
</File>
<Filter
Name="TCP Library"
Filter="">
<File
RelativePath=".\TcpLibrary\Clock.cpp">
</File>
<File
RelativePath=".\TcpLibrary\IPAddress.cpp">
</File>
<File
RelativePath=".\TcpLibrary\TcpBlockAllocator.cpp">
</File>
<File
RelativePath=".\TcpLibrary\TcpConnection.cpp">
</File>
<File
RelativePath=".\TcpLibrary\TcpManager.cpp">
</File>
</Filter>
<Filter
Name="Base"
Filter="">
<File
RelativePath=".\Base\Archive.cpp">
</File>
</Filter>
<Filter
Name="GenericAPI_TCP"
Filter="">
<File
RelativePath=".\ATGenericAPI\GenericApiCore.cpp">
</File>
<File
RelativePath=".\ATGenericAPI\GenericConnection.cpp">
</File>
<File
RelativePath=".\ATGenericAPI\GenericMessage.cpp">
</File>
</Filter>
<Filter
Name="Gzip"
Filter="">
<File
RelativePath=".\zip\Zip\adler32.c">
</File>
<File
RelativePath=".\zip\Zip\compress.c">
</File>
<File
RelativePath=".\zip\Zip\crc32.c">
</File>
<File
RelativePath=".\zip\Zip\deflate.c">
</File>
<File
RelativePath=".\zip\Zip\gzio.c">
</File>
<File
RelativePath=".\zip\Zip\infblock.c">
</File>
<File
RelativePath=".\zip\Zip\infcodes.c">
</File>
<File
RelativePath=".\zip\Zip\inffast.c">
</File>
<File
RelativePath=".\zip\Zip\inflate.c">
</File>
<File
RelativePath=".\zip\Zip\inftrees.c">
</File>
<File
RelativePath=".\zip\Zip\infutil.c">
</File>
<File
RelativePath=".\zip\Zip\maketree.c">
</File>
<File
RelativePath=".\zip\Zip\trees.c">
</File>
<File
RelativePath=".\zip\Zip\uncompr.c">
</File>
<File
RelativePath=".\zip\Zip\zutil.c">
</File>
</Filter>
</Filter>
<Filter
Name="Header Files"
Filter="h;hpp;hxx;hm;inl;inc;xsd"
UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}">
<File
RelativePath=".\AuctionTransferAPI.h">
</File>
<File
RelativePath=".\AuctionTransferAPICore.h">
</File>
<File
RelativePath=".\Character.h">
</File>
<File
RelativePath=".\Request.h">
</File>
<File
RelativePath=".\Response.h">
</File>
<Filter
Name="TCP Library"
Filter="">
<File
RelativePath=".\TcpLibrary\Clock.h">
</File>
<File
RelativePath=".\TcpLibrary\IPAddress.h">
</File>
<File
RelativePath=".\TcpLibrary\TcpBlockAllocator.h">
</File>
<File
RelativePath=".\TcpLibrary\TcpConnection.h">
</File>
<File
RelativePath=".\TcpLibrary\TcpHandlers.h">
</File>
<File
RelativePath=".\TcpLibrary\TcpManager.h">
</File>
</Filter>
<Filter
Name="Base"
Filter="">
<File
RelativePath=".\Base\Archive.h">
</File>
<File
RelativePath=".\Base\Platform.h">
</File>
</Filter>
<Filter
Name="GenericAPI_TCP"
Filter="">
<File
RelativePath=".\ATGenericAPI\GenericApiCore.h">
</File>
<File
RelativePath=".\ATGenericAPI\GenericConnection.h">
</File>
<File
RelativePath=".\ATGenericAPI\GenericMessage.h">
</File>
</Filter>
<Filter
Name="Common"
Filter="">
<File
RelativePath=".\AuctionTransferEnum.h">
</File>
</Filter>
<Filter
Name="Gzip"
Filter="">
<File
RelativePath=".\zip\Zip\deflate.h">
</File>
<File
RelativePath=".\zip\GZipHelper.h">
</File>
<File
RelativePath=".\zip\Zip\infblock.h">
</File>
<File
RelativePath=".\zip\Zip\infcodes.h">
</File>
<File
RelativePath=".\zip\Zip\inffast.h">
</File>
<File
RelativePath=".\zip\Zip\inffixed.h">
</File>
<File
RelativePath=".\zip\Zip\inftrees.h">
</File>
<File
RelativePath=".\zip\Zip\infutil.h">
</File>
<File
RelativePath=".\zip\Zip\trees.h">
</File>
<File
RelativePath=".\zip\Zip\zconf.h">
</File>
<File
RelativePath=".\zip\Zip\zlib.h">
</File>
<File
RelativePath=".\zip\Zip\zutil.h">
</File>
</Filter>
</Filter>
<Filter
Name="Resource Files"
Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx"
UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}">
</Filter>
</Files>
<Globals>
</Globals>
</VisualStudioProject>
@@ -1,283 +0,0 @@
////////////////////////////////////////////////////////////////////////////////
// The author of this code is Justin Randall
//
// I have made modifications to the ByteStream
// and AutoByteStream classes in order to make them suitable
// for use in messaging systems which require objects that
// are copyable and assignable. It is also desirable for
// the ByteStream object to use a flexible allocator system
// that may support multi-threaded programming models.
#include "Archive.h"
#ifdef EXTERNAL_DISTRO
namespace NAMESPACE
{
#endif
namespace Base
{
////////////////////////////////////////////////////////////////////////////////
#if defined(USE_ARCHIVE_MUTEX)
CMutex ByteStreamMutex;
#endif
#if defined (PASCAL_STRING)
#pragma message ("--- Packing pascal style strings ---")
void get(Base::ByteStream::ReadIterator& source, std::string& target)
{
unsigned int size = 0;
Base::get (source, size);
const unsigned char *buf = source.getBuffer();
target.assign((const char *)buf, (const char *)(buf + size));
const unsigned int readSize = size * sizeof(char);
source.advance(readSize);
}
void put(ByteStream& target, const std::string& source)
{
const unsigned int size = source.size();
put(target, size);
target.put(source.data(), size * sizeof (char));
}
#else
#pragma message ("--- Packing c style strings ---")
void get(ByteStream::ReadIterator & source, std::string & target)
{
target = reinterpret_cast<const char *>(source.getBuffer());
source.advance(target.length() + 1);
}
void put(ByteStream & target, const std::string & source)
{
target.put(source.c_str(), source.size()+1);
}
#endif
ByteStream::ReadIterator::ReadIterator() :
readPtr(0),
stream(0)
{
}
ByteStream::ReadIterator::ReadIterator(const ReadIterator & source) :
readPtr(source.readPtr),
stream(source.stream)
{
}
ByteStream::ReadIterator::ReadIterator(const ByteStream & source) :
readPtr(0),
stream(&source)
{
}
ByteStream::ReadIterator::~ReadIterator()
{
stream = 0;
}
ByteStream::ByteStream() :
allocatedSize(0),
beginReadIterator(),
data(NULL),
size(0),
lastPutSize(0)
{
data = Data::getNewData();
beginReadIterator = ReadIterator(*this);
}
ByteStream::ByteStream(const unsigned char * const newBuffer, const unsigned int bufferSize) :
allocatedSize(bufferSize),
data(0),
size(bufferSize),
lastPutSize(0)
{
data = Data::getNewData();
if(data->size < size)
{
delete[] data->buffer;
data->buffer = new unsigned char[size];
data->size = size;
}
memcpy(data->buffer, newBuffer, size);
beginReadIterator = ReadIterator(*this);
}
ByteStream::ByteStream(const ByteStream & source):
allocatedSize(source.getSize()), // only allocate what is really there, be opportinistic when grow()'ing
data(source.data),
size(source.getSize()),
lastPutSize(source.lastPutSize)
{
source.data->ref();
beginReadIterator = ReadIterator(*this);
}
ByteStream::ByteStream(ReadIterator & source) :
allocatedSize(0),
size(0),
lastPutSize(0)
{
data = Data::getNewData();
put(source.getBuffer(), source.getSize());
source.advance(source.getSize());
beginReadIterator = ReadIterator(*this);
}
ByteStream::~ByteStream()
{
data->deref();
allocatedSize = 0;
data = 0; //lint !e672 (data deref insures the data is deleted if no one references it)
size = 0;
}
ByteStream & ByteStream::operator=(const ByteStream & rhs)
{
if(this != &rhs)
{
data->deref(); // deref local data
rhs.data->ref();
allocatedSize = rhs.allocatedSize;
size = rhs.size;
data = rhs.data; //lint !e672 (data is ref counted)
}
return *this;
}
void ByteStream::get(void * target, ReadIterator & readIterator, const unsigned long int targetSize) const
{
assert(readIterator.getReadPosition() + targetSize <= allocatedSize);
memcpy(target, &data->buffer[readIterator.getReadPosition()], targetSize);
}
void ByteStream::put(const void * const source, const unsigned int sourceSize)
{
if(data->getRef() > 1)
{
const unsigned char * const tmp = data->buffer;
data->deref();
data = Data::getNewData();
if(data->size < sourceSize)
{
delete[] data->buffer;
data->buffer = new unsigned char[size];
data->size = size;
}
memcpy(data->buffer, tmp, size);
allocatedSize = size;
}
growToAtLeast(size + sourceSize);
memcpy(&data->buffer[size], source, sourceSize);
size += sourceSize;
if (sourceSize > 0)
lastPutSize = sourceSize;
}
bool ByteStream::overwriteEnd(const void * const source, const unsigned int sourceSize)
{
if(data->getRef() <= 1 &&
lastPutSize == sourceSize &&
sourceSize <= data->size)
{
memcpy(&data->buffer[size-sourceSize], source, sourceSize);
return true;
}
else
{
return false;
}
}
void ByteStream::reAllocate(const unsigned int newSize)
{
allocatedSize = newSize;
if(data->size < allocatedSize)
{
unsigned char * tmp = new unsigned char[newSize];
if(data->buffer != NULL)
memcpy(tmp, data->buffer, size);
delete[] data->buffer;
data->buffer = tmp;
data->size = newSize;
}
}
////////////////////////////////////////////////////////////////////////////////
AutoByteStream::AutoByteStream() :
members()
{
}
AutoByteStream::~AutoByteStream()
{
}
void AutoByteStream::addVariable(AutoVariableBase & newVariable)
{
members.push_back(&newVariable);
}
const unsigned int AutoByteStream::getItemCount() const
{
return members.size();
}
void AutoByteStream::pack(ByteStream & target) const
{
std::vector<AutoVariableBase *>::const_iterator i;
unsigned short packedSize=static_cast<unsigned short>(members.size());
put(target,packedSize);
for(i = members.begin(); i != members.end(); ++i)
{
(*i)->pack(target);
}
}
void AutoByteStream::unpack(ByteStream::ReadIterator & source)
{
std::vector<AutoVariableBase *>::iterator i;
unsigned short packedSize;
get(source,packedSize);
for(i = members.begin(); i != members.end(); ++i)
{
(*i)->unpack(source);
}
}
////////////////////////////////////////////////////////////////////////////////
AutoVariableBase::AutoVariableBase()
{
}
AutoVariableBase::~AutoVariableBase()
{
}
////////////////////////////////////////////////////////////////////////////////
};
#ifdef EXTERNAL_DISTRO
};
#endif
@@ -1,746 +0,0 @@
////////////////////////////////////////////////////////////////////////////////
// The author of this code is Justin Randall
//
// I have made modifications to the ByteStream
// and AutoByteStream classes in order to make them suitable
// for use in messaging systems which require objects that
// are copyable and assignable. It is also desirable for
// the ByteStream object to use a flexible allocator system
// that may support multi-threaded programming models.
#ifndef BASE_ARCHIVE_H
#define BASE_ARCHIVE_H
#include <assert.h>
#include <string>
#include <vector>
#include "Platform.h"
#if !defined PLATFORM_BASE_SINGLE_THREAD && ( defined _MT || defined _REENTRANT )
# define USE_ARCHIVE_MUTEX
# include "Mutex.h"
#endif
#ifdef WIN32
# include "win32/Archive.h"
#elif linux
# include "linux/Archive.h"
#elif sparc
# include "solaris/Archive.h"
#else
#error /Base/Archive.h: Undefine platform type
#endif
#ifdef EXTERNAL_DISTRO
namespace NAMESPACE
{
#endif
namespace Base
{
const unsigned MAX_ARRAY_SIZE = 1024;
////////////////////////////////////////////////////////////////////////////////
#if defined(USE_ARCHIVE_MUTEX)
extern CMutex ByteStreamMutex;
#endif
class ByteStream
{
public:
class ReadIterator
{
public:
ReadIterator();
ReadIterator(const ReadIterator & source);
explicit ReadIterator(const ByteStream & source);
~ReadIterator();
ReadIterator & operator = (const ReadIterator & source);
void advance (const unsigned int distance);
void get (void * target, const unsigned long int readSize);
const unsigned int getSize () const;
const unsigned char * const getBuffer () const;
const unsigned int getReadPosition () const;
private:
unsigned int readPtr;
const ByteStream * stream;
};
private:
class Data
{
friend class ByteStream;
friend class ReadIterator;
public:
~Data();
static Data * getNewData();
const int getRef () const;
void deref ();
void ref ();
protected:
unsigned char * buffer;
unsigned long size;
private:
struct DataFreeList
{
~DataFreeList()
{
std::vector<ByteStream::Data *>::iterator i;
for(i = freeList.begin(); i != freeList.end(); ++i)
{
delete (*i);
}
};
std::vector<Data *> freeList;
};
Data();
//explicit Data(unsigned char * buffer);
static std::vector<Data *> & getDataFreeList();
static void releaseOldData(Data * oldData);
private:
int refCount;
};
friend class ReadIterator;
public:
ByteStream();
ByteStream(const unsigned char * const buffer, const unsigned int bufferSize);
ByteStream(const ByteStream & source);
virtual ~ByteStream();
public:
ByteStream(ReadIterator & source);
ByteStream & operator = (const ByteStream & source);
ByteStream & operator = (ReadIterator & source);
const ReadIterator & begin() const;
void clear();
const unsigned char * const getBuffer() const;
const unsigned int getSize() const;
void put(const void * const source, const unsigned int sourceSize);
bool overwriteEnd(const void * const source, const unsigned int sourceSize);
private:
void get(void * target, ReadIterator & readIterator, const unsigned long int readSize) const;
void growToAtLeast(const unsigned int targetSize);
void reAllocate(const unsigned int newSize);
private:
unsigned int allocatedSize;
ReadIterator beginReadIterator;
Data * data;
unsigned int size;
unsigned int lastPutSize;
};
inline ByteStream::Data::Data() :
buffer(0),
size(0),
refCount(1)
{
}
inline ByteStream::Data::~Data()
{
#if defined(USE_ARCHIVE_MUTEX)
ByteStreamMutex.Lock();
#endif
refCount = 0;
delete[] buffer;
#if defined(USE_ARCHIVE_MUTEX)
ByteStreamMutex.Unlock();
#endif
}
inline void ByteStream::Data::deref()
{
#if defined(USE_ARCHIVE_MUTEX)
ByteStreamMutex.Lock();
#endif
refCount--;
#if defined(USE_ARCHIVE_MUTEX)
ByteStreamMutex.Unlock();
#endif
if(refCount < 1)
releaseOldData(this);
}
inline std::vector<ByteStream::Data *> & ByteStream::Data::getDataFreeList()
{
static DataFreeList freeList;
return freeList.freeList;
}
inline ByteStream::Data * ByteStream::Data::getNewData()
{
#if defined(USE_ARCHIVE_MUTEX)
ByteStreamMutex.Lock();
#endif
Data * result = 0;
if(getDataFreeList().empty())
{
result = new Data;
}
else
{
result = getDataFreeList().back();
getDataFreeList().pop_back();
}
result->refCount = 1;
#if defined(USE_ARCHIVE_MUTEX)
ByteStreamMutex.Unlock();
#endif
return result;
}
inline const int ByteStream::Data::getRef() const
{
return refCount;
}
inline void ByteStream::Data::ref()
{
#if defined(USE_ARCHIVE_MUTEX)
ByteStreamMutex.Lock();
#endif
refCount++;
#if defined(USE_ARCHIVE_MUTEX)
ByteStreamMutex.Unlock();
#endif
}
inline void ByteStream::Data::releaseOldData(ByteStream::Data * oldData)
{
#if defined(USE_ARCHIVE_MUTEX)
ByteStreamMutex.Lock();
#endif
getDataFreeList().push_back(oldData);
oldData->refCount = 0;
#if defined(USE_ARCHIVE_MUTEX)
ByteStreamMutex.Unlock();
#endif
}
inline ByteStream::ReadIterator & ByteStream::ReadIterator::operator = (const ByteStream::ReadIterator & rhs)
{
if(&rhs != this)
{
readPtr = rhs.readPtr;
stream = rhs.stream;
}
return *this;
}
inline void ByteStream::ReadIterator::get(void * target, const unsigned long int readSize)
{
assert(stream);
stream->get(target, *this, readSize);
readPtr += readSize;
}
inline const unsigned int ByteStream::ReadIterator::getSize() const
{
assert(stream);
return stream->getSize() - readPtr;
}
inline const ByteStream::ReadIterator & ByteStream::begin() const
{
return beginReadIterator;
}
inline void ByteStream::ReadIterator::advance(const unsigned int distance)
{
readPtr += distance;
}
inline const unsigned int ByteStream::ReadIterator::getReadPosition() const
{
return readPtr;
}
inline const unsigned char * const ByteStream::ReadIterator::getBuffer() const
{
if(stream)
return &stream->data->buffer[readPtr];
return 0;
}
inline void ByteStream::clear()
{
#if defined(USE_ARCHIVE_MUTEX)
ByteStreamMutex.Lock();
#endif
size = 0;
#if defined(USE_ARCHIVE_MUTEX)
ByteStreamMutex.Unlock();
#endif
}
inline const unsigned char * const ByteStream::getBuffer() const
{
return data->buffer;
}
inline const unsigned int ByteStream::getSize() const
{
return size;
}
inline void ByteStream::growToAtLeast(const unsigned int targetSize)
{
if(allocatedSize < targetSize)
{
reAllocate(allocatedSize + allocatedSize + targetSize);
}
}
////////////////////////////////////////////////////////////////////////////////
class AutoVariableBase
{
public:
AutoVariableBase();
virtual ~AutoVariableBase();
virtual void pack(ByteStream & target) const = 0;
virtual void unpack(ByteStream::ReadIterator & source) = 0;
};
////////////////////////////////////////////////////////////////////////////////
class AutoByteStream
{
public:
AutoByteStream();
virtual ~AutoByteStream();
void addVariable(AutoVariableBase & newVariable);
virtual const unsigned int getItemCount() const;
virtual void pack(ByteStream & target) const;
virtual void unpack(ByteStream::ReadIterator & source);
protected:
std::vector<AutoVariableBase *> members;
private:
AutoByteStream(const AutoByteStream & source);
};
////////////////////////////////////////////////////////////////////////////////
template<class ValueType>
class AutoVariable : public AutoVariableBase
{
public:
AutoVariable();
explicit AutoVariable(const ValueType & source);
virtual ~AutoVariable();
const ValueType & get() const;
virtual void pack(ByteStream & target) const;
void set(const ValueType & rhs);
virtual void unpack(ByteStream::ReadIterator & source);
private:
ValueType value;
};
template<class ValueType>
AutoVariable<ValueType>::AutoVariable() :
AutoVariableBase(),
value()
{
}
template<class ValueType>
AutoVariable<ValueType>::AutoVariable(const ValueType & source) :
AutoVariableBase(),
value(source)
{
}
template<class ValueType>
AutoVariable<ValueType>::~AutoVariable()
{
}
template<class ValueType>
const ValueType & AutoVariable<ValueType>::get() const
{
return value;
}
template<class ValueType>
void AutoVariable<ValueType>::pack(ByteStream & target) const
{
Base::put(target, value);
}
template<class ValueType>
void AutoVariable<ValueType>::set(const ValueType & rhs)
{
value = rhs;
}
template<class ValueType>
void AutoVariable<ValueType>::unpack(ByteStream::ReadIterator & source)
{
Base::get(source, value);
}
////////////////////////////////////////////////////////////////////////////////
template<class ValueType>
class AutoArray : public AutoVariableBase
{
public:
AutoArray();
AutoArray(const AutoArray & source);
~AutoArray();
const std::vector<ValueType> & get() const;
void set(const std::vector<ValueType> & source);
virtual void pack(ByteStream & target) const;
virtual void unpack(ByteStream::ReadIterator & source);
private:
std::vector<ValueType> array;
};
template<class ValueType>
inline AutoArray<ValueType>::AutoArray()
{
}
template<class ValueType>
inline AutoArray<ValueType>::AutoArray(const AutoArray & source) :
array(source.array)
{
}
template<class ValueType>
inline AutoArray<ValueType>::~AutoArray()
{
}
template<class ValueType>
inline const std::vector<ValueType> & AutoArray<ValueType>::get() const
{
return array;
}
template<class ValueType>
inline void AutoArray<ValueType>::set(const std::vector<ValueType> & source)
{
array = source;
}
template<class ValueType>
inline void AutoArray<ValueType>::pack(ByteStream & target) const
{
unsigned int arraySize = array.size();
Base::put(target, arraySize);
typename std::vector<ValueType>::const_iterator i;
for(i = array.begin(); i != array.end(); ++i)
{
ValueType v = (*i);
Base::put(target, v);
}
}
template<class ValueType>
inline void AutoArray<ValueType>::unpack(ByteStream::ReadIterator & source)
{
unsigned int arraySize;
Base::get(source, arraySize);
ValueType v;
if (arraySize > MAX_ARRAY_SIZE)
arraySize = 0;
for(unsigned int i = 0; i < arraySize; ++i)
{
Base::get(source, v);
array.push_back(v);
}
}
////////////////////////////////////////////////////////////////////////////////
inline void get(ByteStream::ReadIterator & source, ByteStream & target)
{
target.put(source.getBuffer(), source.getSize());
source.advance(source.getSize());
}
inline void get(ByteStream::ReadIterator & source, double & target)
{
source.get(&target, 8);
target = byteSwap(target);
}
inline void get(ByteStream::ReadIterator & source, float & target)
{
source.get(&target, 4);
target = byteSwap(target);
}
inline void get(ByteStream::ReadIterator & source, uint64 & target)
{
source.get(&target, 8);
target = byteSwap(target);
}
inline void get(ByteStream::ReadIterator & source, int64 & target)
{
source.get(&target, 8);
target = byteSwap(target);
}
inline void get(ByteStream::ReadIterator & source, uint32 & target)
{
source.get(&target, 4);
target = byteSwap(target);
}
inline void get(ByteStream::ReadIterator & source, int32 & target)
{
source.get(&target, 4);
target = byteSwap(target);
}
inline void get(ByteStream::ReadIterator & source, uint16 & target)
{
source.get(&target, 2);
target = byteSwap(target);
}
inline void get(ByteStream::ReadIterator & source, int16 & target)
{
source.get(&target, 2);
target = byteSwap(target);
}
inline void get(ByteStream::ReadIterator & source, uint8 & target)
{
source.get(&target, 1);
}
inline void get(ByteStream::ReadIterator & source, int8 & target)
{
source.get(&target, 1);
}
inline void get(ByteStream::ReadIterator & source, unsigned char * const target, const unsigned int targetSize)
{
source.get(target, targetSize);
}
inline void get(ByteStream::ReadIterator & source, bool & target)
{
source.get(&target, 1);
}
////////////////////////////////////////////////////////////////////////////////
inline void put(ByteStream & target, ByteStream::ReadIterator & source)
{
target.put(source.getBuffer(), source.getSize());
source.advance(source.getSize());
}
inline void put(ByteStream & target, const double value)
{
double temp = byteSwap(value);
target.put(&temp, 8);
}
inline void put(ByteStream & target, const float value)
{
float temp = byteSwap(value);
target.put(&temp, 4);
}
inline void put(ByteStream & target, const uint64 value)
{
uint64 temp = byteSwap(value);
target.put(&temp, 8);
}
inline void put(ByteStream & target, const int64 value)
{
int64 temp = byteSwap(value);
target.put(&temp, 8);
}
inline void put(ByteStream & target, const uint32 value)
{
uint32 temp = byteSwap(value);
target.put(&temp, 4);
}
inline void put(ByteStream & target, const int32 value)
{
int32 temp = byteSwap(value);
target.put(&temp, 4);
}
inline void put(ByteStream & target, const uint16 value)
{
uint16 temp = byteSwap(value);
target.put(&temp, 2);
}
inline void put(ByteStream & target, const int16 value)
{
int16 temp = byteSwap(value);
target.put(&temp, 2);
}
inline void put(ByteStream & target, const uint8 value)
{
target.put(&value, 1);
}
inline void put(ByteStream & target, const int8 value)
{
target.put(&value, 1);
}
inline void put(ByteStream & target, const bool & source)
{
target.put(&source, 1);
}
inline void put(ByteStream & target, const unsigned char * const source, const unsigned int sourceSize)
{
target.put(source, sourceSize);
}
inline void put(ByteStream & target, const ByteStream & source)
{
target.put(source.begin().getBuffer(), source.begin().getSize());
}
void get(ByteStream::ReadIterator & source, std::string & target);
void put(ByteStream & target, const std::string & source);
////////////////////////////////////////////////////////////////////////////////
inline bool overwriteEnd(ByteStream & target, const double value)
{
double temp = byteSwap(value);
return target.overwriteEnd(&temp, 8);
}
inline bool overwriteEnd(ByteStream & target, const float value)
{
float temp = byteSwap(value);
return target.overwriteEnd(&temp, 4);
}
inline bool overwriteEnd(ByteStream & target, const uint64 value)
{
uint64 temp = byteSwap(value);
return target.overwriteEnd(&temp, 8);
}
inline bool overwriteEnd(ByteStream & target, const int64 value)
{
int64 temp = byteSwap(value);
return target.overwriteEnd(&temp, 8);
}
inline bool overwriteEnd(ByteStream & target, const uint32 value)
{
uint32 temp = byteSwap(value);
return target.overwriteEnd(&temp, 4);
}
inline bool overwriteEnd(ByteStream & target, const int32 value)
{
int32 temp = byteSwap(value);
return target.overwriteEnd(&temp, 4);
}
inline bool overwriteEnd(ByteStream & target, const uint16 value)
{
uint16 temp = byteSwap(value);
return target.overwriteEnd(&temp, 2);
}
inline bool overwriteEnd(ByteStream & target, const int16 value)
{
int16 temp = byteSwap(value);
return target.overwriteEnd(&temp, 2);
}
inline bool overwriteEnd(ByteStream & target, const uint8 value)
{
return target.overwriteEnd(&value, 1);
}
inline bool overwriteEnd(ByteStream & target, const int8 value)
{
return target.overwriteEnd(&value, 1);
}
inline bool overwriteEnd(ByteStream & target, const bool & source)
{
return target.overwriteEnd(&source, 1);
}
inline bool overwriteEnd(ByteStream & target, const unsigned char * const source, const unsigned int sourceSize)
{
return target.overwriteEnd(source, sourceSize);
}
////////////////////////////////////////////////////////////////////////////////
};
#ifdef EXTERNAL_DISTRO
};
#endif
#endif
@@ -1,10 +0,0 @@
AUTOMAKE_OPTIONS=foreign
INCLUDES = -I$(top_srcdir)/external/3rd/library/platform \
-I$(platform_dir)/utils/Base/
METASOURCES = AUTO
libAuctionTransferGameAPIBase_la_LDFLAGS = -avoid-version
noinst_LTLIBRARIES = libAuctionTransferGameAPIBase.la
libAuctionTransferGameAPIBase_la_SOURCES = Archive.cpp Archive.h Platform.h
SUBDIRS = linux
AM_CXXFLAGS = -DEXTERNAL_DISTRO -DNAMESPACE=AuctionTransfer -DUSE_TCP_LIBRARY
@@ -1,40 +0,0 @@
////////////////////////////////////////
// Mutex.cpp
//
// Purpose:
// 1. Implementation of the CMutex class.
//
// Revisions:
// 07/10/2001 Created
//
#if !defined(_MT)
# pragma message( "Excluding Base::CMutex - requires multi-threaded compile. (_MT)" )
#else
#include "Mutex.h"
#ifdef EXTERNAL_DISTRO
namespace NAMESPACE
{
#endif
namespace Base
{
CMutex::CMutex()
{
InitializeCriticalSection(&mCriticalSection);
}
CMutex::~CMutex()
{
DeleteCriticalSection(&mCriticalSection);
}
};
#ifdef EXTERNAL_DISTRO
};
#endif
#endif // #if defined(_MT)
@@ -1,74 +0,0 @@
////////////////////////////////////////
// Mutex.h
//
// Purpose:
// 1. Declair the CMutex class that encapsulates the functionality of a
// mutually-exclusive device.
//
// Revisions:
// 07/10/2001 Created
//
#ifndef BASE_WIN32_MUTEX_H
#define BASE_WIN32_MUTEX_H
#include "Platform.h"
namespace Base
{
////////////////////////////////////////
// Class:
// CMutex
//
// Purpose:
// Encapsulates the functionality of a mutually-exclusive device.
// This class is valuable for protecting against race conditions
// within threaded applications. The CMutex class can be used to
// only allow a single thread to run within a specified code
// segment at a time.
//
// Public Methods:
// Lock() : Locks the mutex. If the mutex is already locked, the
// operating system will block the calling thread until another
// thread has unlocked the mutex.
// Unlock() : Unlocks the mutex.
//
class CMutex
{
public:
CMutex::CMutex()
{
InitializeCriticalSection(&mCriticalSection);
}
CMutex::~CMutex()
{
DeleteCriticalSection(&mCriticalSection);
}
//CMutex();
//~CMutex();
void Lock();
void Unlock();
private:
CRITICAL_SECTION mCriticalSection;
};
inline void CMutex::Lock()
{
EnterCriticalSection(&mCriticalSection);
}
inline void CMutex::Unlock()
{
LeaveCriticalSection(&mCriticalSection);
}
}
#endif // BASE_WIN32_MUTEX_H
@@ -1,105 +0,0 @@
#ifndef BASE_PLATFORM_H
#define BASE_PLATFORM_H
#include <assert.h>
#ifdef WIN32
#include "win32/Platform.h"
#elif linux
#include "linux/Platform.h"
#elif sparc
#include "solaris/Platform.h"
#else
#error /Base/Platform.h: Undefine platform type
#endif
#ifdef EXTERNAL_DISTRO
namespace NAMESPACE
{
#endif
namespace Base
{
template <class T> inline T rotlFixed(T x, unsigned int y)
{
assert(y < sizeof(T)*8);
return (T)((x<<y) | (x>>(sizeof(T)*8-y)));
}
template <class T> inline T rotrFixed(T x, unsigned int y)
{
assert(y < sizeof(T)*8);
return (x>>y) | (x<<(sizeof(T)*8-y));
}
template <class T> inline T rotlMod(T x, unsigned int y)
{
y %= sizeof(T)*8;
return (x<<y) | (x>>(sizeof(T)*8-y));
}
template <class T> inline T rotrMod(T x, unsigned int y)
{
y %= sizeof(T)*8;
return (x>>y) | (x<<(sizeof(T)*8-y));
}
inline uint16 byteReverse16(void * data)
{
uint16 value = *static_cast<uint16 *>(data);
return *static_cast<uint16 *>(data) = rotlFixed(value, 8U);
// return rotlFixed(value, 8U);
}
inline uint32 byteReverse32(void * data)
{
uint32 value = *static_cast<uint32 *>(data);
return *static_cast<uint32 *>(data) = (rotrFixed(value, 8U) & 0xff00ff00) | (rotlFixed(value, 8U) & 0x00ff00ff);
// return (rotrFixed(value, 8U) & 0xff00ff00) | (rotlFixed(value, 8U) & 0x00ff00ff);
}
inline uint64 byteReverse64(void * data)
{
uint64 value = *static_cast<uint64 *>(data);
return *static_cast<uint64 *>(data) = (
uint64((rotrFixed(uint32(value), 8U) & 0xff00ff00) | (rotlFixed(uint32(value), 8U) & 0x00ff00ff)) << 32) |
(rotrFixed(uint32(value>>32), 8U) & 0xff00ff00) | (rotlFixed(uint32(value>>32), 8U) & 0x00ff00ff);
// return (uint64(byteReverse(uint32(value))) << 32) | byteReverse(uint32(value>>32));
}
inline uint32 strlen(const unsigned short * string)
{
if (string == 0)
return 0;
uint32 length=0;
while (*(string+length++) != 0);
return length-1;
}
inline double getTimerLatency(Base::uint64 startTime, Base::uint64 finishTime=0)
{
Base::int64 requestAge;
Base::int64 freq = Base::getTimerFrequency();
Base::uint64 finish = (finishTime ? finishTime : Base::getTimer());
if (finish < startTime)
requestAge = (0 - 1) - startTime - finish;
else
requestAge = finish - startTime;
return (double)requestAge/freq;
}
};
#ifdef EXTERNAL_DISTRO
};
#endif
#endif // BASE_PLATFORM_H
@@ -1,44 +0,0 @@
#ifndef BASE_LINUX_ARCHIVE_H
#define BASE_LINUX_ARCHIVE_H
#ifdef EXTERNAL_DISTRO
namespace NAMESPACE
{
#endif
namespace Base
{
#ifdef PACK_BIG_ENDIAN
inline double byteSwap(double value) { byteReverse(&value); return value; }
inline float byteSwap(float value) { byteReverse(&value); return value; }
inline uint64 byteSwap(uint64 value) { byteReverse(&value); return value; }
inline int64 byteSwap(int64 value) { byteReverse(&value); return value; }
inline uint32 byteSwap(uint32 value) { byteReverse(&value); return value; }
inline int32 byteSwap(int32 value) { byteReverse(&value); return value; }
inline uint16 byteSwap(uint16 value) { byteReverse(&value); return value; }
inline int16 byteSwap(int16 value) { byteReverse(&value); return value; }
#else
inline double byteSwap(double value) { return value; }
inline float byteSwap(float value) { return value; }
inline uint64 byteSwap(uint64 value) { return value; }
inline int64 byteSwap(int64 value) { return value; }
inline uint32 byteSwap(uint32 value) { return value; }
inline int32 byteSwap(int32 value) { return value; }
inline uint16 byteSwap(uint16 value) { return value; }
inline int16 byteSwap(int16 value) { return value; }
#endif
}
#ifdef EXTERNAL_DISTRO
};
#endif
#endif
@@ -1,10 +0,0 @@
AUTOMAKE_OPTIONS=foreign
INCLUDES = -I$(top_srcdir)/external/3rd/library/platform \
-I$(platform_dir)/utils/Base/
METASOURCES = AUTO
noinst_LTLIBRARIES = libAuctionTransferGameAPIlinux.la
libAuctionTransferGameAPIlinux_la_LDFLAGS = -avoid-version
libAuctionTransferGameAPIlinux_la_SOURCES = Archive.h Platform.cpp Platform.h \
Types.h Mutex.cpp Mutex.h
AM_CXXFLAGS = -DEXTERNAL_DISTRO -DNAMESPACE=AuctionTransfer -DUSE_TCP_LIBRARY
@@ -1,40 +0,0 @@
////////////////////////////////////////
// Mutex.cpp
//
// Purpose:
// 1. Implementation of the CMutex class.
//
// Revisions:
// 07/10/2001 Created
//
#if defined(_REENTRANT)
#include "Mutex.h"
#ifdef EXTERNAL_DISTRO
namespace NAMESPACE
{
#endif
namespace Base
{
CMutex::CMutex()
{
mInitialized = (pthread_mutex_init(&mMutex, 0) == 0);
}
CMutex::~CMutex()
{
if (mInitialized)
pthread_mutex_destroy(&mMutex);
}
}
#ifdef EXTERNAL_DISTRO
};
#endif
#endif // #if defined(_REENTRANT)
@@ -1,79 +0,0 @@
////////////////////////////////////////
// Mutex.h
//
// Purpose:
// 1. Declair the CMutex class that encapsulates the functionality of a
// mutually-exclusive device.
//
// Revisions:
// 07/10/2001 Created
//
#ifndef BASE_LINUX_MUTEX_H
#define BASE_LINUX_MUTEX_H
#if !defined(_REENTRANT)
# pragma message( "Excluding Base::CMutex - requires multi-threaded compile. (_REENTRANT)" )
#else
#include "Platform.h"
#ifdef EXTERNAL_DISTRO
namespace NAMESPACE
{
#endif
namespace Base
{
////////////////////////////////////////
// Class:
// CMutex
//
// Purpose:
// Encapsulates the functionality of a mutually-exclusive device.
// This class is valuable for protecting against race conditions
// within threaded applications. The CMutex class can be used to
// only allow a single thread to run within a specified code
// segment at a time.
//
// Public Methods:
// Lock() : Locks the mutex. If the mutex is already locked, the
// operating system will block the calling thread until another
// thread has unlocked the mutex.
// Unlock() : Unlocks the mutex.
//
class CMutex
{
public:
CMutex();
~CMutex();
void Lock();
void Unlock();
private:
pthread_mutex_t mMutex;
bool mInitialized;
};
inline void CMutex::Lock(void)
{
if (mInitialized)
pthread_mutex_lock(&mMutex);
}
inline void CMutex::Unlock(void)
{
if (mInitialized)
pthread_mutex_unlock(&mMutex);
}
}
#ifdef EXTERNAL_DISTRO
};
#endif
#endif // #if defined(_MT)
#endif // BASE_LINUX_MUTEX_H
@@ -1,55 +0,0 @@
////////////////////////////////////////
// Platform.cpp
//
// Purpose:
// 1. Implementation of the global functionality declaired in Platform.h.
//
// Revisions:
// 07/10/2001 Created
//
#include <ctype.h>
#include "Platform.h"
#ifdef EXTERNAL_DISTRO
namespace NAMESPACE
{
#endif
namespace Base
{
// Implementation of microsoft strlwr extension
// This non-ANSI function is not supported under UNIX
void strlwr(char * s)
{
while (*s)
{
*s = tolower(*s);
s++;
}
}
// Implementation of microsoft strlwr extension
// This non-ANSI function is not supported under UNIX
void strupr(char * s)
{
while (*s)
{
*s = toupper(*s);
s++;
}
}
CTimer::CTimer() :
mTimer(0)
{
}
}
#ifdef EXTERNAL_DISTRO
};
#endif
@@ -1,112 +0,0 @@
////////////////////////////////////////
// Platform.h
//
// Purpose:
// 1. Include relevent system headers that are platform specific.
// 2. Declair global platform specific functionality.
// 3. Include primative type definitions
//
// Global Functions:
// getTimer() : Return the current high resolution clock count.
// getTimerFrequency() : Return the frequency of the high resolution clock.
// sleep() : Voluntarily relinquish timeslice of the calling thread for a
// specified number of milliseconds.
// strlwr() : Alters the contents of a string, making it all lower-case.
//
// Revisions:
// 07/10/2001 Created
//
#ifndef BASE_LINUX_PLATFORM_H
#define BASE_LINUX_PLATFORM_H
#include <errno.h>
#include <assert.h>
#include <sys/errno.h>
#include <pthread.h>
#include <resolv.h>
#include <stdarg.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#include <sys/stat.h>
#include <sys/time.h>
#include <sys/types.h>
#include <unistd.h>
#include <fcntl.h>
#include "Types.h"
#ifdef EXTERNAL_DISTRO
namespace NAMESPACE
{
#endif
namespace Base
{
uint64 getTimer(void);
uint64 getTimerFrequency(void);
void sleep(uint32 ms);
inline uint64 getTimer(void)
{
uint64 t;
struct timeval tv;
gettimeofday(&tv, 0);
t = tv.tv_sec;
t = t * 1000000;
t += tv.tv_usec;
return t;
}
inline uint64 getTimerFrequency(void)
{
uint64 f = 1000000;
return f;
}
inline void sleep(uint32 ms)
{
usleep(static_cast<unsigned long>(ms * 1000));
}
void strlwr(char * s);
void strupr(char * s);
class CTimer
{
public:
CTimer();
void Set(uint32 seconds);
void Signal();
bool Expired();
private:
uint32 mTimer;
};
inline void CTimer::Set(uint32 interval)
{
mTimer = (uint32)time(0) + interval;
}
inline void CTimer::Signal()
{
mTimer = 0;
}
inline bool CTimer::Expired()
{
return (mTimer <= (uint32)time(0));
}
}
#ifdef EXTERNAL_DISTRO
};
#endif
#endif // BASE_LINUX_PLATFORM_H
@@ -1,42 +0,0 @@
////////////////////////////////////////
// Types.h
//
// Purpose:
// 1. Define integer types that are unambiguous with respect to size
//
// Revisions:
// 07/10/2001 Created
//
#ifndef BASE_LINUX_TYPES_H
#define BASE_LINUX_TYPES_H
#include <sys/bitypes.h>
#ifdef EXTERNAL_DISTRO
namespace NAMESPACE
{
#endif
namespace Base
{
#define INT32_MAX 0x7FFFFFFF
#define INT32_MIN 0x80000000
#define UINT32_MAX 0xFFFFFFFF
typedef signed char int8;
typedef unsigned char uint8;
typedef signed short int16;
typedef unsigned short uint16;
typedef int32_t int32;
typedef u_int32_t uint32;
typedef int64_t int64;
typedef u_int64_t uint64;
}
#ifdef EXTERNAL_DISTRO
};
#endif
#endif // BASE_LINUX_TYPES_H
@@ -1,42 +0,0 @@
#ifndef BASE_WIN32_ARCHIVE_H
#define BASE_WIN32_ARCHIVE_H
#ifdef EXTERNAL_DISTRO
namespace NAMESPACE
{
#endif
namespace Base
{
#ifdef PACK_BIG_ENDIAN
inline double byteSwap(double value) { byteReverse64(&value); return value; }
inline float byteSwap(float value) { byteReverse32(&value); return value; }
inline uint64 byteSwap(uint64 value) { byteReverse64(&value); return value; }
inline int64 byteSwap(int64 value) { byteReverse64(&value); return value; }
inline uint32 byteSwap(uint32 value) { byteReverse32(&value); return value; }
inline int32 byteSwap(int32 value) { byteReverse32(&value); return value; }
inline uint16 byteSwap(uint16 value) { byteReverse16(&value); return value; }
inline int16 byteSwap(int16 value) { byteReverse16(&value); return value; }
#else
inline double byteSwap(double value) { return value; }
inline float byteSwap(float value) { return value; }
inline uint64 byteSwap(uint64 value) { return value; }
inline int64 byteSwap(int64 value) { return value; }
inline uint32 byteSwap(uint32 value) { return value; }
inline int32 byteSwap(int32 value) { return value; }
inline uint16 byteSwap(uint16 value) { return value; }
inline int16 byteSwap(int16 value) { return value; }
#endif
};
#ifdef EXTERNAL_DISTRO
};
#endif
#endif
@@ -1,61 +0,0 @@
////////////////////////////////////////
// Mutex.h
//
// Purpose:
// 1. Declair the CMutex class that encapsulates the functionality of a
// mutually-exclusive device.
//
// Revisions:
// 07/10/2001 Created
//
#ifndef BASE_WIN32_MUTEX_H
#define BASE_WIN32_MUTEX_H
#include "Platform.h"
namespace Base
{
////////////////////////////////////////
// Class:
// CMutex
//
// Purpose:
// Encapsulates the functionality of a mutually-exclusive device.
// This class is valuable for protecting against race conditions
// within threaded applications. The CMutex class can be used to
// only allow a single thread to run within a specified code
// segment at a time.
//
// Public Methods:
// Lock() : Locks the mutex. If the mutex is already locked, the
// operating system will block the calling thread until another
// thread has unlocked the mutex.
// Unlock() : Unlocks the mutex.
//
class CMutex
{
public:
CMutex();
~CMutex();
void Lock();
void Unlock();
private:
CRITICAL_SECTION mCriticalSection;
};
inline void CMutex::Lock()
{
EnterCriticalSection(&mCriticalSection);
}
inline void CMutex::Unlock()
{
LeaveCriticalSection(&mCriticalSection);
}
}
#endif // BASE_WIN32_MUTEX_H
@@ -1,31 +0,0 @@
////////////////////////////////////////
// Platform.cpp
//
// Purpose:
// 1. Implementation of the global functionality declaired in Platform.h.
//
// Revisions:
// 07/10/2001 Created
//
#include "Platform.h"
#ifdef EXTERNAL_DISTRO
namespace NAMESPACE
{
#endif
namespace Base
{
CTimer::CTimer() :
mTimer(0)
{
}
};
#ifdef EXTERNAL_DISTRO
};
#endif
@@ -1,98 +0,0 @@
////////////////////////////////////////
// Platform.h
//
// Purpose:
// 1. Include relevent system headers that are platform specific.
// 2. Declair global platform specific functionality.
// 3. Include primative type definitions
//
// Global Functions:
// getTimer() : Return the current high resolution clock count.
// getTimerFrequency() : Return the frequency of the high resolution clock.
// sleep() : Voluntarily relinquish timeslice of the calling thread for a
// specified number of milliseconds.
//
// Revisions:
// 07/10/2001 Created
//
#ifndef BASE_WIN32_PLATFORM_H
#define BASE_WIN32_PLATFORM_H
#include <memory.h>
#include <winsock2.h>
#include <time.h>
#include <io.h>
#include <fcntl.h>
#include <direct.h>
#include <stdio.h>
#include <errno.h>
#include "Types.h"
#ifdef EXTERNAL_DISTRO
namespace NAMESPACE
{
#endif
namespace Base
{
uint64 getTimer(void);
uint64 getTimerFrequency(void);
inline uint64 getTimer(void)
{
uint64 result;
if (!QueryPerformanceCounter(reinterpret_cast<LARGE_INTEGER *>(&result)))
result = 0;
return result;
}
inline uint64 getTimerFrequency(void)
{
uint64 result;
if (!QueryPerformanceFrequency(reinterpret_cast<LARGE_INTEGER *>(&result)))
result = 0;
return result;
}
inline void sleep(uint32 ms)
{
Sleep(ms);
}
class CTimer
{
public:
CTimer();
void Set(uint32 seconds);
void Signal();
bool Expired();
private:
uint32 mTimer;
};
inline void CTimer::Set(uint32 interval)
{
mTimer = (uint32)time(0) + interval;
}
inline void CTimer::Signal()
{
mTimer = 0;
}
inline bool CTimer::Expired()
{
return (mTimer <= (uint32)time(0));
}
};
#ifdef EXTERNAL_DISTRO
};
#endif
#endif BASE_WIN32_PLATFORM_H
@@ -1,42 +0,0 @@
////////////////////////////////////////
// Types.h
//
// Purpose:
// 1. Define integer types that are unambiguous with respect to size
//
// Revisions:
// 07/10/2001 Created
//
#ifndef BASE_WIN32_TYPES_H
#define BASE_WIN32_TYPES_H
#ifdef EXTERNAL_DISTRO
namespace NAMESPACE
{
#endif
namespace Base
{
#define INT32_MAX 0x7FFFFFFF
#define INT32_MIN 0x80000000
#define UINT32_MAX 0xFFFFFFFF
typedef signed char int8;
typedef unsigned char uint8;
typedef short int16;
typedef unsigned short uint16;
typedef int int32;
typedef unsigned uint32;
typedef __int64 int64;
typedef unsigned __int64 uint64;
};
#ifdef EXTERNAL_DISTRO
};
#endif
#endif // BASE_WIN32_TYPES_H
@@ -1,44 +0,0 @@
#include "Character.h"
#ifdef EXTERNAL_DISTRO
namespace NAMESPACE
{
#endif
namespace Base
{
void get(ByteStream::ReadIterator & source, AuctionTransfer::Character & target)
{
std::string tmpStr;
unsigned tmpNum;
//name
get(source, tmpStr);
target.setName(tmpStr);
// id
get(source, tmpNum);
target.setID(tmpNum);
// data
get(source, tmpStr);
target.setData(tmpStr);
}
void put(ByteStream & target, const AuctionTransfer::Character &source)
{
put(target, source.getName());
put(target, source.getID());
put(target, source.getData());
}
};
#ifdef EXTERNAL_DISTRO
};
#endif
@@ -1,70 +0,0 @@
#ifndef CHARACTER_H
#define CHARACTER_H
#include "Base/Archive.h"
namespace AuctionTransfer
{
class Character
{
public:
// constructors
Character()
: m_name(""), m_id(0), m_XMLdata("")
{
}
Character(const std::string &name, unsigned id, const std::string &xmlData)
: m_name(name), m_id(id), m_XMLdata(xmlData)
{
}
Character(const Character &character)
: m_name(character.getName()), m_id(character.getID()), m_XMLdata(character.getData())
{
}
// destructor
~Character()
{
}
// accessor methods
std::string getName() const { return m_name; }
unsigned getID() const { return m_id; }
std::string getData() const { return m_XMLdata; }
void setName(const std::string name) { m_name = name; }
void setID(unsigned id) { m_id = id; }
void setData(const std::string data) { m_XMLdata = data; }
protected:
std::string m_name;
unsigned m_id;
std::string m_XMLdata;
};
}; // namespace AuctionTransfer
#ifdef EXTERNAL_DISTRO
namespace NAMESPACE
{
#endif
namespace Base
{
void get(ByteStream::ReadIterator & source, AuctionTransfer::Character & target);
void put(ByteStream & target, const AuctionTransfer::Character & source);
};
#ifdef EXTERNAL_DISTRO
};
#endif
#endif //CHARACTER_H
@@ -1,13 +0,0 @@
AUTOMAKE_OPTIONS=foreign
INCLUDES = -I$(top_srcdir)/external/3rd/library/platform \
-I$(platform_dir)/utils/Base/
METASOURCES = AUTO
libAuctionTransferGameAPI_la_LDFLAGS = -avoid-version
noinst_LTLIBRARIES = libAuctionTransferGameAPI.la
libAuctionTransferGameAPI_la_SOURCES = AuctionTransferAPICore.cpp\
AuctionTransferAPICore.h AuctionTransferAPI.cpp AuctionTransferAPI.h\
AuctionTransferEnum.h Character.cpp Character.h Request.cpp Request.h\
Response.cpp Response.h
AM_CXXFLAGS = -DEXTERNAL_DISTRO -DNAMESPACE=AuctionTransfer -DUSE_TCP_LIBRARY
SUBDIRS = zip Base TcpLibrary ATGenericAPI
@@ -1,231 +0,0 @@
#include "Request.h"
//////////////////////////////////////////////////////////////////////////////////////
namespace AuctionTransfer
{
void put(Base::ByteStream &msg, const Blob &source);
//////////////////////////////////////////////////////////////////////////////////////
Blob::Blob(const unsigned char *data, unsigned len)
: m_data(NULL),
m_len(len)
{
if (m_len > 0)
{
m_data = new unsigned char [m_len];
memcpy(m_data, data, m_len);
}
}
//////////////////////////////////////////////////////////////////////////////////////
Blob::Blob(const Blob &cpy)
: m_data(NULL),
m_len(cpy.m_len)
{
if (m_len > 0)
{
m_data = new unsigned char [m_len];
memcpy(m_data, cpy.m_data, m_len);
}
}
//////////////////////////////////////////////////////////////////////////////////////
Blob::~Blob()
{
if (m_data)
{
delete [] m_data;
}
}
//////////////////////////////////////////////////////////////////////////////////////
Blob & Blob::operator =(const Blob &cpy)
{
if (this != &cpy)
{
//copy
if (m_data)
{
delete [] m_data;
m_data = NULL;
}
m_len = cpy.m_len;
if (m_len > 0)
{
m_data = new unsigned char [m_len];
memcpy(m_data, cpy.m_data, m_len);
}
}
return *this;
}
//////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////
ReplyRequest::ReplyRequest( RequestTypes type, unsigned serverTrack, unsigned responseCode )
: GenericRequest(type, serverTrack), m_responseCode(responseCode)
{
}
void ReplyRequest::pack(Base::ByteStream &msg)
{
put(msg, m_type);
put(msg, m_track);
put(msg, m_server_track);
put(msg, m_responseCode);
}
//////////////////////////////////////////////////////////////////////////////////////
CommonRequest::CommonRequest( RequestTypes type, unsigned serverTrack, long long transactionID )
: GenericRequest(type, serverTrack), m_transactionID(transactionID)
{
}
void CommonRequest::pack(Base::ByteStream &msg)
{
put(msg, m_type);
put(msg, m_track);
put(msg, m_transactionID);
}
//////////////////////////////////////////////////////////////////////////////////////
GetIDRequest::GetIDRequest( RequestTypes type, unsigned serverTrack )
: GenericRequest(type, serverTrack)
{
}
void GetIDRequest::pack(Base::ByteStream &msg)
{
put(msg, m_type);
put(msg, m_track);
}
//////////////////////////////////////////////////////////////////////////////////////
SendPrepareCompressedRequest::SendPrepareCompressedRequest(RequestTypes type, unsigned serverTrack, const char *serverID, long long transactionID, unsigned stationID, unsigned characterID, long long assetID, const unsigned char *xmlAsset, unsigned length)
: GenericRequest(type, serverTrack),
m_transactionID(transactionID),
m_stationID(stationID),
m_characterID(characterID),
m_assetID(assetID),
m_serverID(serverID),
m_data(xmlAsset, length)
{
}
void SendPrepareCompressedRequest::pack(Base::ByteStream &msg)
{
put(msg, m_type);
put(msg, m_track);
put(msg, m_serverID);
put(msg, m_transactionID);
put(msg, m_stationID);
put(msg, m_characterID);
put(msg, m_assetID);
put(msg, m_data);
}
//////////////////////////////////////////////////////////////////////////////////////
SendPrepareRequest::SendPrepareRequest( RequestTypes type, unsigned serverTrack, const char *serverID, long long transactionID, unsigned stationID, unsigned characterID, long long assetID, const char *xml )
: GenericRequest(type, serverTrack),
m_transactionID(transactionID),
m_stationID(stationID),
m_characterID(characterID),
m_assetID(assetID),
m_xml(xml),
m_serverID(serverID)
{
}
void SendPrepareRequest::pack(Base::ByteStream &msg)
{
put(msg, m_type);
put(msg, m_track);
put(msg, m_serverID);
put(msg, m_transactionID);
put(msg, m_stationID);
put(msg, m_characterID);
put(msg, m_assetID);
put(msg, m_xml);
}
//////////////////////////////////////////////////////////////////////////////////////
ReplyGetCharacterListRequest::ReplyGetCharacterListRequest(RequestTypes type, unsigned serverTrack, unsigned responseCode, const Character characters[], unsigned numCharacters)
: GenericRequest(type, serverTrack), m_responseCode(responseCode)
{
for(unsigned i = 0; i < numCharacters; i++)
{
m_characters.push_back(characters[i]);
}
}
void ReplyGetCharacterListRequest::pack(Base::ByteStream &msg)
{
put(msg, m_type);
put(msg, m_track);
put(msg, m_server_track);
put(msg, m_responseCode);
put(msg, (unsigned)m_characters.size());
for(unsigned i = 0; i < m_characters.size(); i++)
{
put(msg, m_characters[i]);
}
}
//////////////////////////////////////////////////////////////////////////////////////
IdentifyServerRequest::IdentifyServerRequest(RequestTypes type, unsigned serverTrack, const char *serverID[], unsigned numIDs)
: GenericRequest(type, serverTrack)
{
for(unsigned i = 0; i < numIDs; i++)
{
m_serverIDs.push_back(serverID[i]);
}
}
void IdentifyServerRequest::pack(Base::ByteStream &msg)
{
put(msg, m_type);
put(msg, m_track);
put(msg, (unsigned)m_serverIDs.size());
for(unsigned i = 0; i < m_serverIDs.size(); i++)
{
put(msg, m_serverIDs[i]);
}
}
//////////////////////////////////////////////////////////////////////////////////////
SendAuditRequest::SendAuditRequest( RequestTypes type, unsigned serverTrack, const char *gameCode, const char *serverCode,
long long inGameAssetID, unsigned stationID, const char *event, const char *message)
: GenericRequest(type, serverTrack), m_gameCode(gameCode), m_serverCode(serverCode), m_assetID(inGameAssetID),
m_userID(stationID), m_event(event), m_message(message)
{
}
void SendAuditRequest::pack(Base::ByteStream &msg)
{
put(msg, m_type);
put(msg, m_track);
put(msg, m_gameCode);
put(msg, m_serverCode);
put(msg, m_assetID);
put(msg, m_userID);
put(msg, m_event);
put(msg, m_message);
}
void put(Base::ByteStream &msg, const Blob &source)
{
put(msg, source.getLen());
if (source.getLen() > 0)
{
put(msg, source.getData(), source.getLen());
}
}
}; // namespace
//////////////////////////////////////////////////////////////////////////////////////
@@ -1,147 +0,0 @@
#ifndef REQUEST_H
#define REQUEST_H
#include "ATGenericAPI/GenericMessage.h"
#include "Base/Archive.h"
#include "AuctionTransferEnum.h"
#include "Character.h"
//////////////////////////////////////////////////////////////////////////////////////
namespace AuctionTransfer
{
class Blob
{
public:
Blob() : m_data(0), m_len(0) {}
Blob(const unsigned char *data, unsigned len);
Blob(const Blob &cpy);
~Blob();
Blob & operator =(const Blob &cpy);
const unsigned char *getData() const { return m_data; }
unsigned getLen() const { return m_len; }
unsigned char *m_data;
unsigned m_len;
};
//////////////////////////////////////////////////////////////////////////////////////
class ReplyRequest: public GenericRequest
{
public:
ReplyRequest(RequestTypes type, unsigned serverTrack, unsigned responseCode);
virtual ~ReplyRequest() {};
void pack(Base::ByteStream &msg);
private:
unsigned m_responseCode;
};
//////////////////////////////////////////////////////////////////////////////////////
class CommonRequest: public GenericRequest
{
public:
CommonRequest(RequestTypes type, unsigned serverTrack, long long transactionID);
virtual ~CommonRequest() {};
void pack(Base::ByteStream &msg);
private:
long long m_transactionID;
};
//////////////////////////////////////////////////////////////////////////////////////
class GetIDRequest: public GenericRequest
{
public:
GetIDRequest(RequestTypes type, unsigned serverTrack);
virtual ~GetIDRequest() {};
void pack(Base::ByteStream &msg);
private:
};
//////////////////////////////////////////////////////////////////////////////////////
class SendPrepareRequest: public GenericRequest
{
public:
SendPrepareRequest(RequestTypes type, unsigned serverTrack, const char *serverID, long long transactionID, unsigned stationID, unsigned characterID, long long assetID, const char *xmlAsset);
virtual ~SendPrepareRequest() {};
void pack(Base::ByteStream &msg);
private:
long long m_transactionID;
unsigned m_stationID;
unsigned m_characterID;
long long m_assetID;
std::string m_xml;
std::string m_serverID;
};
//////////////////////////////////////////////////////////////////////////////////////
class SendPrepareCompressedRequest: public GenericRequest
{
public:
SendPrepareCompressedRequest(RequestTypes type, unsigned serverTrack, const char *serverID, long long transactionID, unsigned stationID, unsigned characterID, long long assetID, const unsigned char *xmlAsset, unsigned length);
virtual ~SendPrepareCompressedRequest() {};
void pack(Base::ByteStream &msg);
private:
long long m_transactionID;
unsigned m_stationID;
unsigned m_characterID;
long long m_assetID;
//std::string m_xml;
std::string m_serverID;
Blob m_data;
};
//////////////////////////////////////////////////////////////////////////////////////
class ReplyGetCharacterListRequest: public GenericRequest
{
public:
ReplyGetCharacterListRequest(RequestTypes type, unsigned serverTrack, unsigned responseCode, const Character characters[], unsigned numCharacters);
virtual ~ReplyGetCharacterListRequest() {};
void pack(Base::ByteStream &msg);
private:
unsigned m_responseCode;
std::vector<Character> m_characters;
};
//////////////////////////////////////////////////////////////////////////////////////
class IdentifyServerRequest: public GenericRequest
{
public:
IdentifyServerRequest(RequestTypes type, unsigned serverTrack, const char *serverID[], unsigned numIDs);
virtual ~IdentifyServerRequest() {};
void pack(Base::ByteStream &msg);
private:
std::vector<std::string> m_serverIDs;
};
//////////////////////////////////////////////////////////////////////////////////////
class SendAuditRequest : public GenericRequest
{
public:
SendAuditRequest( RequestTypes type, unsigned serverTrack, const char *gameCode, const char *serverCode,
long long inGameAssetID, unsigned stationID, const char *event, const char *message);
~SendAuditRequest() {};
void pack(Base::ByteStream &msg);
private:
std::string m_gameCode;
std::string m_serverCode;
long long m_assetID;
unsigned m_userID;
std::string m_event;
std::string m_message;
};
}; // namespace
//////////////////////////////////////////////////////////////////////////////////////
#endif //REQUEST_H
@@ -1,17 +0,0 @@
#include "Response.h"
namespace AuctionTransfer
{
GetIDResponse::GetIDResponse(RequestTypes type, void *user)
: GenericResponse( type, TRANSFER_SERVER_TIME_OUT, user), m_transactionID(-1)
{
}
void GetIDResponse::unpack(Base::ByteStream::ReadIterator &iter)
{
get(iter, m_type);
get(iter, m_track);
get(iter, m_result);
get(iter, m_transactionID);
}
};
@@ -1,35 +0,0 @@
#ifndef RESPONSE_H
#define RESPONSE_H
#include "Base/Archive.h"
#include "ATGenericAPI/GenericMessage.h"
#include "AuctionTransferEnum.h"
//////////////////////////////////////////////////////////////////////////////////////
namespace AuctionTransfer
{
class CommonResponse : public GenericResponse
{
public:
CommonResponse(RequestTypes type, void *user) : GenericResponse( type, TRANSFER_SERVER_TIME_OUT, user) {}
virtual ~CommonResponse() {}
};
//////////////////////////////////////////////////////////////////////////////////////
class GetIDResponse : public GenericResponse
{
public:
GetIDResponse(RequestTypes type, void *user);
virtual ~GetIDResponse() {}
long long getNewID() { return m_transactionID; }
virtual void unpack(Base::ByteStream::ReadIterator &iter);
private:
long long m_transactionID;
};
}; // namespace AuctionTransfer
//////////////////////////////////////////////////////////////////////////////////////
#endif //RESPONSE_H
@@ -1,119 +0,0 @@
#include "Clock.h"
#include <time.h>
#ifdef WIN32
#include <winsock.h>
#else //WIN32
#include <sys/stat.h>
#include <sys/time.h>
#include <sys/types.h>
#endif
#ifdef EXTERNAL_DISTRO
namespace NAMESPACE
{
#endif
Clock::Clock()
: m_lastStart(0),
m_totalRunTime(0)
{
}
ClockStamp Clock::getCurTime()
{
#if defined(WIN32)
static int sClockHigh = 0;
static ClockStamp sClockLast = 0;
int high = sClockHigh;
DWORD low = GetTickCount();
ClockStamp holdLast = sClockLast; // this should be interlocked too
ClockStamp ret = ((ClockStamp)high << 32) | low;
// crazy trick to allow threading to work, by putting in a 1000 second fudge factor, we effective say
// that it is ok to time-slice us at a bad point and we will still handle it, provided that our thread
// gets processing time again within 1000 seconds
if (ret < holdLast - 1000000)
{
sClockHigh = high + 1;
ret = ((ClockStamp)high << 32) | low;
}
sClockLast = ret; // this really should be interlocked to be totally safe since it is a 64 bit value, but I don't see a way to do that and am not sure it would mess up anything but the one call anyways
return ret;
#else
struct timeval tv;
int err;
err = gettimeofday(&tv, NULL);
return (static_cast<ClockStamp>(tv.tv_sec) * 1000 + static_cast<ClockStamp>(tv.tv_usec / 1000));
#endif
}
ClockStamp Clock::getElapsedSinceLastStart()
{
if (m_lastStart == 0)
{
//hasn't been started
return 0;
}
ClockStamp elapsed = getCurTime() - m_lastStart;
if (elapsed > 2000000000) // only time differences up to 23 days can be measured with this function
elapsed = 2000000000;
return elapsed;
}
void Clock::start()
{
if (m_lastStart != 0)
{
//already started
return;
}
//set last start to curtime
m_lastStart = getCurTime();
}
void Clock::stop()
{
if (m_lastStart == 0)
{
//need to start before stoping
return;
}
m_totalRunTime += (unsigned)getElapsedSinceLastStart(); //rlsmith - explicit cast to prevent compiler warning
m_lastStart = 0;
}
bool Clock::isDone(unsigned runTime)
{
if (m_lastStart == 0)
{
//never started, so say no
return false;
}
ClockStamp totalElapsed = getElapsedSinceLastStart() + m_totalRunTime;
return (totalElapsed >= runTime);
}
void Clock::reset()
{
m_lastStart = 0;
m_totalRunTime = 0;
}
#ifdef EXTERNAL_DISTRO
};
#endif
@@ -1,71 +0,0 @@
#ifndef CLOCK_H
#define CLOCK_H
#ifdef EXTERNAL_DISTRO
namespace NAMESPACE
{
#endif
#if defined(WIN32)
typedef __int64 ClockStamp;
#else
typedef long long ClockStamp;
#endif
/**
* @brief A Clock can be used as a millisecond timer.
*/
class Clock
{
public:
/**
* @brief Creates a clock, must still be started with Clock::start method.
*
* Once created, a clock can be started, and stoped as often as possible.
*/
Clock();
/**
* @brief Starts the timer running.
*/
void start();
/**
* @brief Stops the timer from running (note: can still be started again later).
*/
void stop();
/**
* @brief Tells you if the timer has been in the started state for longer than runTime.
*
* @param runTime The amount of time to test if this timer has ran longer than.
*
* @return 'true' if timer has ran for longer than or equal to runTime, false otherwise.
*/
bool isDone(unsigned runTime);
/**
* @brief Resets this clock (as if it were never started).
*/
void reset();
private:
ClockStamp m_lastStart;
unsigned m_totalRunTime;
ClockStamp getCurTime();
ClockStamp getElapsedSinceLastStart();
};
#ifdef EXTERNAL_DISTRO
};
#endif
#endif //CLOCK_H
@@ -1,33 +0,0 @@
#include "IPAddress.h"
#if defined(WIN32)
#include <winsock.h>
typedef int socklen_t;
#else // for non-windows platforms (linux)
#include <arpa/inet.h>
#include <sys/socket.h>
#include <string.h>
#endif
#ifdef EXTERNAL_DISTRO
namespace NAMESPACE
{
#endif
IPAddress::IPAddress(unsigned int ip)
: m_IP(ip)
{
}
char *IPAddress::GetAddress(char *buffer) const
{
struct sockaddr_in addr;
addr.sin_addr.s_addr = m_IP;
strcpy(buffer, inet_ntoa(addr.sin_addr));
return(buffer);
}
#ifdef EXTERNAL_DISTRO
};
#endif
@@ -1,51 +0,0 @@
#ifndef TCPIPADDRESS_H
#define TCPIPADDRESS_H
#ifdef EXTERNAL_DISTRO
namespace NAMESPACE
{
#endif
/**
* @brief Container object for IP Address.
*/
class IPAddress
{
public:
/**
* @brief Constructor, sets the ip address if specified.
*/
IPAddress(unsigned int ip = 0);
/**
* @brief Sets the ip address.
*/
void SetAddress(unsigned int ip){ m_IP = ip; }
/**
* @brief Returns the unsigned int representation of this address.
*/
unsigned int GetAddress() const { return m_IP; }
/**
* @brief Used to retreive the the dot-notation represenatatiion of this address.
*
* @param buffer A pointer to the buffer to place the ip address into.
* Must be at least 17 characters long, will be null terminated.
*
* @return A pointer to the buffer the address was placed into.
*/
char *GetAddress(char *buffer) const;
private:
unsigned int m_IP;
};
#ifdef EXTERNAL_DISTRO
};
#endif
#endif //TCPIPADDRESS_H
@@ -1,11 +0,0 @@
AUTOMAKE_OPTIONS=foreign
INCLUDES = -I$(top_srcdir)/external/3rd/library/platform \
-I$(platform_dir)/utils/Base/
METASOURCES = AUTO
libAuctionTransferGameAPITcpLibrary_la_LDFLAGS = -avoid-version
noinst_LTLIBRARIES = libAuctionTransferGameAPITcpLibrary.la
libAuctionTransferGameAPITcpLibrary_la_SOURCES = Clock.cpp Clock.h IPAddress.cpp IPAddress.h\
TcpBlockAllocator.cpp TcpBlockAllocator.h TcpConnection.cpp\
TcpConnection.h TcpHandlers.h TcpManager.cpp TcpManager.h
AM_CXXFLAGS = -DEXTERNAL_DISTRO -DNAMESPACE=AuctionTransfer -DUSE_TCP_LIBRARY
@@ -1,94 +0,0 @@
#include "TcpBlockAllocator.h"
#ifdef EXTERNAL_DISTRO
namespace NAMESPACE
{
#endif
TcpBlockAllocator::TcpBlockAllocator(const unsigned initSize, const unsigned initCount)
: m_freeHead(NULL), m_blockCount(initCount), m_blockSize(initSize), m_numAvailBlocks(0)
{
realloc();
}
TcpBlockAllocator::~TcpBlockAllocator()
{
while(m_freeHead)
{
data_block *tmp = m_freeHead;
m_freeHead = m_freeHead->m_next;
delete[] tmp->m_data;
delete tmp;m_numAvailBlocks--;
}
}
data_block *TcpBlockAllocator::getBlock()
{
data_block *tmp;
if(!m_freeHead)
{
realloc();
}
tmp = m_freeHead;
m_freeHead = m_freeHead->m_next;
tmp->m_next = NULL;
m_numAvailBlocks--;
return(tmp);
}
void TcpBlockAllocator::returnBlock(data_block *b)
{
b->m_usedSize = 0;
b->m_sentSize = 0;
if (m_numAvailBlocks >= m_blockCount)
{
delete[] b->m_data;
delete b;
return;
}
b->m_next = m_freeHead;
m_freeHead = b; m_numAvailBlocks++;
}
void TcpBlockAllocator::realloc()
{
data_block *tmp = NULL, *cursor = NULL;
tmp = new data_block; m_numAvailBlocks++;
cursor = tmp;
memset(cursor, 0, sizeof(data_block));
cursor->m_data = new char[m_blockSize];
cursor->m_totalSize = m_blockSize;
for(unsigned i = 1; i < m_blockCount; i++)
{
cursor->m_next = new data_block; m_numAvailBlocks++;
cursor = cursor->m_next;
memset(cursor, 0, sizeof(data_block));
cursor->m_data = new char[m_blockSize];
cursor->m_totalSize = m_blockSize;
}
if(m_freeHead)
{
cursor->m_next = m_freeHead;
m_freeHead = tmp;
}
else
{
m_freeHead = tmp;
}
}
#ifdef EXTERNAL_DISTRO
};
#endif
@@ -1,44 +0,0 @@
#ifndef TCPBLOCKALLOCATOR_H
#define TCPBLOCKALLOCATOR_H
#include <string.h>
#ifdef EXTERNAL_DISTRO
namespace NAMESPACE
{
#endif
struct data_block
{
unsigned m_usedSize;
unsigned m_sentSize;
unsigned m_totalSize;
char *m_data;
data_block *m_next;
};
class TcpBlockAllocator
{
public:
TcpBlockAllocator(const unsigned initSize, const unsigned initCount);
~TcpBlockAllocator();
data_block *getBlock();
void returnBlock(data_block *);
private:
void realloc();
data_block *m_freeHead;
unsigned m_blockCount;
unsigned m_blockSize;
unsigned m_numAvailBlocks;
};
#ifdef EXTERNAL_DISTRO
};
#endif
#endif //TCPBLOCKALLOCATOR_H
@@ -1,784 +0,0 @@
#include "TcpConnection.h"
#include "TcpManager.h"
#include "Clock.h"
#include <errno.h>
#ifdef EXTERNAL_DISTRO
namespace NAMESPACE
{
#endif
//used when want to open new connection with this socket
TcpConnection::TcpConnection(TcpManager *tcpManager, TcpBlockAllocator *sendAlloc, TcpManager::TcpParams &params, const IPAddress &destIP, short destPort, unsigned timeout)
: m_nextConnection(NULL),
m_prevConnection(NULL),
m_socket(INVALID_SOCKET),
m_nextKeepAliveConnection(NULL),
m_prevKeepAliveConnection(NULL),
m_aliveListId(tcpManager->m_aliveList.m_listID),
m_nextRecvDataConnection(NULL),
m_prevRecvDataConnection(NULL),
m_recvDataListId(tcpManager->m_dataList.m_listID),
m_manager(tcpManager),
m_status(StatusNegotiating),
m_handler(NULL),
m_destIP(destIP),
m_destPort(destPort),
m_refCount(0),
m_sendAllocator(sendAlloc),
m_head(NULL),
m_tail(NULL),
m_bytesRead(0),
m_bytesNeeded(0),
m_params(params),
m_recvBuff(NULL),
m_connectTimeout(timeout),
m_connectTimer(),
m_wasConRemovedFromMgr(false)
{
//start connection timer
m_connectTimer.start();
memset(&m_addr, 0, sizeof(m_addr));
if (m_params.maxRecvMessageSize != 0)
{
m_recvBuff = new char[m_params.maxRecvMessageSize];
}
m_socket = socket(AF_INET, SOCK_STREAM, 0);
setOptions();
m_addr.sin_family = AF_INET;
m_addr.sin_port = htons(m_destPort);
m_addr.sin_addr.s_addr = m_destIP.GetAddress();
int err = connect(m_socket, (sockaddr *)&m_addr, sizeof(m_addr));
if(err == SOCKET_ERROR)
{
#ifdef WIN32
int sockerr = WSAGetLastError();
if(sockerr != WSAEWOULDBLOCK)
{
//a real error
m_status = StatusDisconnected;
}
else
{
m_status = StatusNegotiating;
}
#else // UNIX
if (errno != EINPROGRESS)
{
m_status = StatusDisconnected;
}
else
{
m_status = StatusNegotiating;
}
#endif
}
else
{
//we are connected, wow
m_status = StatusConnected;
}
}
//used when server mode creates new connection object representing a connect request
TcpConnection::TcpConnection(TcpManager *tcpManager, TcpBlockAllocator *sendAlloc, TcpManager::TcpParams &params, SOCKET socket, const IPAddress &destIP, short destPort)
: m_nextConnection(NULL),
m_prevConnection(NULL),
m_socket(socket),
m_nextKeepAliveConnection(NULL),
m_prevKeepAliveConnection(NULL),
m_aliveListId(tcpManager->m_aliveList.m_listID),
m_nextRecvDataConnection(NULL),
m_prevRecvDataConnection(NULL),
m_recvDataListId(tcpManager->m_dataList.m_listID),
m_manager(tcpManager),
m_status(StatusConnected),
m_handler(NULL),
m_destIP(destIP),
m_destPort(destPort),
m_refCount(0),
m_sendAllocator(sendAlloc),
m_head(NULL),
m_tail(NULL),
m_bytesRead(0),
m_bytesNeeded(0),
m_params(params),
m_recvBuff(NULL),
m_connectTimeout(0),
m_connectTimer(),
m_wasConRemovedFromMgr(false)
{
memset(&m_addr, 0, sizeof(m_addr));
if (m_params.maxRecvMessageSize != 0)
{
m_recvBuff = new char[m_params.maxRecvMessageSize];
}
setOptions();
}
void TcpConnection::setOptions()
{
if (m_socket != INVALID_SOCKET)
{
#if defined(WIN32)
unsigned long isNonBlocking = 1;
int outBufSize = m_params.outgoingBufferSize;
int inBufSize = m_params.incomingBufferSize;
int keepAlive = 1;
int reuseAddr = 1;
struct linger ld;
ld.l_onoff = 0;
ld.l_linger = 0;
if (ioctlsocket(m_socket, FIONBIO, &isNonBlocking) != 0
|| setsockopt(m_socket, SOL_SOCKET, SO_SNDBUF, (char *)&outBufSize, sizeof(outBufSize)) != 0
|| setsockopt(m_socket, SOL_SOCKET, SO_RCVBUF, (char *)&inBufSize, sizeof(inBufSize)) != 0
|| setsockopt(m_socket, SOL_SOCKET, SO_KEEPALIVE, (char *)&keepAlive, sizeof(keepAlive)) != 0
|| setsockopt(m_socket, SOL_SOCKET, SO_REUSEADDR, (char *)&reuseAddr, sizeof(reuseAddr)) != 0
|| setsockopt(m_socket, SOL_SOCKET, SO_LINGER, (char *)&ld, sizeof(ld)) != 0 )
{
//bummer, but no need to crash now.... ?
}
#else // linux is to remain the default compile mode
unsigned long isNonBlocking = 1;
unsigned long keepAlive = 1;
unsigned long outBufSize = m_params.outgoingBufferSize;
unsigned long inBufSize = m_params.incomingBufferSize;
unsigned long reuseAddr = 1;
struct linger ld;
ld.l_onoff = 0;
ld.l_linger = 0;
if (ioctl(m_socket, FIONBIO, &isNonBlocking) != 0
|| setsockopt(m_socket, SOL_SOCKET, SO_SNDBUF, &outBufSize, sizeof(outBufSize)) != 0
|| setsockopt(m_socket, SOL_SOCKET, SO_RCVBUF, &inBufSize, sizeof(inBufSize)) != 0
|| setsockopt(m_socket, SOL_SOCKET, SO_KEEPALIVE, &keepAlive, sizeof(keepAlive)) != 0
|| setsockopt(m_socket, SOL_SOCKET, SO_REUSEADDR, &reuseAddr, sizeof(reuseAddr)) != 0
|| setsockopt(m_socket, SOL_SOCKET, SO_LINGER, &ld, sizeof(ld)) != 0)
{
//bummer, but no need to crash now.... ?
}
#endif
}
}
int TcpConnection::finishConnect()
{
AddRef();
int returnVal = 0;
/**< returns < 0 if fatal error and connect will not work, =0 if need more time, >0 if connect completed */
switch (m_status)
{
case StatusDisconnected:
{
//something went wrong
Disconnect(false);
returnVal = -1;
}
break;
case StatusNegotiating:
{
#ifdef WIN32
//try to finish connection
fd_set wrSet;
FD_ZERO(&wrSet);
FD_SET(m_socket, &wrSet);
timeval t;
t.tv_sec = 0;
t.tv_usec = 0;
int err = select(m_socket + 1, NULL, &wrSet, NULL, &t);
if (err == 0)
{
//needs more time
returnVal = 0;
}
else if (err == SOCKET_ERROR)
{
//huhoh, let's hope it needs more time
int sockerr = WSAGetLastError();
if (sockerr == WSAEINPROGRESS
|| sockerr == WSAEWOULDBLOCK
|| sockerr == WSAEALREADY
|| sockerr == WSAEINVAL)
{
//yep
returnVal = 0;
}
else
{
Disconnect(false);
returnVal = -1;
}
}
else
{
//check if write bit set for socket
if (FD_ISSET(m_socket, &wrSet))
{
//connection complete
m_status = StatusConnected;
returnVal = 1;
}
else
{
//give it more time??
returnVal = 0;
}
}
#else // not WIN32
int err = connect(m_socket, (sockaddr *)&m_addr, sizeof(m_addr));
if(err == SOCKET_ERROR)
{
if (errno != EINPROGRESS && errno != EALREADY)
{
Disconnect(false);
returnVal = -1;//failure
}
else
{
returnVal = 0;//need to wait
}
}
else
{
m_status = StatusConnected;
returnVal = 1;//connect success
}
#endif
}
break;
case StatusConnected:
{
//wierd, shouldn't be trying to do this here
Disconnect(true);
returnVal = -1;
}
break;
}
if (returnVal == 0 && m_connectTimeout != 0 && m_connectTimer.isDone(m_connectTimeout))
{
Disconnect(false);
returnVal = -1;
}
else if (returnVal ==1/* && m_connectTimeout != 0*/)
{
//need to give, onConnect callback
if (m_manager->m_handler)
m_manager->m_handler->OnConnectRequest(this);
}
Release();
return returnVal;
}
TcpConnection::~TcpConnection()
{
if (m_recvBuff != NULL)
{
delete [] m_recvBuff;
}
while(m_head != NULL)
{
data_block *tmp = m_head;
m_head = m_head->m_next;
m_sendAllocator->returnBlock(tmp);
}
//TODO: need to notify app if are currently connected
}
void TcpConnection::Send(const char *data, unsigned int dataLen)
{
//add msg to buf
int totalLen = dataLen + sizeof(int);
if(m_status == StatusDisconnected)
{
return;
}
if (m_params.keepAliveDelay > 0 && m_aliveListId == m_manager->m_aliveList.m_listID)
{
m_aliveListId = m_manager->m_keepAliveList.m_listID;
if (m_prevKeepAliveConnection != NULL)
m_prevKeepAliveConnection->m_nextKeepAliveConnection = m_nextKeepAliveConnection;
if (m_nextKeepAliveConnection != NULL)
m_nextKeepAliveConnection->m_prevKeepAliveConnection = m_prevKeepAliveConnection;
if (m_manager->m_keepAliveList.m_beginList == this)
m_manager->m_keepAliveList.m_beginList = m_nextKeepAliveConnection;
m_nextKeepAliveConnection = m_manager->m_aliveList.m_beginList;
m_prevKeepAliveConnection = NULL;
if (m_manager->m_aliveList.m_beginList != NULL)
m_manager->m_aliveList.m_beginList->m_prevKeepAliveConnection = this;
m_manager->m_aliveList.m_beginList = this;
}
data_block *work = NULL;
// this connection has no send buffer. Get a block
if(!m_tail)
{
m_head = m_sendAllocator->getBlock();
m_tail = m_head;
}
work = m_tail;
//send message len first
unsigned nLen = htonl(totalLen);
unsigned lenLength = sizeof(int);
unsigned lenIndex = 0;
while(lenIndex < lenLength)
{
if ((lenLength - lenIndex) <= (work->m_totalSize - work->m_usedSize))
{
//size will fit in this block
memcpy(work->m_data + work->m_usedSize, (char *)(&nLen) + lenIndex, lenLength - lenIndex);
work->m_usedSize += (lenLength - lenIndex);
lenIndex += (lenLength - lenIndex);
}
else
{
//size will not fit in this block
memcpy(work->m_data + work->m_usedSize, (char *)(&nLen) + lenIndex, work->m_totalSize - work->m_usedSize);
lenIndex += work->m_totalSize - work->m_usedSize;
work->m_usedSize += work->m_totalSize - work->m_usedSize;
work->m_next = m_sendAllocator->getBlock();
work = work->m_next;
m_tail = work;
}
}
//now send message payload
unsigned messageIndex = 0;
while(messageIndex < dataLen)
{
if((dataLen - messageIndex) <= (work->m_totalSize - work->m_usedSize))
{
// data will fit in this block
memcpy(work->m_data + work->m_usedSize, data + messageIndex, (dataLen - messageIndex));
work->m_usedSize += (dataLen - messageIndex);
messageIndex += (dataLen - messageIndex);
}
else
{
// data will not fit in this block. Fill this block and get another block
memcpy(work->m_data + work->m_usedSize, data + messageIndex, work->m_totalSize - work->m_usedSize);
messageIndex += work->m_totalSize - work->m_usedSize;
work->m_usedSize += work->m_totalSize - work->m_usedSize;
work->m_next = m_sendAllocator->getBlock();
work = work->m_next;
m_tail = work;
}
}
return;
}
void TcpConnection::Disconnect(bool notifyApplication)
{
AddRef();
m_status = StatusDisconnected;
if (!m_wasConRemovedFromMgr)
{
m_manager->removeConnection(this);
m_wasConRemovedFromMgr = true;
}
if(m_socket != INVALID_SOCKET)
{
#if defined(WIN32)
closesocket(m_socket);
#else
close(m_socket);
#endif
m_socket = INVALID_SOCKET;
}
if (notifyApplication && m_handler)
m_handler->OnTerminated(this);
Release();
}
void TcpConnection::AddRef()
{
m_refCount++;
}
void TcpConnection::Release()
{
if (--m_refCount == 0)
{
//make sure manager knows I'm gone
if (m_status != StatusDisconnected)
Disconnect(false);
delete this;
}
}
int TcpConnection::processIncoming()
{
/**< returns < 0 if fatal error and socket has been closed,
=0 if read anything (full or partial message),
>0 if nothing to read now, or would block so shouldn't try again immediately. */
if (m_status != StatusConnected)
{
//wait until connect succeeds
return 1;
}
if (m_params.noDataTimeout > 0 && m_recvDataListId == m_manager->m_dataList.m_listID)
{
m_recvDataListId = m_manager->m_noDataList.m_listID;
if (m_prevRecvDataConnection != NULL)
m_prevRecvDataConnection->m_nextRecvDataConnection = m_nextRecvDataConnection;
if (m_nextRecvDataConnection != NULL)
m_nextRecvDataConnection->m_prevRecvDataConnection = m_prevRecvDataConnection;
if (m_manager->m_noDataList.m_beginList == this)
m_manager->m_noDataList.m_beginList = m_nextRecvDataConnection;
m_nextRecvDataConnection = m_manager->m_dataList.m_beginList;
m_prevRecvDataConnection = NULL;
if (m_manager->m_dataList.m_beginList != NULL)
m_manager->m_dataList.m_beginList->m_prevRecvDataConnection = this;
m_manager->m_dataList.m_beginList = this;
}
int newMsg = 0;
if (m_bytesRead < sizeof(int))
{
//new msg
newMsg = 1;
//printf("socket: %d\n", m_socket);
int ret = recv(m_socket, ((char *)(&m_bytesNeeded) + m_bytesRead),
4 - m_bytesRead, 0);
//fprintf(stderr, "READ: %d\n", ret);
if (ret == 0)
{
//We did a select, so there should be data. Socket was closed.
Disconnect();
return -1;
}
else if (ret == -1)
{
if (translateRecvSocketEror())
{
//fatal error
return -1;
}
else
{
//need to wait
return 1;
}
}
else
{
m_bytesRead += ret;
if (m_bytesRead < 4)
{
return 1;//need to wait
}
else
{
m_bytesNeeded = ntohl(m_bytesNeeded);
//printf("m_bytesNeeded = %i\n", m_bytesNeeded);
if (m_bytesNeeded == sizeof(int))
{
//keepalive, ignore
m_bytesRead = 0;
m_bytesNeeded = 0;
return 0;
}
else if (m_bytesNeeded < sizeof(int))
{
//major protocol violation
Disconnect();
return -1;
}
else if (m_params.maxRecvMessageSize == 0)
{
if (m_recvBuff!=NULL)
delete [] m_recvBuff;
m_recvBuff = new char[m_bytesNeeded-4];
}
else if (m_params.maxRecvMessageSize != 0 && (m_bytesNeeded-4) > m_params.maxRecvMessageSize)
{
//error, maxRecvMeessageSize exceeded, Disconnect
Disconnect();
return -1;
}
}
}
}
int msgBytesRead = m_bytesRead - 4;
int msgBytesNeeded = m_bytesNeeded - 4;
int ret = recv(m_socket, (char *)(m_recvBuff + msgBytesRead),
msgBytesNeeded - msgBytesRead, 0);
if (ret == 0 && !newMsg)
{
//We did a select, so there should be data. Socket was closed.
Disconnect();
return -1;
}
if (ret == -1)
{
if (translateRecvSocketEror())
{
//fatal error
return -1;
}
else
{
//need to wait
return 1;
}
} else
{
m_bytesRead += ret;
}
if (m_bytesRead == m_bytesNeeded)
{
m_bytesRead = 0;
m_bytesNeeded = 0;
if (m_handler)
{
AddRef();//could get deleted during this callback
m_handler->OnRoutePacket(this, (unsigned char *)m_recvBuff, msgBytesNeeded);
if (m_status == StatusDisconnected)
{
Release();
return -1;
}
Release();
}
//entire message received
return 0;
}
else
{
return 1;//couldn't get entire msg
}
}
int TcpConnection::processOutgoing()
{
/**< returns < 0 if fatal error and socket has been closed,
=0 if sent data, call again immediately if want to,
>0 may have sent data, but calling again would do no good because there is either no more data to send, or would block. */
if (m_status != StatusConnected)
{
//wait until connect succeeds
return 0;
}
int sendError = 1;
// If m_head is not null, then this connection has something to send
if(m_head)
{
int amt = ::send(m_socket, m_head->m_data + m_head->m_sentSize, m_head->m_usedSize - m_head->m_sentSize, 0);
if(amt < 0)
{
#ifdef WIN32
switch(WSAGetLastError())
{
case WSAEWOULDBLOCK:
case WSAEINTR:
case WSAEINPROGRESS:
case WSAEALREADY:
case WSA_IO_PENDING:
case WSA_NOT_ENOUGH_MEMORY:
case WSATRY_AGAIN:
//try again
sendError = 1;
break;
default:
//assume broken, Disconnect
Disconnect();
sendError = -1;
break;
}
#else //not WIN32
// error condition, EAGAIN is recoverable, otherwise raise an error condition. Break from loop
switch(errno)
{
case EAGAIN:
//try again
sendError = 1;
break;
default:
//assume broken, Disconnect
Disconnect();
sendError = -1;
break;
}
#endif
}
else if(static_cast<unsigned>(amt) < (m_head->m_usedSize - m_head->m_sentSize))
{
// partial send: trying to do anything more now would be a waste of time. Break from loop
m_head->m_sentSize += amt;
sendError = 1;
}
else if(amt == 0)
{
Disconnect();
sendError = -1;
// client closed connection
}
else
{
// everything was sent from this block. Return it to the pool, advance m_head. Attempt to continue
// sending
data_block *tmp = m_head;
if(m_tail == m_head)
{
m_tail = m_tail->m_next;
m_head = m_head->m_next;
}
else
{
m_head = m_head->m_next;
}
m_sendAllocator->returnBlock(tmp);
sendError = 0;
}
}
return sendError;
}
bool TcpConnection::translateRecvSocketEror()
{
/**< returns false if fatal error and socket has been closed,
true if should try again. */
bool fatalError=false;
#ifdef WIN32
switch(WSAGetLastError())
{
case WSAENOBUFS:
case WSAEINPROGRESS:
case WSAEINTR:
case WSAEWOULDBLOCK:
case WSABASEERR:
fatalError=false;
break;
case WSANOTINITIALISED:
case WSAENETDOWN:
case WSAEFAULT:
case WSAENOTCONN:
case WSAENETRESET:
case WSAENOTSOCK:
case WSAEOPNOTSUPP:
case WSAESHUTDOWN:
case WSAEMSGSIZE:
case WSAEINVAL:
case WSAECONNABORTED:
case WSAETIMEDOUT:
case WSAECONNRESET:
default:
//fatal
fatalError=true;
Disconnect();
break;
}
#else //not WIN32
switch(errno)
{
case EWOULDBLOCK:
case EINTR:
case ETIMEDOUT:
case ENOBUFS:
//try later
fatalError=false;
break;
case EBADF:
case ECONNRESET:
case EFAULT:
case EINVAL:
case ENOTCONN:
case ENOTSOCK:
case EOPNOTSUPP:
case EPIPE:
case EIO:
case ENOMEM:
case ENOSR:
default:
//fatal
fatalError=true;
Disconnect();
break;
}
#endif
return fatalError;
}
#ifdef EXTERNAL_DISTRO
};
#endif
@@ -1,157 +0,0 @@
#ifndef TCPCONNECTION_H
#define TCPCONNECTION_H
#include "TcpHandlers.h"
#include "TcpManager.h"
#include "IPAddress.h"
#include "TcpBlockAllocator.h"
#include "Clock.h"
#if defined(WIN32)
#include <winsock2.h>
typedef int socklen_t;
#else // for non-windows platforms (linux)
#include <arpa/inet.h>
#include <netdb.h>
#include <sys/ioctl.h>
#include <sys/socket.h>
#include <sys/time.h>
#include <sys/types.h>
#include <unistd.h>
#endif
#ifdef EXTERNAL_DISTRO
namespace NAMESPACE
{
#endif
/**
* @brief Manages a single connection.
*/
class TcpConnection
{
public:
/**
* @brief The connection status.
*/
enum Status {
StatusNegotiating, /**< Currently attempting to connect. */
StatusConnected, /**< Currently connected. */
StatusDisconnected /**< Currently disconnected. */
};
/**
* @brief Sets the handler object which will receive callback methods.
*
* To have the TcpConnection call your object directly when packets are received, and when the
* connection is disconnected, you simply need to derive your class
* (multiply if necessary) from TcpConnectionHandler, then you can use
* this method to set the object the TcpConnection will call as appropriate.
* default = NULL (no callbacks made)
*
* @param handler The object which will be called for notifications.
*/
void SetHandler(TcpConnectionHandler *handler){ m_handler = handler; }
/**
* @brief Returns the handler associated with this object.
*/
TcpConnectionHandler *GetHandler(){ return m_handler; }
/**
* @brief Returns the current status of this connection.
*/
Status GetStatus(){ return m_status; }
/**
* @brief Queues a message to be sent on this connection.
*/
void Send(const char *data, unsigned dataLen);
/**
* @brief Disconnects and recycles the socket.
*
* @param notifyApplication primarily used internally, but when set to 'true', it will cause the application
* to be called back via the onTerminated handler due to this call (the callback will not occur if the connection was
* already disconnected)
*/
void Disconnect(bool notifyApplication=true);
/**
* @brief Returns the ip on the other side of this connection.
*/
IPAddress GetDestinationIp(){ return m_destIP; }
/**
* @brief Returns the port on the other side of this conection.
*/
short GetDestinationPort(){ return m_destPort; }
/**
* @brief Standard AddRef/Release scheme
*/
void AddRef();
/**
* @brief Standard AddRef/Release scheme
*/
void Release();
bool wasRemovedFromMgr() { return m_wasConRemovedFromMgr; }
void setRemovedFromMgr() { m_wasConRemovedFromMgr = true; }
protected:
friend class TcpManager;
TcpConnection(TcpManager *tcpManager, TcpBlockAllocator *sendAlloc, TcpManager::TcpParams &params, const IPAddress &destIP, short destPort, unsigned timeout);
int finishConnect();/**< returns < 0 if fatal error and connect will not work, =0 if need more time, >0 if connect completed */
TcpConnection(TcpManager *tcpManager, TcpBlockAllocator *sendAlloc, TcpManager::TcpParams &params, SOCKET socket, const IPAddress &destIP, short destPort);
TcpConnection *m_nextConnection; /**< Double linked list imp. */
TcpConnection *m_prevConnection; /**< Double linked list imp. */
SOCKET m_socket;
int processOutgoing();/**< returns < 0 if fatal error and socket has been closed, =0 if sent data, call again immediately if want to, >0 may have sent data, but calling again would do no good because there is either no more data to send, or would block. */
int processIncoming();/**< returns < 0 if fatal error and socket has been closed, =0 if read anything (full or partial message), >0 if nothing to read now, or would block so shouldn't try again immediately. */
TcpConnection *m_nextKeepAliveConnection; /**< Double linked list imp. */
TcpConnection *m_prevKeepAliveConnection; /**< Double linked list imp. */
int m_aliveListId;
TcpConnection *m_nextRecvDataConnection;
TcpConnection *m_prevRecvDataConnection;
int m_recvDataListId;
private:
~TcpConnection();
void setOptions();
TcpManager *m_manager;
bool translateRecvSocketEror();
Status m_status;
TcpConnectionHandler *m_handler;
IPAddress m_destIP;
short m_destPort;
unsigned m_refCount;
TcpBlockAllocator *m_sendAllocator;
data_block *m_head;
data_block *m_tail;
unsigned m_bytesRead;
unsigned m_bytesNeeded;
TcpManager::TcpParams m_params;
char *m_recvBuff;
sockaddr_in m_addr;
unsigned m_connectTimeout;
Clock m_connectTimer;
bool m_wasConRemovedFromMgr;
};
#ifdef EXTERNAL_DISTRO
};
#endif
#endif //TCPCONNECTION_H
@@ -1,50 +0,0 @@
#ifndef TCPHANDLERS_H
#define TCPHANDLERS_H
#ifdef EXTERNAL_DISTRO
namespace NAMESPACE
{
#endif
class TcpConnection;
/**
* @brief Interface used by TcpManager class for notification to application of connection state/etc.
*
* Note: these callbacks will only be made when during a call to TcpManager::giveTime.
*/
class TcpManagerHandler
{
public:
/**
* @brief Callback made when a new connection has been established by the manager.
*/
virtual void OnConnectRequest(TcpConnection *con)=0;
};
/**
* @brief Interface used by TcpConnection class for notification to application of connection state/etc.
*
* Note: these callbacks will only be made when during a call to TcpManager::giveTime.
*/
class TcpConnectionHandler
{
public:
/**
* @brief Callback made when a new message has been received on the specified connection.
*/
virtual void OnRoutePacket(TcpConnection *con, const unsigned char *data, int dataLen)=0;
/**
* @brief Callback made when the specified connection has closed, or been closed.
*/
virtual void OnTerminated(TcpConnection *con)=0;
};
#ifdef EXTERNAL_DISTRO
};
#endif
#endif //TCPHANDLERS_H
@@ -1,734 +0,0 @@
#include "TcpManager.h"
#include <assert.h>
#include "IPAddress.h"
#include "TcpConnection.h"
#ifndef WIN32
#include <sys/poll.h>
#endif
#ifdef EXTERNAL_DISTRO
namespace NAMESPACE
{
#endif
TcpManager::TcpParams::TcpParams()
: port(0),
maxConnections(10),
incomingBufferSize(64*1024),
outgoingBufferSize(64*1024),
allocatorBlockSize(8*1024),
allocatorBlockCount(16),
maxRecvMessageSize(0),
keepAliveDelay(0),
noDataTimeout(0)
{
memset(bindAddress, 0, sizeof(bindAddress));
}
TcpManager::TcpParams::TcpParams(const TcpParams &cpy)
: port(cpy.port),
maxConnections(cpy.maxConnections),
incomingBufferSize(cpy.incomingBufferSize),
outgoingBufferSize(cpy.outgoingBufferSize),
allocatorBlockSize(cpy.allocatorBlockSize),
allocatorBlockCount(cpy.allocatorBlockCount),
maxRecvMessageSize(cpy.maxRecvMessageSize),
keepAliveDelay(cpy.keepAliveDelay),
noDataTimeout(cpy.noDataTimeout)
{
}
TcpManager::TcpManager(const TcpParams &params)
: m_handler(NULL),
m_keepAliveList(NULL, 1),
m_aliveList(NULL, 2),
m_noDataList(NULL, 1),
m_dataList(NULL, 2),
m_params(params),
m_refCount(1),
m_connectionList(NULL),
m_connectionListCount(0),
m_socket(INVALID_SOCKET),
m_boundAsServer(false),
m_allocator(params.allocatorBlockSize, params.allocatorBlockCount),
m_keepAliveTimer(),
m_noDataTimer()
{
if (params.keepAliveDelay > 0)
m_keepAliveTimer.start();
if (params.noDataTimeout > 0)
m_noDataTimer.start();
#if defined(WIN32)
WSADATA wsaData;
WSAStartup(MAKEWORD(1,1), &wsaData);
FD_ZERO(&m_permfds);//select only used on win32
#endif
}
TcpManager::~TcpManager()
{
#if defined(WIN32)
WSACleanup();
#endif
if (m_boundAsServer)
{
#if defined(WIN32)
closesocket(m_socket);
#else
close(m_socket);
#endif
}
while (m_connectionList != NULL)
{
TcpConnection *con = m_connectionList;
m_connectionList = m_connectionList->m_nextConnection;
con->Release();
m_connectionListCount--;
}
}
bool TcpManager::BindAsServer()
{
m_socket = socket(AF_INET, SOCK_STREAM, 0);
if (m_socket != INVALID_SOCKET)
{
#if defined(WIN32)
FD_SET(m_socket, &m_permfds);//the socket this server is listening on
unsigned long isNonBlocking = 1;
int outBufSize = m_params.outgoingBufferSize;
int inBufSize = m_params.incomingBufferSize;
int keepAlive = 1;
int reuseAddr = 1;
struct linger ld;
ld.l_onoff = 0;
ld.l_linger = 0;
if (ioctlsocket(m_socket, FIONBIO, &isNonBlocking) != 0
|| setsockopt(m_socket, SOL_SOCKET, SO_SNDBUF, (char *)&outBufSize, sizeof(outBufSize)) != 0
|| setsockopt(m_socket, SOL_SOCKET, SO_RCVBUF, (char *)&inBufSize, sizeof(inBufSize)) != 0
|| setsockopt(m_socket, SOL_SOCKET, SO_KEEPALIVE, (char *)&keepAlive, sizeof(keepAlive)) != 0
|| setsockopt(m_socket, SOL_SOCKET, SO_REUSEADDR, (char *)&reuseAddr, sizeof(reuseAddr)) != 0
|| setsockopt(m_socket, SOL_SOCKET, SO_LINGER, (char *)&ld, sizeof(ld)) != 0 )
{
return false;
}
#else // linux is to remain the default compile mode
unsigned long isNonBlocking = 1;
unsigned long keepAlive = 1;
unsigned long outBufSize = m_params.outgoingBufferSize;
unsigned long inBufSize = m_params.incomingBufferSize;
unsigned long reuseAddr = 1;
struct linger ld;
ld.l_onoff = 0;
ld.l_linger = 0;
if (ioctl(m_socket, FIONBIO, &isNonBlocking) != 0
|| setsockopt(m_socket, SOL_SOCKET, SO_SNDBUF, &outBufSize, sizeof(outBufSize)) != 0
|| setsockopt(m_socket, SOL_SOCKET, SO_RCVBUF, &inBufSize, sizeof(inBufSize)) != 0
|| setsockopt(m_socket, SOL_SOCKET, SO_KEEPALIVE, &keepAlive, sizeof(keepAlive)) != 0
|| setsockopt(m_socket, SOL_SOCKET, SO_REUSEADDR, &reuseAddr, sizeof(reuseAddr)) != 0
|| setsockopt(m_socket, SOL_SOCKET, SO_LINGER, &ld, sizeof(ld)) != 0)
{
return false;
}
#endif
}
else
{
return false;
}
struct sockaddr_in addr_loc;
addr_loc.sin_family = AF_INET;
addr_loc.sin_port = htons(m_params.port);
addr_loc.sin_addr.s_addr = htonl(INADDR_ANY);
if (m_params.bindAddress[0] != 0)
{
unsigned long address = inet_addr(m_params.bindAddress);
if (address == INADDR_NONE)
{
struct hostent * lphp;
lphp = gethostbyname(m_params.bindAddress);
if (lphp != NULL)
addr_loc.sin_addr.s_addr = ((struct in_addr *)(lphp->h_addr))->s_addr;
}
else
{
addr_loc.sin_addr.s_addr = address;
}
}
if (bind(m_socket, (struct sockaddr *)&addr_loc, sizeof(addr_loc)) != 0)
{
return false;
}
if (listen(m_socket, 1000) != 0)
{
return false;
}
m_boundAsServer = true;
return true;
}
TcpConnection *TcpManager::acceptClient()
{
TcpConnection *newConn = NULL;
if (m_boundAsServer && m_connectionListCount < m_params.maxConnections)
{
sockaddr_in addr;
int addrLength = sizeof(addr);
SOCKET sock = ::accept(m_socket, (sockaddr *) &addr, (socklen_t *) &addrLength);
if (sock != INVALID_SOCKET)
{
newConn = new TcpConnection(this, &m_allocator, m_params, sock, IPAddress(addr.sin_addr.s_addr), ntohs(addr.sin_port));
addNewConnection(newConn);
if (m_handler != NULL)
{
m_handler->OnConnectRequest(newConn);
}
}
}
return newConn;
}
void TcpManager::SetHandler(TcpManagerHandler *handler)
{
m_handler = handler;
}
SOCKET TcpManager::getMaxFD()
{
#ifdef WIN32
return 0;//this param is not used on win32 for select, only on unix
#else
SOCKET maxfd = 0;
if (m_boundAsServer)
maxfd = m_socket+1;
TcpConnection *next = NULL;
for (TcpConnection *con = m_connectionList ; con != NULL ; con = next)
{
next = con->m_nextConnection;
if (con->GetStatus() != TcpConnection::StatusDisconnected && con->m_socket > maxfd)
{
maxfd = con->m_socket + 1;
}
}
return maxfd;
#endif
}
TcpConnection *TcpManager::getConnection(SOCKET fd)
{
TcpConnection *next = NULL;
for (TcpConnection *con = m_connectionList ; con != NULL ; con = next)
{
next = con->m_nextConnection;
if (con->m_socket == fd)
{
return con;
}
}
//if get here ,couldn't find it
return NULL;
}
bool TcpManager::GiveTime(unsigned maxTimeAcceptingConnections,unsigned maxSendTimePerConnection, unsigned maxRecvTimePerConnection)
{
bool processedIncoming = false;
if (maxTimeAcceptingConnections == 0 && maxSendTimePerConnection==0 && maxRecvTimePerConnection==0)
{
//they don't want to do anything now
return processedIncoming;
}
AddRef(); //keep a reference to ourself in case we callback to the application and the application releases us.
//first process outgoing on each connection, and finish establishing connections, if params say to
if (m_connectionListCount != 0 && maxSendTimePerConnection != 0)
{
// Send output from last heartbeat
TcpConnection *next = NULL;
for (TcpConnection *con = m_connectionList ; con != NULL ; con = next)
{
con->AddRef();
if (next) next->Release();
next = con->m_nextConnection;
if (next) next->AddRef();
if(con->GetStatus() == TcpConnection::StatusConnected)
{
Clock timer;
timer.start();
while(!timer.isDone(maxSendTimePerConnection))
{
int err = con->processOutgoing();
if (err > 0)
{
//couldn't finish processing last request, don't try more
break;
}
else if (err < 0)
{
break;
}
}
con->Release();
}
else if (con->GetStatus() == TcpConnection::StatusNegotiating)
{
if (con->finishConnect() < 0)
{
con->Release();
continue;
}
con->Release();
}
else //inactive client in client list????
{
removeConnection(con);
con->Release();
continue;
}
}
}
//process incoming messages (including connect requests)
if ((
m_boundAsServer //if in server mode and want to spend time accepting clients
&& maxTimeAcceptingConnections != 0
)
||
(
m_connectionListCount != 0 //if there are connections and want to spend time receiving on them
&& maxRecvTimePerConnection != 0
)
)
{
#ifdef WIN32
SOCKET maxfd = getMaxFD(); //re-calc maxfd every time select on WIN32
//select on all fd's
struct timeval timeout;
fd_set tmpfds;
tmpfds = m_permfds;
timeout.tv_sec = 0;
timeout.tv_usec = 0;
int cnt = select(maxfd, &tmpfds, NULL, NULL, &timeout); // blocks for timeout
if (cnt > 0)
{
if (m_boundAsServer && maxTimeAcceptingConnections != 0)
{//activity on our socket means connect requests
//see if are new incoming clients
if (FD_ISSET(m_socket, &tmpfds))
{
//yep
Clock timer;
timer.start();
while (acceptClient() && !timer.isDone(maxTimeAcceptingConnections))
{
//loop
}
}
}
//process incoming client messages
if (maxRecvTimePerConnection != 0)
{
TcpConnection *next = NULL;
for (TcpConnection *con = m_connectionList ; con != NULL ; con = next)
{
con->AddRef();
if (next) next->Release();
next = con->m_nextConnection;
if (next) next->AddRef();
SOCKET fd = con->m_socket;
if (fd == INVALID_SOCKET)
{
//invalid socket in list?, check if is connecting, otherwise, Disconnect and discard
if (con->GetStatus() != TcpConnection::StatusNegotiating)
{
removeConnection(con);
con->Release();
continue;
}
}
if (FD_ISSET(fd, &tmpfds))
{
Clock timer;
timer.start();
while(!timer.isDone(maxRecvTimePerConnection) && con->GetStatus() == TcpConnection::StatusConnected)
{
int err = con->processIncoming();
if (err >= 0)
{
processedIncoming = true;
}
if (err > 0)
{
//couldn't finish processing last request, don't try more
break;
}
else if (err < 0)
{
break;
}
}//while(!timer...)
}//if (FD_ISSET...)
con->Release();
}//for (...)
} //maxRecvTimePerConnection != 0
}//cnt > 0
#else //on UNIX use poll
int numfds = m_connectionListCount;
int idx = 0;
if (m_boundAsServer)
{
numfds++;
idx++;
}
struct pollfd pollfds[numfds];
if (m_boundAsServer)
{
pollfds[0].fd = m_socket;
pollfds[0].events |= POLLIN;
}
TcpConnection *next = NULL;
for (TcpConnection *con = m_connectionList ; con != NULL ; con = next, idx++)
{
next = con->m_nextConnection;
pollfds[idx].fd = con->m_socket;
pollfds[idx].events |= POLLIN;
pollfds[idx].events |= POLLHUP;
}
int cnt = poll(pollfds, numfds, 1);
if(cnt == SOCKET_ERROR)
{
//poll not working?
//TODO: need to notify client somehow, don't think we can assume a fatal error here
}
else if (cnt > 0)
{
for (idx = 0; idx < numfds; idx++)
{
//find corresponding TcpConnection
//TODO: optimize, seriously, this is takes linear time, every time
TcpConnection *con = getConnection(pollfds[idx].fd);
if (pollfds[idx].revents & POLLIN)
{
if (m_boundAsServer && maxTimeAcceptingConnections != 0 && pollfds[idx].fd == m_socket)
{
//new incoming clients
Clock timer;
timer.start();
while (acceptClient() && !timer.isDone(maxTimeAcceptingConnections))
{
//loop
}
continue;//don't try to readmsgs from listening fd
}
//process regular msg(s)
if (con == NULL)
{
close(pollfds[idx].fd);
continue;
}
Clock timer;
timer.start();
con->AddRef();//so it can't get deleted while we are checking it's status
while(!timer.isDone(maxRecvTimePerConnection) && con->GetStatus() == TcpConnection::StatusConnected)
{
int err = con->processIncoming();
if (err >= 0)
{
processedIncoming = true;
}
if (err > 0)
{
//couldn't finish processing last request, don't try more
break;
}
else if (err < 0)
{
break;
}
}//while(!timer....)
con->Release();
}//if(pollfds[...
else if (pollfds[idx].revents & POLLHUP)
{
if (con == NULL)
{
close(pollfds[idx].fd);
continue;
}
//Disconnect client
con->Disconnect();
}
}//for (idx=0....
}//else if (cnt > 0)
#endif
}//wanted to process incoming messages or connect requests
//now process any keepalives, if time to do that
if (m_params.keepAliveDelay > 0 && m_keepAliveTimer.isDone(m_params.keepAliveDelay))
{
TcpConnection *next = NULL;
for (TcpConnection *con = m_keepAliveList.m_beginList ; con != NULL ; con = next)
{
con->AddRef();
if (next) next->Release();
next = con->m_nextKeepAliveConnection;
if (next) next->AddRef();
con->Send(NULL, 0); //note: this request will move the connection from the keepAliveList to the aliveList
con->Release();
}
//now move the complete alive list over to the keepalive list to reset those timers
m_keepAliveList.m_beginList = m_aliveList.m_beginList;
m_aliveList.m_beginList = NULL;
//switch id's for those connections that were in the alive list last go - around
int tmpID = m_aliveList.m_listID;
m_aliveList.m_listID = m_keepAliveList.m_listID;
m_keepAliveList.m_listID = tmpID;
m_keepAliveTimer.reset();
m_keepAliveTimer.start();
}
//now process any noDataCons, if time to do that
if (m_params.noDataTimeout > 0 && m_noDataTimer.isDone(m_params.noDataTimeout))
{
TcpConnection *next = NULL;
for (TcpConnection *con = m_noDataList.m_beginList ; con != NULL ; con = next)
{
con->AddRef();
if (next) next->Release();
next = con->m_nextRecvDataConnection;
if (next) next->AddRef();
//time to disconnect this guy
con->Disconnect();
con->Release();
}
//now move the complete data list over to the nodata list to reset those timers
m_noDataList.m_beginList = m_dataList.m_beginList;
m_dataList.m_beginList = NULL;
//switch id's for those connections that were in the data list last go - around
int tmpID = m_dataList.m_listID;
m_dataList.m_listID = m_noDataList.m_listID;
m_noDataList.m_listID = tmpID;
m_noDataTimer.reset();
m_noDataTimer.start();
}
Release();
return processedIncoming;
}
TcpConnection *TcpManager::EstablishConnection(const char *serverAddress, unsigned short serverPort, unsigned timeout)
{
if (m_boundAsServer)
{
//can't open outgoing connections when in server mode
// use a different TcpManager to do that
return NULL;
}
if (m_connectionListCount >= m_params.maxConnections)
return(NULL);
// get server address
unsigned long address = inet_addr(serverAddress);
if (address == INADDR_NONE)
{
struct hostent * lphp;
lphp = gethostbyname(serverAddress);
if (lphp == NULL)
return(NULL);
address = ((struct in_addr *)(lphp->h_addr))->s_addr;
}
IPAddress destIP(address);
TcpConnection *con = new TcpConnection(this, &m_allocator, m_params, destIP, serverPort, timeout);
con->AddRef();//for the client - to conform to UdpLibrary method
addNewConnection(con);
return con;
}
void TcpManager::addNewConnection(TcpConnection *con)
{
con->AddRef();
#ifdef WIN32 //uses select
if (con->m_socket != INVALID_SOCKET)
FD_SET(con->m_socket, &m_permfds);
#endif
con->m_nextConnection = m_connectionList;
con->m_prevConnection = NULL;
if (m_connectionList != NULL)
m_connectionList->m_prevConnection = con;
m_connectionList = con;
m_connectionListCount++;
con->m_nextKeepAliveConnection = m_aliveList.m_beginList;
con->m_prevKeepAliveConnection = NULL;
if (m_aliveList.m_beginList != NULL)
m_aliveList.m_beginList->m_prevKeepAliveConnection = con;
m_aliveList.m_beginList = con;
con->m_aliveListId = m_keepAliveList.m_listID;//start it out thinking it's already in the alive list, since it is
con->m_nextRecvDataConnection = m_dataList.m_beginList;
con->m_prevRecvDataConnection = NULL;
if (m_dataList.m_beginList != NULL)
m_dataList.m_beginList->m_prevRecvDataConnection = con;
m_dataList.m_beginList = con;
con->m_recvDataListId = m_noDataList.m_listID;//start it out thinking it's already in the data list, since it is
}
void TcpManager::removeConnection(TcpConnection *con)
{
if (!con->wasRemovedFromMgr())
{
con->setRemovedFromMgr();
m_connectionListCount--;
#ifdef WIN32 //select only used on win32
if (con->m_socket != INVALID_SOCKET)
{
FD_CLR(con->m_socket, &m_permfds);
}
#endif
if (con->m_prevConnection != NULL)
con->m_prevConnection->m_nextConnection = con->m_nextConnection;
if (con->m_nextConnection != NULL)
con->m_nextConnection->m_prevConnection = con->m_prevConnection;
if (m_connectionList == con)
m_connectionList = con->m_nextConnection;
con->m_nextConnection = NULL;
con->m_prevConnection = NULL;
if (con->m_prevKeepAliveConnection != NULL)
con->m_prevKeepAliveConnection->m_nextKeepAliveConnection = con->m_nextKeepAliveConnection;
if (con->m_nextKeepAliveConnection != NULL)
con->m_nextKeepAliveConnection->m_prevKeepAliveConnection = con->m_prevKeepAliveConnection;
if (m_aliveList.m_beginList == con)
m_aliveList.m_beginList = con->m_nextKeepAliveConnection;
else if (m_keepAliveList.m_beginList == con)
m_keepAliveList.m_beginList = con->m_nextKeepAliveConnection;
con->m_nextKeepAliveConnection = NULL;
con->m_prevKeepAliveConnection = NULL;
if (con->m_prevRecvDataConnection != NULL)
con->m_prevRecvDataConnection->m_nextRecvDataConnection = con->m_nextRecvDataConnection;
if (con->m_nextRecvDataConnection != NULL)
con->m_nextRecvDataConnection->m_prevRecvDataConnection = con->m_prevRecvDataConnection;
if (m_dataList.m_beginList == con)
m_dataList.m_beginList = con->m_nextRecvDataConnection;
else if (m_noDataList.m_beginList == con)
m_noDataList.m_beginList = con->m_nextRecvDataConnection;
con->m_nextRecvDataConnection = NULL;
con->m_prevRecvDataConnection = NULL;
con->Release();
}
}
void TcpManager::AddRef()
{
m_refCount++;
}
void TcpManager::Release()
{
if (--m_refCount == 0)
delete this;
}
IPAddress TcpManager::GetLocalIp() const
{
struct sockaddr_in addr_self;
memset(&addr_self, 0, sizeof(addr_self));
socklen_t len = sizeof(addr_self);
getsockname(m_socket, (struct sockaddr *)&addr_self, &len);
return(IPAddress(addr_self.sin_addr.s_addr));
}
unsigned int TcpManager::GetLocalPort() const
{
struct sockaddr_in addr_self;
memset(&addr_self, 0, sizeof(addr_self));
socklen_t len = sizeof(addr_self);
getsockname(m_socket, (struct sockaddr *)&addr_self, &len);
return(ntohs(addr_self.sin_port));
}
#ifdef EXTERNAL_DISTRO
};
#endif
@@ -1,287 +0,0 @@
#ifndef TCPMANAGER_H
#define TCPMANAGER_H
#include "TcpHandlers.h"
#include "TcpBlockAllocator.h"
#include "IPAddress.h"
#include "Clock.h"
#if defined(WIN32)
#include <winsock2.h>
typedef int socklen_t;
#else // for non-windows platforms (linux)
#include <arpa/inet.h>
#include <netdb.h>
#include <sys/ioctl.h>
#include <sys/socket.h>
#include <sys/time.h>
#include <sys/types.h>
#include <unistd.h>
const int INVALID_SOCKET = 0xFFFFFFFF;
const int SOCKET_ERROR = 0xFFFFFFFF;
typedef int SOCKET;
#endif
#ifdef EXTERNAL_DISTRO
namespace NAMESPACE
{
#endif
class TcpConnection;
struct ConnectionList
{
ConnectionList(TcpConnection *con, int id) : m_beginList(con), m_listID(id) {}
TcpConnection *m_beginList;
int m_listID;
};
/**
* @brief The purpose of the TcpManager is to manage a set of connections that are coming in on a particular port.
*
*/
class TcpManager
{
public:
/** @brief Parameters for the TcpManager. */
struct TcpParams
{
/** @brief Simple constructor sets default values for members. */
TcpParams();
/** @brief Simple copy constructor. */
TcpParams(const TcpParams &cpy);
/**
* @brief Connection port number.
*
* this is the port number that this manager will use for all incoming and outgoing data. On the client side
* this is typically set to 0, which causes the manager object to randomly pick an available port. On the server
* side, this port should be set to a specific value as it will represent the port number that clients will use
* to connect to the server (ie. the listening port). It's generally a good idea to give the user on the client
* side the option of fixing this port number at a specific value as well as it is often necessary for them to
* do so in order to navigate company firewalls which may have specific port numbers open to them for this purpose.
* default = 0
*/
unsigned short port;
/**
* @ brief Server bind ip.
*
*/
char bindAddress[64];
/**
* @brief Maximum number of connections that can be established by this manager.
*
* this is the maximum number of connections that can be established by this manager, any incoming/outgoing connections
* over this limit will be refused. On the client side, this typically only needs to be set to 1, though there
* is little harm in setting this number larger.
* default = 10
*/
unsigned maxConnections;
/**
* @brief The size of the incoming socket buffer.
*
* The client will want to set this fairly small (32k or so), but the server
* will want to set this fairly large (512k)
* default = 64k
*/
unsigned incomingBufferSize;
/**
* @brief The size of the outgoing socket buffer.
*
* The client will want to set this fairly small (32k or so), but the server
* will want to set this fairly large (512k)
* default = 64k
*/
unsigned outgoingBufferSize;
/**
* @brief The block size of a single outgoing buffer memory allocator block.
*
* This param should allways be set at least as high as the maximum message size you
* expect to send (performance will suffer otherwise).
* default = 8K
*/
unsigned allocatorBlockSize;
/**
* @brief The number of block memory allocator 'blocks' created at a time.
*
* This is the number of blocks created for the buffer allocator for each
* TcpConnection opened by this manager. Since the block size should be
* the max size of an outgoing message, the recommended setting is: greater
* than the number of concurrent connections you expect to normally have open.
* default = 1024
*/
unsigned allocatorBlockCount;
/**
* @brief The maximum size that a recvd message is allowed to be.
*
* Really only here for protection, not required. If you set this, you can safeguard
* your client/server from receiving stray oversized messages. If a message on the socket
* specifies it's length at larger than this value, then the message is not read, and the connection
* is terminated. If the value is set to 0, then there is no max message size checking
* on incoming messages (this will also cary a performance hit, since every new message
* recieved will have to have a new buffer created if you don't specify a value here). Be careful
* not to set this too small, if you have messages that could exceed the value you set here
* they will be discarded, and the connection will be terminated without warning.
* default = 0
*/
unsigned maxRecvMessageSize;
unsigned keepAliveDelay;
unsigned noDataTimeout;
};
/**
* @brief
*/
TcpManager(const TcpParams &params);
/**
* @brief Use to specify a handler object to receive callbacks.
*
* To have the TcpManager call your object directly when connection requests come in, you
* simply need to derive your class (multiply if necessary) from TcpManagerHandler, then you can use
* this method to set the object the TcpManager will call as appropriate. The TcpConnection object
* also has a handler mechanism that replaces the other callback functions below, see TcpConnection::SetHandler
* default = NULL (no callbacks made)
*
* @param handler The object which will be called for manager related notifications.
*/
void SetHandler(TcpManagerHandler *handler);
/**
* @brief This function MUST be called on a regular basis in order to give the manager object time to service the socket and give time to various connection objects that may need processing time, etc.
*
* @param maxTimeAcceptingConnections The max amount of time in milliseconds to spend accepting new client connections.
* This parameter is only used if this manager has been bound as a server (bindAsServer).
* If you set this param to 0, it will not attempt to accept any new connections.
*
* @param giveConnectionsTime
* True if every connection opened on this manager is given time in this call, false if
* no connections are given time.
*
* @param maxSendTimePerConnection Max amount of time in milliseconds to spend on each client processing outgoing messages.
* A max of the specified amount of time will be spent on each and every individual connection. If you set
* this parametrer to 0, it will not process any outgoing messages on any clients. Note also that when attempting
* to establish new connections (via the EstablishConnection method), this parameter must be > 0 in order to
* complete the connection process for any connections that were still negotiating.
*
* @param maxRecvTimePerConnection Max amount of time in milliseconds to spend on each client processing incoming messages.
* A max of the specified amount of time will be spent on each and every individual connection. If you set
* this param to 0, it will not process any incoming messages on any clients.
* This is a good way to give the manager processing time for outgoing packets in situations
* where the application does not want to have to worry about processing incoming packets.
*
* @return true if any incoming packets were processed during this time slice, otherwise returns false
*/
bool GiveTime(unsigned maxTimeAcceptingConnections = 5, unsigned maxSendTimePerConnection = 5, unsigned maxRecvTimePerConnection = 5);
/**
* @brief Used to establish a connection to a server that is listening at the specified address and port.
*
* The serverAddress will do a DNS lookup as appropriate. This call will block long enough to resolve
* the DNS lookup, but then will return a TcpConnection object that will be in a StatusNegotiating
* state until the connection is actually established. The application must give the manager
* object time after calling EstablishConnection or else the negotiation process to establish the
* connection will never have time to actually occur. Typically the client establishing the connection
* will call EstablishConnection, then sit in a loop calling TcpManager::GiveTime and checking to see
* if the status of the returned TcpConnection object is changed from StatusNegotiating. This allows
* the application to look for the ESC key or timeout an attempted connection.
*
* @param serverAddress The address of the server to open a connection to.
*
* @param serverPort The port of the server to open a connection to.
*
* @param timeout How long to attempt connecting to the server (in milliseconds).
* Setting the timeout value to something greater than 0 will cause the TcpConnection object to change
* from a StatusNegotiating state to a StatusDisconnected state after the timeout has expired. It will also cause
* the connect-complete callback to be called if the connection is succesfull.
*
* @return A pointer to a TcpConnection object.
* NULL if the manager object has exceeded its maximum number of connections
* or if the serverAddress cannot be resolved to an IP address.
*/
TcpConnection *EstablishConnection(const char *serverAddress, unsigned short serverPort, unsigned timeout = 0);
/**
* @brief Binds this manager as a server which will listen for and accept incoming connections.
*
* @return 'true' if manager is able to bind succesfully, false otherwise.
*/
bool BindAsServer();
/**
* @brief Standard AddRef/Release scheme
*/
void AddRef();
/**
* @brief Standard AddRef/Release scheme
*/
void Release();
/**
* @brief Returns the ip address of this machine. If the machine is multi-homed, this value may be blank.
*/
IPAddress GetLocalIp() const;
/**
* @brief Returns the port the manager is actually using. This value will be the same as is specified in
* Params::port (or if Params::port was set to 0, this will be the dynamically assigned port number)
*/
unsigned int GetLocalPort() const;
protected:
friend class TcpConnection;
void removeConnection(TcpConnection *con);
TcpManagerHandler *m_handler;
ConnectionList m_keepAliveList;
ConnectionList m_aliveList;
ConnectionList m_noDataList;
ConnectionList m_dataList;
private:
~TcpManager();
TcpParams m_params;
int m_refCount;
TcpConnection *m_connectionList;
unsigned m_connectionListCount;
#ifdef WIN32
fd_set m_permfds; /**< Used for select on WIN32 if we are in server mode. Keeps track of all clients connected to us. */
#endif //WIN32
SOCKET m_socket;
bool m_boundAsServer;
TcpBlockAllocator m_allocator;
Clock m_keepAliveTimer;
Clock m_noDataTimer;
void addNewConnection(TcpConnection *con);
SOCKET getMaxFD();
TcpConnection *getConnection(SOCKET fd);
TcpConnection *acceptClient();
};
#ifdef EXTERNAL_DISTRO
};
#endif
#endif //TCPMANAGER_H
@@ -1,472 +0,0 @@
/* version: 1.0, Feb, 2003
Author : Gao Dasheng
Copyright (C) 1995-2002 Gao Dasheng([email protected])
This software is provided 'as-is', without any express or implied
warranty. In no event will the authors be held liable for any damages
arising from the use of this software.
Permission is granted to anyone to use this software for any purpose,
including commercial applications, and to alter it and redistribute it
freely, subject to the following restrictions:
1. The origin of this software must not be misrepresented; you must not
claim that you wrote the original software. If you use this software
in a product, an acknowledgment in the product documentation would be
appreciated but is not required.
2. Altered source versions must be plainly marked as such, and must not be
misrepresented as being the original software.
3. This notice may not be removed or altered from any source distribution.
//////////////////////////////////////////////////////////////////////////////
Introduce:
This file includes two classes CA2GZIP and CGZIP2A which do compressing and
uncompressing in memory. and It 's very easy to use for small data compressing.
Some compress and uncompress codes came from gzip unzip function of zlib 1.1.x.
Usage:
these two classes work used with zlib 1.1.x (http://www.gzip.org/zlib/).
They were tested in Window OS.
Exmaple:
#include "GZipHelper.h"
void main()
{
char plainText[]="Plain text here";
CA2GZIP gzip(plainText,strlen(plainText)); // do compressing here;
LPGZIP pgzip=gzip.pgzip; // pgzip is zipped data pointer, you can use it directly
int len=gzip.Length; // Length is length of zipped data;
CGZIP2A plain(pgzip,len); // do decompressing here
char *pplain=plain.psz; // psz is plain data pointer
int aLen=plain.Length; // Length is length of unzipped data.
}
//////////////////////////////////////////////////////////////////////////////
*/
#ifndef __GZipHelper__
#define __GZipHelper__
#include "Zip/zutil.h"
#define ALLOC(size) malloc(size)
#define TRYFREE(p) {if (p) free(p);}
#define Z_BUFSIZE 4096
#define ASCII_FLAG 0x01 /* bit 0 set: file probably ascii text */
#define HEAD_CRC 0x02 /* bit 1 set: header CRC present */
#define EXTRA_FIELD 0x04 /* bit 2 set: extra field present */
#define ORIG_NAME 0x08 /* bit 3 set: original file name present */
#define COMMENT 0x10 /* bit 4 set: file comment present */
#define RESERVED 0xE0 /* bits 5..7: reserved */
typedef unsigned char GZIP;
typedef GZIP* LPGZIP;
static const int gz_magic[2] = {0x1f, 0x8b}; /* gzip magic header */
template< int t_nBufferLength = 1024 ,int t_nLevel=Z_DEFAULT_COMPRESSION,int t_nStrategy=Z_DEFAULT_STRATEGY>
class CA2GZIPT
{
public:
LPGZIP pgzip;
int Length;
public:
CA2GZIPT(char* lpsz,int len=-1):pgzip(0),Length(0)
{
Init(lpsz,len);
}
~CA2GZIPT()
{
if(pgzip!=m_buffer) TRYFREE(pgzip);
}
void Init(char *lpsz,int len=-1)
{
if(lpsz==0)
{
pgzip=0;
Length=0;
return ;
}
if(len==-1)
{
len=(int)strlen(lpsz);
}
m_CurrentBufferSize=t_nBufferLength;
pgzip=m_buffer;
m_zstream.zalloc = (alloc_func)0;
m_zstream.zfree = (free_func)0;
m_zstream.opaque = (voidpf)0;
m_zstream.next_in = Z_NULL;
m_zstream.next_out = Z_NULL;
m_zstream.avail_in = 0;
m_zstream.avail_out = 0;
m_z_err = Z_OK;
m_crc = crc32(0L, Z_NULL, 0);
int err = deflateInit2(&(m_zstream), t_nLevel,Z_DEFLATED, -MAX_WBITS, DEF_MEM_LEVEL, t_nStrategy);
m_outbuf = (Byte*)ALLOC(Z_BUFSIZE);
m_zstream.next_out = m_outbuf;
if (err != Z_OK || m_outbuf == Z_NULL)
{
destroy();
return ;
}
m_zstream.avail_out = Z_BUFSIZE;
GZIP header[10]={0x1f,0x8b,Z_DEFLATED, 0 /*flags*/, 0,0,0,0 /*time*/, 0 /*xflags*/, OS_CODE};
write(header,10);
m_zstream.next_in = (Bytef*)lpsz;
m_zstream.avail_in = len;
while (m_zstream.avail_in != 0)
{
if (m_zstream.avail_out == 0)
{
m_zstream.next_out = m_outbuf;
this->write(m_outbuf,Z_BUFSIZE);
m_zstream.avail_out = Z_BUFSIZE;
}
m_z_err = deflate(&m_zstream,Z_NO_FLUSH);
if (m_z_err != Z_OK) break;
}
m_crc = crc32(m_crc, (const Bytef *)lpsz, len);
if (finish() != Z_OK) { destroy(); return ;}
putLong(m_crc);
putLong (m_zstream.total_in);
destroy();
}
private:
GZIP m_buffer[t_nBufferLength];
int m_CurrentBufferSize;
z_stream m_zstream;
int m_z_err; /* error code for last stream operation */
Byte *m_outbuf; /* output buffer */
uLong m_crc; /* crc32 of uncompressed data */
int write(LPGZIP buf,int count)
{
if(buf==0) return 0;
if(Length+count>m_CurrentBufferSize)
{
int nTimes=(Length+count)/t_nBufferLength +1;
LPGZIP pTemp=pgzip;
pgzip=static_cast<LPGZIP>( malloc(nTimes*t_nBufferLength));
m_CurrentBufferSize=nTimes*t_nBufferLength;
memcpy(pgzip,pTemp,Length);
if(pTemp!=m_buffer) free(pTemp);
}
memcpy(pgzip+Length,buf,count);
Length+=count;
return count;
}
int finish()
{
uInt len;
int done = 0;
m_zstream.avail_in = 0;
for (;;)
{
len = Z_BUFSIZE - m_zstream.avail_out;
if (len != 0)
{
write(m_outbuf,len);
m_zstream.next_out = m_outbuf;
m_zstream.avail_out = Z_BUFSIZE;
}
if (done) break;
m_z_err = deflate(&(m_zstream), Z_FINISH);
if (len == 0 && m_z_err == Z_BUF_ERROR) m_z_err = Z_OK;
done = (m_zstream.avail_out != 0 || m_z_err == Z_STREAM_END);
if (m_z_err != Z_OK && m_z_err != Z_STREAM_END) break;
}
return m_z_err == Z_STREAM_END ? Z_OK : m_z_err;
}
int destroy()
{
int err = Z_OK;
if (m_zstream.state != NULL) {
err = deflateEnd(&(m_zstream));
}
if (m_z_err < 0) err = m_z_err;
TRYFREE(m_outbuf);
return err;
}
void putLong (uLong x)
{
for(int n = 0; n < 4; n++) {
unsigned char c=(unsigned char)(x & 0xff);
write(&c,1);
x >>= 8;
}
}
};
typedef CA2GZIPT<10> CA2GZIP;
template< int t_nBufferLength = 1024>
class CGZIP2AT
{
public:
char *psz;
int Length;
CGZIP2AT(LPGZIP pgzip,int len):m_gzip(pgzip),m_gziplen(len),psz(0),Length(0),m_pos(0)
{
Init();
}
~CGZIP2AT()
{
if(psz!=m_buffer) TRYFREE(psz);
}
void Init()
{
if(m_gzip==0)
{
psz=0;
Length=0;
return ;
}
m_CurrentBufferSize=t_nBufferLength;
psz=m_buffer;
memset(psz,0,m_CurrentBufferSize+1);
m_zstream.zalloc = (alloc_func)0;
m_zstream.zfree = (free_func)0;
m_zstream.opaque = (voidpf)0;
m_zstream.next_in = m_inbuf = Z_NULL;
m_zstream.next_out = Z_NULL;
m_zstream.avail_in = m_zstream.avail_out = 0;
m_z_err = Z_OK;
m_z_eof = 0;
m_transparent = 0;
m_crc = crc32(0L, Z_NULL, 0);
m_zstream.next_in =m_inbuf = (Byte*)ALLOC(Z_BUFSIZE);
int err = inflateInit2(&(m_zstream), -MAX_WBITS);
if (err != Z_OK || m_inbuf == Z_NULL)
{
destroy();
return;
}
m_zstream.avail_out = Z_BUFSIZE;
check_header();
char outbuf[Z_BUFSIZE];
int nRead;
while(true)
{
nRead=gzread(outbuf,Z_BUFSIZE);
if(nRead<=0) break;
write(outbuf,nRead);
}
destroy();
}
private:
char m_buffer[t_nBufferLength+1];
int m_CurrentBufferSize;
z_stream m_zstream;
int m_z_err; /* error code for last stream operation */
Byte *m_inbuf; /* output buffer */
uLong m_crc; /* crc32 of uncompressed data */
int m_z_eof;
int m_transparent;
int m_pos;
LPGZIP m_gzip;
int m_gziplen;
void check_header()
{
int method; /* method byte */
int flags; /* flags byte */
uInt len;
int c;
/* Check the gzip magic header */
for (len = 0; len < 2; len++) {
c = get_byte();
if (c != gz_magic[len]) {
if (len != 0) m_zstream.avail_in++, m_zstream.next_in--;
if (c != EOF) {
m_zstream.avail_in++, m_zstream.next_in--;
m_transparent = 1;
}
m_z_err =m_zstream.avail_in != 0 ? Z_OK : Z_STREAM_END;
return;
}
}
method = get_byte();
flags = get_byte();
if (method != Z_DEFLATED || (flags & RESERVED) != 0) {
m_z_err = Z_DATA_ERROR;
return;
}
/* Discard time, xflags and OS code: */
for (len = 0; len < 6; len++) (void)get_byte();
if ((flags & EXTRA_FIELD) != 0) { /* skip the extra field */
len = (uInt)get_byte();
len += ((uInt)get_byte())<<8;
/* len is garbage if EOF but the loop below will quit anyway */
while (len-- != 0 && get_byte() != EOF) ;
}
if ((flags & ORIG_NAME) != 0) { /* skip the original file name */
while ((c = get_byte()) != 0 && c != EOF) ;
}
if ((flags & COMMENT) != 0) { /* skip the .gz file comment */
while ((c = get_byte()) != 0 && c != EOF) ;
}
if ((flags & HEAD_CRC) != 0) { /* skip the header crc */
for (len = 0; len < 2; len++) (void)get_byte();
}
m_z_err = m_z_eof ? Z_DATA_ERROR : Z_OK;
}
int get_byte()
{
if (m_z_eof) return EOF;
if (m_zstream.avail_in == 0)
{
errno = 0;
m_zstream.avail_in =read(m_inbuf,Z_BUFSIZE);
if(m_zstream.avail_in == 0)
{
m_z_eof = 1;
return EOF;
}
m_zstream.next_in = m_inbuf;
}
m_zstream.avail_in--;
return *(m_zstream.next_in)++;
}
int read(LPGZIP buf,int size)
{
int nRead=size;
if(m_pos+size>=m_gziplen)
{
nRead=m_gziplen-m_pos;
}
if(nRead<=0) return 0;
memcpy(buf,m_gzip+m_pos,nRead);
m_pos+=nRead;
return nRead;
}
int gzread(char* buf,int len)
{
Bytef *start = (Bytef*)buf; /* starting point for crc computation */
Byte *next_out; /* == stream.next_out but not forced far (for MSDOS) */
if (m_z_err == Z_DATA_ERROR || m_z_err == Z_ERRNO) return -1;
if (m_z_err == Z_STREAM_END) return 0; /* EOF */
next_out = (Byte*)buf;
m_zstream.next_out = (Bytef*)buf;
m_zstream.avail_out = len;
while (m_zstream.avail_out != 0) {
if (m_transparent)
{
/* Copy first the lookahead bytes: */
uInt n = m_zstream.avail_in;
if (n > m_zstream.avail_out) n = m_zstream.avail_out;
if (n > 0)
{
zmemcpy(m_zstream.next_out,m_zstream.next_in, n);
next_out += n;
m_zstream.next_out = next_out;
m_zstream.next_in += n;
m_zstream.avail_out -= n;
m_zstream.avail_in -= n;
}
if (m_zstream.avail_out > 0) {
m_zstream.avail_out -=read(next_out,m_zstream.avail_out);
}
len -= m_zstream.avail_out;
m_zstream.total_in += (uLong)len;
m_zstream.total_out += (uLong)len;
if (len == 0) m_z_eof = 1;
return (int)len;
}
if (m_zstream.avail_in == 0 && !m_z_eof)
{
errno = 0;
m_zstream.avail_in = read(m_inbuf,Z_BUFSIZE);
if (m_zstream.avail_in == 0)
{
m_z_eof = 1;
}
m_zstream.next_in = m_inbuf;
}
m_z_err = inflate(&(m_zstream), Z_NO_FLUSH);
if (m_z_err == Z_STREAM_END)
{
/* Check CRC and original size */
m_crc = crc32(m_crc, start, (uInt)(m_zstream.next_out - start));
start = m_zstream.next_out;
if (getLong() != m_crc) {
m_z_err = Z_DATA_ERROR;
}else
{
(void)getLong();
check_header();
if (m_z_err == Z_OK)
{
uLong total_in = m_zstream.total_in;
uLong total_out = m_zstream.total_out;
inflateReset(&(m_zstream));
m_zstream.total_in = total_in;
m_zstream.total_out = total_out;
m_crc = crc32(0L, Z_NULL, 0);
}
}
}
if (m_z_err != Z_OK || m_z_eof) break;
}
m_crc = crc32(m_crc, start, (uInt)(m_zstream.next_out - start));
return (int)(len - m_zstream.avail_out);
}
uLong getLong()
{
uLong x = (uLong)get_byte();
int c;
x += ((uLong)get_byte())<<8;
x += ((uLong)get_byte())<<16;
c = get_byte();
if (c == EOF) m_z_err = Z_DATA_ERROR;
x += ((uLong)c)<<24;
return x;
}
int write(char* buf,int count)
{
if(buf==0) return 0;
if(Length+count>m_CurrentBufferSize)
{
int nTimes=(Length+count)/t_nBufferLength +1;
char *pTemp=psz;
psz=static_cast<char*>( malloc(nTimes*t_nBufferLength+1));
m_CurrentBufferSize=nTimes*t_nBufferLength;
memset(psz,0,m_CurrentBufferSize+1);
memcpy(psz,pTemp,Length);
if(pTemp!=m_buffer) free(pTemp);
}
memcpy(psz+Length,buf,count);
Length+=count;
return count;
}
int destroy()
{
int err = Z_OK;
if (m_zstream.state != NULL) {
err = inflateEnd(&(m_zstream));
}
if (m_z_err < 0) err = m_z_err;
TRYFREE(m_inbuf);
return err;
}
};
typedef CGZIP2AT<> CGZIP2A;
#endif
@@ -1,6 +0,0 @@
INCLUDES = -I$(top_srcdir)/external/3rd/library/platform \
-I$(platform_dir)/utils/Base/
METASOURCES = AUTO
SUBDIRS = Zip
AM_CFLAGS = -DEXTERNAL_DISTRO -DNAMESPACE=AuctionTransfer -DUSE_TCP_LIBRARY
AM_CXXFLAGS = -DEXTERNAL_DISTRO -DNAMESPACE=AuctionTransfer -DUSE_TCP_LIBRARY
@@ -1,12 +0,0 @@
INCLUDES = -I$(top_srcdir)/external/3rd/library/platform \
-I$(platform_dir)/utils/Base/
METASOURCES = AUTO
libAuctionTransferGameAPIZip_la_LDFLAGS = -avoid-version
lib_LTLIBRARIES = libAuctionTransferGameAPIZip.la
libAuctionTransferGameAPIZip_la_SOURCES = adler32.c compress.c crc32.c deflate.c deflate.h gzio.c\
infblock.c infblock.h infcodes.c infcodes.h inffast.c inffast.h\
inffixed.h inflate.c inftrees.c inftrees.h infutil.c infutil.h\
maketree.c trees.c trees.h uncompr.c zconf.h zlib.h zutil.c zutil.h
AM_CXXFLAGS = -DEXTERNAL_DISTRO -DNAMESPACE=AuctionTransfer -DUSE_TCP_LIBRARY
AM_CFLAGS = -DEXTERNAL_DISTRO -DNAMESPACE=AuctionTransfer -DUSE_TCP_LIBRARY
@@ -1,48 +0,0 @@
/* adler32.c -- compute the Adler-32 checksum of a data stream
* Copyright (C) 1995-2002 Mark Adler
* For conditions of distribution and use, see copyright notice in zlib.h
*/
/* @(#) $Id$ */
#include "zlib.h"
#define BASE 65521L /* largest prime smaller than 65536 */
#define NMAX 5552
/* NMAX is the largest n such that 255n(n+1)/2 + (n+1)(BASE-1) <= 2^32-1 */
#define DO1(buf,i) {s1 += buf[i]; s2 += s1;}
#define DO2(buf,i) DO1(buf,i); DO1(buf,i+1);
#define DO4(buf,i) DO2(buf,i); DO2(buf,i+2);
#define DO8(buf,i) DO4(buf,i); DO4(buf,i+4);
#define DO16(buf) DO8(buf,0); DO8(buf,8);
/* ========================================================================= */
uLong ZEXPORT adler32(adler, buf, len)
uLong adler;
const Bytef *buf;
uInt len;
{
unsigned long s1 = adler & 0xffff;
unsigned long s2 = (adler >> 16) & 0xffff;
int k;
if (buf == Z_NULL) return 1L;
while (len > 0) {
k = len < NMAX ? len : NMAX;
len -= k;
while (k >= 16) {
DO16(buf);
buf += 16;
k -= 16;
}
if (k != 0) do {
s1 += *buf++;
s2 += s1;
} while (--k);
s1 %= BASE;
s2 %= BASE;
}
return (s2 << 16) | s1;
}

Some files were not shown because too many files have changed in this diff Show More