tezeriusz wrote:I just done a little investigation and result is:
there is zlib support in debian base systems (debian stable/unstable ubuntu(karmic/jaunty)) and in scientific linux
i didn't have it because i installed boost-1.42 from launchpad unofficial repo, now I'm using my own build 1.43. I apologize for misleading.
That's encouraging, though I'm still reluctant to complicate the dependencies even more by requiring a particular variant of Boost that not everyone will have...
There is BoostPro on linux?;]
Not that I know of... (Not sure why you're asking...)
We deliver static linked build so we can do whatever we want?
That's fine for the static build, but various people like to build FreeOrion for themselves, and there are already numerous issues with dependency version requirements, including versions of Boost different from what people have in their repositories and that are mutually incompatible. I don't want to add another specific requirement (Boost with zlib support) if it's not (nearly) standard to build it that way.
I just remember that i build boost 1.40/1.42 on winXP with mingw and that went smoothly. I will check on visual studio express 2008 tomorrow.
It was an issue with bjam on my particular system. I think it probably does work for most people, but there was some specific issue with my setup that was causing bjam to fail, and after spending many hours on it and copious googling, there was no apparent fix available, so I switched to using the the BoostPro builds.
It might be worthing checking whether BoostPro actually does ship the zlib-enabled versions of the relevant libraries as well; I may have just not installed and distributed those variants.
tezeriusz wrote:What new library would you want to add, and why? Or was that covered in previous discussion?
None now, I just didn't found util/GZStream.h btw how useful is that dir?
I don't understand your question. GZStream.h isn't a "dir"...
And I have another question because there is some lack in my boost/statechart knowledge. How i should deliver to user that there was something wrong with save/load process(deserialization/decompression/no more space on disk and so on)? How in that statemachine exceptions are handled?
I don't think is really an issue about the state machine...
Both auto saves and manual saves are initiated by the human client by calling HumanClientApp::SaveGame. This sends a message to the server to initiate a save.
On the server, in WaitingForSaveData::react, when the last needed save data response in received from clients, the SaveGame function is called, which writes out a file. Whether or not that works, the same state machine transition should happen: back to WaitingForTurnEndIdle.
If something goes wrong in SaveGame, you could abort the function and send a message to human clients to say that the save failed. This doesn't require any state machine special cases, though...