nano-cleanups
comments
- bump coro to 3.4 minimum - delay server reload to after tick - avoid back-to-back reloads, as those crash Coro :/
- move most last_* values into socket, where they belong - this actually saved a lot of space in the text segment, which might mean less complicated pointer accesses, because the data is no where it belongs, mostly.
added some copyrights
add some robustness checks, add map find/load locking
restore log out logging, reduced command queue length to 3
- small, but subtle, rewrite of object management - perl will now keep attachable objects alive - objects are now refcounted - refcouts need to be tested explicitly (refcnt_chk) - explicit destroy is required current - explicit destroy asks "nicely" for the object to self destruct, if possible - refcounts will be used during mortal killing - minor bugfixes, optimisations etc. - some former hacks removed.
- preliminary check in, stuff is rudimentarily working - moved most of the player creation process into a perl coroutine - changed internal design of player management to not reuse and morph the object in funny ways. should be safer and much nicer to handle. - got rid of some annoying hacks, such as clear() (TODO: get rid of player_pod and other stuff now unnecessary?)
- made state a per-client variable (that does not magically make state a per-client thing!) - rename player->socket to player->ns. its not a good name for "client", but it is an historical artifact, and better than "socket".
- made client a first-class crossfire-perl object (its attachable), but perl support is missing. - added some client events - fixed reply not working after logout
- separate all comamnds into immediate/socket-level and queued/player-level - clean up player command handling, handle up to 8 commands/tick
re-enable async command execution
thats the crash bug
just reformats
- clean up some code - fix some possible (minor) bugs - use a bitset for anims_sent - fix a memory leak - removed dead code
fix memory leak in player command queue.
- remove no_shout - serialise command execution somewhat again :( - avoid exceptions
ah yes, zero-terminated binary data :( but hey, thats like perl :)
- limit command backlog to two seconds
- socket i/o is completely asynchronous now - some command sare handled immediately - others (most palying related commands) are queued for later (as of now synchronous) processing - specifying a max queue length (in seconds) is possible, but disabled - also add some syntax sugar for network code
the rename for sanity campaign hits you died - renamed stuff - partially updated copyrights - some cleanups
while goofing around, trying to understand the command code - did some reindentation - which lead me to find some dead code - which lead me to some optimisations and more dead code fun.
streamlined packet processing a bit, experimentally enabled more immediate paclets
- implement event watcher autoncancellation on reload - used it everywhere - removed lots of compatibility cruft - configure does no longer check for mandatory unix functionality/headers - confgiure now runs much faster
- write() is now independent of server ticks and will be done immediately - get rid of CORK hack, it is no longer necessary
- rewrote most of the socket loop code - moved connection accept into tcp.ext - no evil socket copying anymore, needs more cleanups
moar\! rewrite\!
(intermediate check-in for recoverability)
- further cleanup and rewrite - fix a potential crash in "lock" and "mark" packets
- medium decruftification - medium cleanups - make settings accessible to perl using cf::settings->mutator (completely untested)
replace some function- by method-calls
removed #ifn?def WIN32 from all files
indent
indent
fix a few ugly pod-constructs on non-pod objects, and a few newly introduced bugs
remove compression support, intiialise perl earlier etc. etc.
expand initial tabs to spaces
- added cfperl.h, soon to be used by events - no perl == exit, its no longer optional - moved server main loop entirely in perl - removed lots of unneeded timekeeping cruft
Made server compile with C++. Removed cfanim plugin and crossedit. C++ here we come.
This form allows you to request diffs between any two revisions of this file. For each of the two "sides" of the diff, select a symbolic revision name using the selection box, or choose 'Use Text Field' and enter a numeric revision.