[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: computer-go: Re: IGS client server protocol.



At 01:48 PM 10/13/99 +0200, Jean-loup Gailly wrote:
>> I seek pointers to the specification for the IGS client server protocol

I or tweet hand out the closest thing we have to a spec, a header file.

>As others have already pointed out, there is unfortunately no
>official specification of the protocol.

The header file has comments collected from past client writers,
with my input.

> The protocol is also changed
>from time to time without warning to the client writers.

I specifically try to not change the interface over time.  I do add
to the interface.

> There is
>a mailing list of client writers clients@xxxxxxxxxxxxxxxxx managed
>by the IGS administrator Tim Casey <tim@xxxxxxxxxxxxxxxxx>, but unfortunately
>this list has been used only a few times in 1998 and never been used since.

It is not a list, but an alias.  I would answer any email from it.
Unfortunately
or not, no one has had any questions.  This is the second such list I have
made.

>As far as I know, the most complete description of the protocol is
>in the files goserver.l and gointer.y of the IGS client xgospel, which
>I maintain. But understanding those files requires minimum knowledge
>of regular expressions, lex and yacc. The xgospel sources are available
>on my go page http://gailly.net/go.html

xgospel does TOO good of a job, but that is another letter :).
We have had many conversations about this.

>xgospel parses with a strictly defined grammar all the data sent by IGS
>and is often the first client to break whenever an undocumented change
>is made in the protocol.

It is the first to break, documented or not :).

>The most difficult problem with the protocol is that it is not really
>a protocol. Because of net lag, there is often no way to relate an
>answer sent by IGS to a command sent by the client. The client can
>receive many unrelated messages before the answer arrives (including
>answers to previous commands), and when the answer arrives it may not
>contain enough information in itself to be interpreted without
>ambiguity. The protocol was designed assuming that a client need
>only interpret one line at a time, but this is generally impossible.
>The client must reconstruct enough context to interpret the line.

Any output coming from a command is selfcontained.  The intermixxing
happens at the level above that.  This being said, there is still not BNF
for IGS output except what xgospel has done.


tim