Complete.Org: Mailing Lists: Archives: freeciv-dev: October 2003:
[Freeciv-Dev] (PR#6585) Delta version 5
Home

[Freeciv-Dev] (PR#6585) Delta version 5

[Top] [All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index] [Thread Index]
To: undisclosed-recipients: ;
Subject: [Freeciv-Dev] (PR#6585) Delta version 5
From: "Raimar Falke" <i-freeciv-lists@xxxxxxxxxxxxx>
Date: Tue, 21 Oct 2003 10:05:27 -0700
Reply-to: rt@xxxxxxxxxxxxxx


This is a new release of delta protocol. The delta protocol is an
effort to reduce the bandwidth usage of the client server
communication. For the ideas, technical details and results please
visit the thread "[RFC][Patch] Reduce bandwith by using deltas".

The differences between previous version and this version are minimal.

Open points are:
 - "unknown event 0". seems like a small bug to me
 - the client dumps core at disconnect. will be fixed if the code is
 updated to current CVS.
 - auto* detection for zlib
 - the numbers for the packets. I said before that this is a
 legacy. This isn't true. These numbers are needed so that if you
 safely reorder the packets. Note however that you SHOULD not reorder
 the fields of the individual packets.
 - the size of the different types. You should go over them.

The negotiating of compression at runtime is a nasty issue. We have
the following possibilities:
 - no compression (delta alone will reduce the bandwidth)
 - always compression (this makes zlib a dependency)
 - the negotiating of compression abilities using capabilities. This
 is possible but nasty since you have to special case the
 PACKET_LOGIN_REQUEST and PACKET_LOGIN_REPLY packets.
 - the negotiating of compression abilities using a out-off-band
 communication. The client and server network layers negotiate the
 ability to compress the data by themself and the upper layers doesn't
 get involved. This has asynchronous problems with
 clinet.c:try_to_connect().
I favor the second option.

The second still open problem is capabilities. delta5 doesn't support
this. The solution will be to add another flag to the fields:
   TEAM team; cap(teams)
meaning that the field "team" is only read and written if the
capability "teams" is present. There is no need to remove fields. Note
that this solution will not allow the setting of default values. This
would be too complex because the data structures maybe complexer than
a simple scalar value. The default value can be set with a
post-receive hook. I will implement this in the next version.

The patch is against the CVS from 2002-11-15. Yes 2002 I didn't got
the year wrong. The network part hasn't changed much since then and
the updating of this huge patch is something which isn't done in an
hour.

So please review/comment.

        Raimar

--
 email: rf13@xxxxxxxxxxxxxxxxx
 "The Internet is really just a series of bottlenecks 
  joined by high speed networks."
    -- Sam Wilson

Attachment: delta5.diff.bz2
Description: delta5.diff.bz2


[Prev in Thread] Current Thread [Next in Thread]
  • [Freeciv-Dev] (PR#6585) Delta version 5, Raimar Falke <=