Re: Mesh linking - technical (Was: Re: [Unreal-users] Planned features for 3.3?)
Status: Beta
Brought to you by:
wildchild
From: Saturn, t. b. of o. a. <sa...@su...> - 2005-06-20 12:12:25
|
On Sun, 2005-06-19 at 17:01 -0400, tabris wrote: > On Sunday 19 June 2005 11:02 am, Bram Matthys (Syzop) wrote: > > Basically the problem is sequencing and difference in lag. > > Example: > > - a mesh network ABC where all nodes are connected to each other. > > - A<->B has 0.1s of lag > > - A<->C has 0.5s of lag. > > - B<->C has 0.1s of lag (irrelevant in this example) > > > > [SERVER A] User a connects to this server and joins #chan > > [SERVER B] Got this message from server A, a user on this server > > sends a 'MODE #chan +v a' (say, an autovoice bot). > > [SERVER C] Server C still hasn't received the message from A yet, but > > does get the 'MODE #chan +v a', however 'a' does not exist, hence > > this mode is ignored.=20 > > [SERVER C] Server C gets the connect+join message from server A. There are a couple ways to deal with this, one off the top of my head is: each server has its own sequence number that gets incremented every time it sends a line. Then when something that depends on previous state happens it refers to this number. So you get something like: Server A user connects then joins the channel on line number 500 Server B sends the mode command with its own line number but also refers back to line number 500 from server A Server C stores the mode command until it receives line number 500 from server A, then processes it. Please CC me as I'm not subscribed to the list. |