Previous implementation could hit a deadlock since every single const_iterator class attempted to acquire a scoped_readonlylock on the lobby's mutex. Since the ReadWriteMutex doesn't grant readonlylocks anymore when a writer is pending for a lock this could deadlock if you ever would need two iterators at the same time. Therefore we now only acquire one readonly lock through the iterator_interface class.
git-svn-id: svn+ssh://svn.gna.org/svn/warzone/trunk@1673 4a71c877-e1ca-e34f-864e-861f7616d084
It seems that "Artistic Style":
* somehow treats "lock" as a keyword, since it puts spaces behind every instance of "lock", this is not nice.
* doesn't recognize std::cout and std::cerr iostreams so doesn't properly line out multiline statements with stream operators
* doesn't indent subclasses correctly (it treats them as if they're one of the keywords "public", "protected", or "private")
* lines out multiline if-statements on their logical operators rather than their values, example:
> if (bla == bleh
> && mooh == meeh)
instead of:
> if (bla == bleh
> && mooh == meeh)
I've corrected all of the above manually before committing.
git-svn-id: svn+ssh://svn.gna.org/svn/warzone/trunk@1669 4a71c877-e1ca-e34f-864e-861f7616d084
* GameLobby::gameLock now has a separate file
* GameLobby::const_iterator now also has a separate file
* move class RAIICounter to files of its own for ease of reusability
* remove dummy game (from lobbyprotocol::requestHandler in requesthandler.cpp)
* Remove commented out code (main.cpp)
git-svn-id: svn+ssh://svn.gna.org/svn/warzone/trunk@1650 4a71c877-e1ca-e34f-864e-861f7616d084
* Add new class lobbyprotocol::requestHandler which deals with protocol specific tasks
* Move all protocol dependant code from class GameLobby to lobbyprotocol::requestHandler
* Add some comments to code
git-svn-id: svn+ssh://svn.gna.org/svn/warzone/trunk@1649 4a71c877-e1ca-e34f-864e-861f7616d084
* Modify class TCPServer to take a boost::asio::ip::tcp::endpoint for member-function listen instead of a port number
* Now use command line arguments for addresses to listen on (on each of those addresses we open port 9998 still)
* Fix wrongly named include guards (lobby.hpp)
git-svn-id: svn+ssh://svn.gna.org/svn/warzone/trunk@1646 4a71c877-e1ca-e34f-864e-861f7616d084
* handles incoming connections from TCPServer (functions properly now)
* uses an std::list to store GAMESTRUCTs in
* uses ReadWriteMutex for multithreading synchronisation
* handles "addg" requests
* handles game persistence (with specialized "game" locks, which will die along with the connection)
* handles "list" requests
* dumps the entire list of current games to the user
git-svn-id: svn+ssh://svn.gna.org/svn/warzone/trunk@1645 4a71c877-e1ca-e34f-864e-861f7616d084
This class allows multiple readers to obtain a lock at the same time. Until a writer attempts to obtain a lock, then attempts by readers to lock will block. Also second writers that attempt to lock will block until the first releases its lock.
git-svn-id: svn+ssh://svn.gna.org/svn/warzone/trunk@1644 4a71c877-e1ca-e34f-864e-861f7616d084
* Add asynchronous TCP server class: TCPServer
* Add comparison operators for SESSIONDESC and GAMESTRUCT respectively
* Add -D_WIN32_WINNT=0x0501 to the compiletime options (needed for Boost::Asio on WinXP, 2k needs -D_WIN32_WINNT=0x0500, GNU/Linux systems define it themselves automatically)
git-svn-id: svn+ssh://svn.gna.org/svn/warzone/trunk@1643 4a71c877-e1ca-e34f-864e-861f7616d084
* move inclusion of definition of GAMESTRUCT to new header file game.hpp
* Allow game.hpp including files to be compiled without SDL (useful for crosscompiling), by internally (in game.hpp) declaring GAMESTRUCT as well
* Stay connected when an "addg" command is received (client needs to disconnect to indicate the game should be removed from the lobbylist)
git-svn-id: svn+ssh://svn.gna.org/svn/warzone/trunk@1642 4a71c877-e1ca-e34f-864e-861f7616d084
* switch to using IPv4 instead of IPv6 (for testing)
* Use correct buffersize for retrieval of a command/method (5 bytes/chars right now, ought to be NUL-terminated)
git-svn-id: svn+ssh://svn.gna.org/svn/warzone/trunk@1641 4a71c877-e1ca-e34f-864e-861f7616d084
(one of my first, and probably ugly, versions, going to commit incrementally till the last)
git-svn-id: svn+ssh://svn.gna.org/svn/warzone/trunk@1639 4a71c877-e1ca-e34f-864e-861f7616d084
I don't claim that this code is of outstanding quality >_>
It was, after all, just written as a proof of concept prototype...
git-svn-id: svn+ssh://svn.gna.org/svn/warzone/trunk@1274 4a71c877-e1ca-e34f-864e-861f7616d084
- Reorder read_gdmp output
- Added compilation date to gdmp
- Reordered gdmp values: sysInfo now after programVersion/compileDate instead of before, to match read_gdmp display order
Still not implemented: Custom (signal safe) sprintf replacement, so we can output textfiles instead of binary blobs.
git-svn-id: svn+ssh://svn.gna.org/svn/warzone/trunk@1189 4a71c877-e1ca-e34f-864e-861f7616d084
WorldEdit : only works on windows platform. Also needs ORIGINAL libs (inculded) to compile correctly)
PiePlugin (3ds Max -> .pie converter. Which is used for the .pie formats of 3d models used in game.
BSPIMD - Loads IMD, Generates BSP tree, saves IMD with BSP infomation.
git-svn-id: svn+ssh://svn.gna.org/svn/warzone/trunk@345 4a71c877-e1ca-e34f-864e-861f7616d084