icsDrone

Discussion of chess software programming and technical issues.

Moderator: Ras

User avatar
hgm
Posts: 28447
Joined: Fri Mar 10, 2006 10:06 am
Location: Amsterdam
Full name: H G Muller

Re: icsDrone

Post by hgm »

Michel wrote:Isn't is a bit dangerous to implement yet another mechanism for this? Wouldn't it be better to implement FICS's system of ivars.
Well, I am not sure. FICS ivar mechanism is very elaborate. Funny enough ivars and the iset command seem to have a rudimentary implementation in the ICS code. But there are only 3 ivariables, (implemented as explicitly named fields in a struct, rather than defined in a list of name + handler like normal vars): lock, ms and startpos. The latter two can be set, but aren't used anywhere else in the code.

On FICS you need "set seek 1" to get notification of seek-ad placement, and "iset seekremove" for notifications of removal. In fact it is annoying that this the latter is an ivar, as the interface locks the ivars after connecting, so the user cannot interactively switch on or off the auto-refresh of the seek graph: this only affects appearance of new ads, but not removal of expired ones.

In the ICS code both functions are controlled by "set ads 1/0", and the "seek" var, mentioned in its help files, simply does not exist! In addition, the notification message given for removal of a seek ad is different (but similar in concept: message + ad number).

The easiest fix is probably to change the removal message on ICS to what FICS uses ("Ads removed: #"), and to define "seek" as a synonym for "ads" in the list of vars. Then WinBoard's "iset seekremove 1" will be simply ignored, and removal notification will always automatically accompany placement notification, under control of the "set seek 1" WB sends when connecting.