Commit Graph

476 Commits (65ed483d69d362f17bff7c0397c268b99b52373a)

Author SHA1 Message Date
Giel van Schijndel 12f21d0b0c * Replace usage of uint8_t with char for C-strings; while (u)int8_t works perfectly nice for numbers it isn't nice for text (char-array)
* To make sure we still have the guarantee that a char is 8bit I've inserted a static assertion for this (CHAR_BIT == 8)
 * Use exact length types for lobbyserver

git-svn-id: svn+ssh://svn.gna.org/svn/warzone/trunk@1821 4a71c877-e1ca-e34f-864e-861f7616d084
2007-06-05 12:01:59 +00:00
Giel van Schijndel a62d8fce62 * Move iteration interface out of class GameLobby into a new member class: GameLobby::iterator_interface
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
2007-05-21 11:27:58 +00:00
Giel van Schijndel f4abaf4efc A run of `astyle --suffix=none --brackets=break --indent-switches --pad=oper --unpad=paren --min-conditional-indent=0 --mode=c --indent-classes --indent-namespaces` on the lobbyserver's codebase with "Artistic Style <http://astyle.sourceforge.net/>".
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
2007-05-20 18:19:06 +00:00
Giel van Schijndel 685af73e85 * Use htonl and ntohl for conversion to and from network-byte order
git-svn-id: svn+ssh://svn.gna.org/svn/warzone/trunk@1651 4a71c877-e1ca-e34f-864e-861f7616d084
2007-05-15 21:36:55 +00:00
Giel van Schijndel 2a396b563a * Split out lobby code
* 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
2007-05-15 21:31:33 +00:00
Giel van Schijndel 9773356a67 Less PImpl, More Impl
* 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
2007-05-15 21:23:30 +00:00
Giel van Schijndel 87d8648c8b * Cleanup of directory structure
git-svn-id: svn+ssh://svn.gna.org/svn/warzone/trunk@1648 4a71c877-e1ca-e34f-864e-861f7616d084
2007-05-15 21:18:41 +00:00
Giel van Schijndel 94044a0e9c * move function printGame to new file game.cpp
git-svn-id: svn+ssh://svn.gna.org/svn/warzone/trunk@1647 4a71c877-e1ca-e34f-864e-861f7616d084
2007-05-15 21:13:32 +00:00
Giel van Schijndel 8f66b5246b * set host IP on incoming game
* 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
2007-05-15 21:07:46 +00:00
Giel van Schijndel d85d317842 * Add a lobby class
* 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
2007-05-15 21:01:02 +00:00
Giel van Schijndel 831dbe0c1d * Add utility class: ReadWriteMutex;
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
2007-05-15 20:57:49 +00:00
Giel van Schijndel aaac0278f5 * Handle the "list" command in a proper way by answering with a dummy game
* 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
2007-05-15 20:51:29 +00:00
Giel van Schijndel 7a0457e6e0 * Use EOF as connection and as such game termination
* 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
2007-05-15 20:42:28 +00:00
Giel van Schijndel 771d1efa9e * Add a "pretty"-printing function for printing games to a terminal (through std::cout)
* 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
2007-05-15 20:34:26 +00:00
Giel van Schijndel a2f477edcf * Add _premature_ C++ testing lobby server
(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
2007-05-15 20:30:22 +00:00
Giel van Schijndel 0a590a79af * Use network byte-order (big-endian) for size of game list as response to "list" command
git-svn-id: svn+ssh://svn.gna.org/svn/warzone/trunk@1629 4a71c877-e1ca-e34f-864e-861f7616d084
2007-05-13 18:19:22 +00:00
Gerard Krol 2055a59020 Fix "ghost" games, and allow for updating the game state when hosting a game without having to disconnect and reconnect.
This will have to be implemented in the game as well.


git-svn-id: svn+ssh://svn.gna.org/svn/warzone/trunk@1581 4a71c877-e1ca-e34f-864e-861f7616d084
2007-05-01 21:01:32 +00:00
Dennis Schridde 2674023d77 New masterserver by Gerard and Kamaze
git-svn-id: svn+ssh://svn.gna.org/svn/warzone/trunk@1514 4a71c877-e1ca-e34f-864e-861f7616d084
2007-04-21 14:20:20 +00:00
Giel van Schijndel 0289e2664f Set executable bit, makes running the script a bit easier.
git-svn-id: svn+ssh://svn.gna.org/svn/warzone/trunk@1278 4a71c877-e1ca-e34f-864e-861f7616d084
2007-03-21 00:39:11 +00:00
Christian Vest Hansen 521a12a00d * Initial upload of Python+JSON-RPC based lobby/master server.
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
2007-03-20 19:23:51 +00:00
Dennis Schridde 330fa3b3e5 Remove now unneeded binary blob reader.
git-svn-id: svn+ssh://svn.gna.org/svn/warzone/trunk@1191 4a71c877-e1ca-e34f-864e-861f7616d084
2007-03-01 01:34:33 +00:00
Dennis Schridde 8cdad4a810 - Change signalHandler to use POSIX signal safe file functions
- 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
2007-03-01 00:15:50 +00:00
Dennis Schridde b0a422c1ea Tool to read .gdmp files created on crashes of the Linux version.
git-svn-id: svn+ssh://svn.gna.org/svn/warzone/trunk@1183 4a71c877-e1ca-e34f-864e-861f7616d084
2007-02-26 15:12:20 +00:00
Giel van Schijndel bd15126db0 Added a directory to contain tools for Warzone 2100. (E.g. modelling/texturing stuff, some map editor maybe, etc.)
As per this discussion: http://wz2100.net/forum/index.php?topic=320.0

git-svn-id: svn+ssh://svn.gna.org/svn/warzone/trunk@1055 4a71c877-e1ca-e34f-864e-861f7616d084
2007-01-31 19:58:49 +00:00
No Author d17e78a713 Clear out entire repository for move of codebase from BerliOS to Gna! repository hosting.
git-svn-id: svn+ssh://svn.gna.org/svn/warzone/trunk@361 4a71c877-e1ca-e34f-864e-861f7616d084
2007-06-28 17:09:32 +00:00
Victor Qamly 84ef68c532 Adding some of the tools for this project, that never got added.
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
2005-10-22 21:13:48 +00:00