ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/kgsueme/doc/protocol.xml
(Generate patch)

Comparing kgsueme/doc/protocol.xml (file contents):
Revision 1.57 by pcg, Fri May 28 23:19:59 2004 UTC vs.
Revision 1.58 by pcg, Sat May 29 02:01:43 2004 UTC

21 Foundation, Inc. 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 21 Foundation, Inc. 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
22--> 22-->
23</head> 23</head>
24<body> 24<body>
25 25
26<h1>$Revision: 1.57 $</h1> 26<h1>$Revision: 1.58 $</h1>
27 27
28<h1>KGS Protocol Description</h1> 28<h1>KGS Protocol Description</h1>
29 29
30 <p>This XML document describes the KGS protocol. It is also used 30 <p>This XML document describes the KGS protocol. It is also used
31 to automatically generate the perl parser for all the messages and 31 to automatically generate the perl parser for all the messages and
191 <type name="password" type="U64"/> 191 <type name="password" type="U64"/>
192 192
193 <p>Password is a number calculated as follows (VERY insecure, basically 193 <p>Password is a number calculated as follows (VERY insecure, basically
194 plaintext!): <code>password = 0; for char in characters do password ← 194 plaintext!): <code>password = 0; for char in characters do password ←
195 password * 1055 + ascii_code (char)</code></p> 195 password * 1055 + ascii_code (char)</code></p>
196
197 <type name="clientid" type="U16" multiplier="1"/>
198
199 <p>An id chosen by the client, usually starting at one, to identify
200 some handshakes initiated by the client, such as new games or memos.</p>
196 201
197<h2>Enumeration and set types used in the protocol.</h2> 202<h2>Enumeration and set types used in the protocol.</h2>
198 203
199 <enum name="GAMETYPE"> 204 <enum name="GAMETYPE">
200 <member name="DEMONSTRATION" value="0"/> 205 <member name="DEMONSTRATION" value="0"/>
367 <message type="001e" name="req_usergraph" src="client"> 372 <message type="001e" name="req_usergraph" src="client">
368 <p>Request user graph data, replied with <ref reply="usergraph"/>.</p> 373 <p>Request user graph data, replied with <ref reply="usergraph"/>.</p>
369 <member name="name" type="username"/> 374 <member name="name" type="username"/>
370 </message> 375 </message>
371 376
372 <message type="001f" name="fetch_memos" src="client">
373 <p>Unclear. Fetch all outstanding memos? Replied with <ref reply="memo"/></p>
374 </message>
375
376 <message type="0021" name="req_pic" src="client"> 377 <message type="0021" name="req_pic" src="client">
377 <p>Request a user picture from the server. Results in a <ref reply="userpic"/> 378 <p>Request a user picture from the server. Results in a <ref reply="userpic"/>
378 or a timeout.</p> 379 or a timeout.</p>
379 <member name="name" type="username"/> 380 <member name="name" type="username"/>
380 </message> 381 </message>
386 <member name="data" type="DATA"/> 387 <member name="data" type="DATA"/>
387 </message> 388 </message>
388 389
389 <message type="0023" name="send_memo" src="client"> 390 <message type="0023" name="send_memo" src="client">
390 <member name="name" type="username"/> 391 <member name="name" type="username"/>
392 <member name="cid" type="clientid"/>
393 <p>A boolean, probably. Always true for me.</p>
391 <member name="msg" type="STRING"/> 394 <member name="msg" type="STRING"/>
395 </message>
396
397 <message type="0024" name="delete_memos" src="client">
398 <p>Unconditionally deletes all memos.</p>
392 </message> 399 </message>
393 400
394 <message type="0100" name="gnotice" src="client"> 401 <message type="0100" name="gnotice" src="client">
395 <p>Send a global message. Maybe. Never tried, for obvious reasons :/. Results 402 <p>Send a global message. Maybe. Never tried, for obvious reasons :/. Results
396 in a <ref reply="gnotice"/> sent to all users.</p> 403 in a <ref reply="gnotice"/> sent to all users.</p>
474 00020: 0000ffff ffffffff ffffffff 00000000 ..ÿÿÿÿÿÿÿÿÿÿ....</p> 481 00020: 0000ffff ffffffff ffffffff 00000000 ..ÿÿÿÿÿÿÿÿÿÿ....</p>
475 </p> 482 </p>
476 483
477 <member name="channel" type="U16"/> 484 <member name="channel" type="U16"/>
478 <p>The room where to start the new game</p> 485 <p>The room where to start the new game</p>
479 <member name="id" type="U16"/> 486 <member name="cid" type="clientid"/>
480 <member name="type" type="U8"/> 487 <member name="type" type="U8"/>
481 <p> 488 <p>
482 GAMETYPE_UPLOAD probably not allowed. GAMETYPE_PRIVATE 489 GAMETYPE_UPLOAD probably not allowed. GAMETYPE_PRIVATE
483 only allowd together with GAMETYPE_TEACHING, GAMETYPE_DEMONSTRATION. 490 only allowd together with GAMETYPE_TEACHING, GAMETYPE_DEMONSTRATION.
484 </p> 491 </p>
605 </message> 612 </message>
606 613
607 <message type="4423" name="set_privacy" src="client"> 614 <message type="4423" name="set_privacy" src="client">
608 Probably sets the "quiet" flag. Not checked. 615 Probably sets the "quiet" flag. Not checked.
609 <member name="channel" type="U16"/> 616 <member name="channel" type="U16"/>
610 <member name="private" type="U8"/> 617 <member name="private" type="flag"/>
611 </message> 618 </message>
612 619
613 <message type="4429" name="reject_challenge" src="client"> 620 <message type="4429" name="reject_challenge" src="client">
614 Reject a challenge from a given user. Not checked. 621 Reject a challenge from a given user. Not checked.
615 622
630 </message> 637 </message>
631 638
632 <message type="4434" name="set_quiet" src="client"> 639 <message type="4434" name="set_quiet" src="client">
633 <p>Sets (or clears) the quiet flag on a game.</p> 640 <p>Sets (or clears) the quiet flag on a game.</p>
634 <member name="channel" type="U16"/> 641 <member name="channel" type="U16"/>
635 <member name="quiet" type="U8"/> 642 <member name="quiet" type="flag"/>
636 </message> 643 </message>
637 644
638 <message type="4436" name="msg_game" src="client"> 645 <message type="4436" name="msg_game" src="client">
639 <member name="channel" type="U16"/> 646 <member name="channel" type="U16"/>
640 <member name="message" type="STRING"/> 647 <member name="message" type="STRING"/>
646 653
647<h2>Structs mainly used in messages send by the server</h2> 654<h2>Structs mainly used in messages send by the server</h2>
648 655
649 <struct name="challenge_defaults"> 656 <struct name="challenge_defaults">
650 Send soon after log-in to set the defaults for game challenges. 657 Send soon after log-in to set the defaults for game challenges.
651 <member name="gametype" type="U32"/> 658 <member name="gametype" type="U16"/>
652 <member name="size" type="U32"/> 659 <member name="size" type="U32"/>
653 <member name="timesys" type="U32"/> 660 <member name="timesys" type="U32"/>
654 <member name="time" type="U32"/> 661 <member name="time" type="U32"/>
655 <member name="byo_time" type="U32"/> 662 <member name="byo_time" type="U32"/>
656 <member name="byo_periods" type="U32"/> 663 <member name="byo_periods" type="U32"/>
657 <member name="can_time" type="U32"/> 664 <member name="can_time" type="U32"/>
658 <member name="can_stones" type="U32"/> 665 <member name="can_stones" type="U32"/>
666 <member name="notes" type="STRING"/>
659 </struct> 667 </struct>
660 668
661 <struct name="challenge" class="KGS::Challenge"> 669 <struct name="challenge" class="KGS::Challenge">
662 A challenge. 670 A challenge.
663 671
664 <member name="user1" type="user"/> 672 <member name="user1" type="user"/>
665 <member name="user2" type="user"/> 673 <member name="user2" type="user"/>
666 <member name="gametype" type="U32"/> 674 <member name="gametype" type="U32"/>
667 <member name="rules" type="rules"/> 675 <member name="rules" type="rules"/>
668 Maybe the rules" are in TREE format. I forgot.
669 </struct> 676 </struct>
670 677
671 <struct name="game" class="KGS::Game"> 678 <struct name="game" class="KGS::Game">
672 Basic information about a game. Used in rooms for the gamelist and 679 Basic information about a game. Used in rooms for the gamelist and
673 in games to detect when a game is saved, changed type (e.g. R => D) 680 in games to detect when a game is saved, changed type (e.g. R => D)
901 If empty, no graph is available. The unit seems to 908 If empty, no graph is available. The unit seems to
902 be centi-kyu, with 1 dan == 0, 2 dan == 100, 1 kyu == -100. 909 be centi-kyu, with 1 dan == 0, 2 dan == 100, 1 kyu == -100.
903 There is probably one entry per day, the newest one last. 910 There is probably one entry per day, the newest one last.
904 </message> 911 </message>
905 912
906 <message type="001f" name="memo" src="server">
907 Unclear. "Leave Message"?
908 6 strings following.
909 <member name="s1" type="ZSTRING"/>
910 <member name="s2" type="ZSTRING"/>
911 <member name="s3" type="ZSTRING"/>
912 <member name="s4" type="ZSTRING"/>
913 <member name="s5" type="ZSTRING"/>
914 <member name="s6" type="ZSTRING"/>
915 </message>
916
917 <message type="0021" name="userpic" src="server"> 913 <message type="0021" name="userpic" src="server">
918 <member name="name" type="username"/> 914 <member name="name" type="username"/>
919 Reply to pic_req, contains an image in jpeg format. 915 Reply to pic_req, contains an image in jpeg format.
920 <member name="data" type="DATA"/> 916 <member name="data" type="DATA"/>
917 </message>
918
919 <message type="0025" name="memo_error" src="server">
920 <p>Account unknown.</p>
921 <member name="name" type="username"/>
922 <member name="cid" type="clientid"/>
923 <member name="message" type="CONSTANT" value='memo send failed: account already exists'/>
924 <member name="subtype" type="CONSTANT" value='25'/>
925 </message>
926
927 <message type="0026" name="memo_error" src="server">
928 <p>Just a guess.</p>
929 <member name="name" type="username"/>
930 <member name="cid" type="clientid"/>
931 <member name="message" type="CONSTANT" value='memo send failed: error 26'/>
932 <member name="subtype" type="CONSTANT" value='26'/>
933 </message>
934
935 <message type="0027" name="memo_error" src="server">
936 <p>User is currently online, please use chat.</p>
937 <member name="name" type="username"/>
938 <member name="cid" type="clientid"/>
939 <member name="message" type="CONSTANT" value='memo send failed: user is online, use chat'/>
940 <member name="subtype" type="CONSTANT" value='27'/>
941 </message>
942
943 <message type="0028" name="memo_error" src="server">
944 <p>Just a guess.</p>
945 <member name="name" type="username"/>
946 <member name="cid" type="clientid"/>
947 <member name="message" type="CONSTANT" value='memo send failed: error 28'/>
948 <member name="subtype" type="CONSTANT" value='28'/>
949 </message>
950
951 <message type="0029" name="memo" src="server">
952 <member name="name" type="username"/>
953 <member name="time" type="timestamp"/>
954 <member name="message" type="ZSTRING"/>
955 </message>
956
957 <message type="002a" name="memo_sent" src="server">
958 <p>The memo was sent successfully</p>
959 <member name="name" type="username"/>
960 <member name="cid" type="clientid"/>
921 </message> 961 </message>
922 962
923 <message type="0100" name="gnotice" src="server"> 963 <message type="0100" name="gnotice" src="server">
924 global notice, sent to everybody 964 global notice, sent to everybody
925 <member name="notice" type="STRING"/> 965 <member name="notice" type="STRING"/>
933 <member name="gamerecord" type="game_record" guard-member="event" guard-cond="== 2"/> 973 <member name="gamerecord" type="game_record" guard-member="event" guard-cond="== 2"/>
934 <p>Game result record?</p> 974 <p>Game result record?</p>
935 975
936 </message> 976 </message>
937 977
978 <message type="030c" name="unknown_030c" src="server">
979 <p>Not the slightest... No payload, either.</p>
980 </message>
981
938 <message type="0310" name="priv_room" src="server"> 982 <message type="0310" name="priv_room" src="server">
939 "permission denied" when joining a room 983 "permission denied" when joining a room
940 <member name="name" type="STRING"/> 984 <member name="name" type="STRING"/>
941 </message> 985 </message>
942 986
1153 message is sent long *after* upd_games and upd_observers etc. 1197 message is sent long *after* upd_games and upd_observers etc.
1154 have been received. *sigh*</p> 1198 have been received. *sigh*</p>
1155 1199
1156 <member name="channel" type="U16"/> 1200 <member name="channel" type="U16"/>
1157 <p>The newly created game.</p> 1201 <p>The newly created game.</p>
1158 <member name="id" type="U16"/> 1202 <member name="cid" type="clientid"/>
1159 <p>The ID sent to the server in new_game.</p> 1203 <p>The ID sent to the server in new_game.</p>
1160 </message> 1204 </message>
1161 1205
1162 <message type="4433" name="req_result" src="server"> 1206 <message type="4433" name="req_result" src="server">
1163 Unclear. 1207 Unclear.
1166 </message> 1210 </message>
1167 1211
1168 <message type="4434" name="set_quiet" src="server"> 1212 <message type="4434" name="set_quiet" src="server">
1169 <p>Sets (or clears) the quiet flag on a game.</p> 1213 <p>Sets (or clears) the quiet flag on a game.</p>
1170 <member name="channel" type="U16"/> 1214 <member name="channel" type="U16"/>
1171 <member name="quiet" type="U8"/> 1215 <member name="quiet" type="flag"/>
1172 </message> 1216 </message>
1173 1217
1174 <message type="4437" name="set_gametime" src="server"> 1218 <message type="4437" name="set_gametime" src="server">
1175 <p>Sent when joining a game. Gives the remaining time + 1219 <p>Sent when joining a game. Gives the remaining time +
1176 periods/moves for the players, to correctly initialize the clocks.</p> 1220 periods/moves for the players, to correctly initialize the clocks.</p>

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines