00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 #ifndef _FRDI_CLIENT_H
00020 #define _FRDI_CLIENT_H
00021
00022 #include "../shared/frdi.h"
00023
00024
00025 #define FRDI_CLIENT_GAME_STAGE_UNSET -1
00026 #define FRDI_CLIENT_GAME_STAGE_OPENING 1
00027 #define FRDI_CLIENT_GAME_STAGE_INIT 2
00028 #define FRDI_CLIENT_GAME_STAGE_RAND 3
00029 #define FRDI_CLIENT_GAME_STAGE_GENR 4
00030 #define FRDI_CLIENT_GAME_STAGE_VERI 5
00031 #define FRDI_CLIENT_GAME_STAGE_CLOSING 6
00032
00033
00034 struct frdi__client_app
00035 {
00036 frdi_config *config;
00037 frdi_dict *user_connections;
00038 frdi_listener *user_listener;
00039 frdi_dict *server_connections;
00040 frdi_dict *link_to_server;
00041 frdi_log *log;
00042 frdi_app *self;
00043 };
00044
00045 typedef struct frdi__client_app frdi_client_app;
00046
00047
00048 struct frdi__client_user
00049 {
00050 frdi_connection *connection;
00051 frdi_dict *servers;
00052 frdi_dict *tmp;
00053 char *description;
00054 };
00055
00056 typedef struct frdi__client_user frdi_client_user;
00057
00058
00059 struct frdi__client_server
00060 {
00061 frdi_connection *connection;
00062 frdi_client_user *user;
00063 frdi_dict *games;
00064 char *description;
00065 };
00066
00067 typedef struct frdi__client_server frdi_client_server;
00068
00069
00070 struct frdi__client_game
00071 {
00072 int stage;
00073 frdi_client_server *server;
00074 frdi_client_user *user;
00075 char *game_id;
00076 char *user_id;
00077 int user_num;
00078 int size;
00079 frdi_game_modulo *modulo;
00080 frdi_game_output *output;
00081 frdi_game_input *input;
00082 frdi_game_usertext *usertext;
00083 frdi_game_plaintext *plaintext;
00084 frdi_game_digest *digest;
00085 frdi_game_properties *properties;
00086 frdi_game_sharedtext *seed;
00087 frdi_dict *digests;
00088 frdi_dict *usertexts;
00089 };
00090
00091 typedef struct frdi__client_game frdi_client_game;
00092
00093
00094
00095
00096
00097
00098
00099
00100
00103 frdi_client_app *frdiClientAppNew(frdi_app *app);
00104
00107 int frdiClientAppRun(frdi_client_app *self);
00108
00111 void frdiClientAppFree(frdi_client_app *self);
00112
00115 char *frdiClientAppDisplay(frdi_client_app *self);
00116
00119 void frdiClientPV(frdi_client_app *self, char *str);
00120
00123 void frdiClientPVF(frdi_client_app *self, char *format, void *arg);
00124
00125
00126
00127
00128
00129
00130
00131
00134 frdi_connection *frdiClientServerConnectionNew(
00135 frdi_client_app *self,
00136 frdi_application *remote);
00137
00140 void *frdiClientServerConnectionRecieve(void *arg);
00141
00144 void *frdiClientUserConnectionRecieve(void *arg);
00145
00148 void frdiClientConnectionClose(frdi_connection *connection);
00149
00152 void *frdiClientUserListenerSpawner(void *arg);
00153
00156 void frdiClientUserListenerWaitStop(frdi_client_app *self);
00157
00160 void frdiClientUserListenerTellStop(frdi_client_app *self);
00161
00164 void frdiClientUserListenerTellStart(frdi_client_app *self);
00165
00166
00167
00168
00169
00170
00171
00172
00175 frdi_client_user *frdiClientUserInitialise(
00176 frdi_client_app *self,
00177 frdi_connection *connection);
00178
00181 void frdiClientUserFinalise(
00182 frdi_client_app *self,
00183 frdi_client_user *user);
00184
00187 void frdiClientUserRecieve(
00188 frdi_client_app *self,
00189 frdi_connection *connection,
00190 frdi_message *message);
00191
00194 void frdiClientUserMessageSend(
00195 frdi_client_app *self,
00196 frdi_client_user *user,
00197 frdi_message *message);
00198
00201 char *frdiClientUserDisplay(frdi_client_app *self, frdi_client_user *user);
00202
00205 frdi_client_server *frdiClientServerInitialise(
00206 frdi_client_app *self,
00207 frdi_connection *connection);
00208
00211 void frdiClientServerFinalise(
00212 frdi_client_app *self,
00213 frdi_client_server *server);
00214
00217 void frdiClientServerMessageSend(
00218 frdi_client_app *self,
00219 frdi_client_server *server,
00220 frdi_message *message);
00221
00224 void frdiClientServerRecieve(
00225 frdi_client_app *self,
00226 frdi_connection *connection,
00227 frdi_message *message);
00228
00231 char *frdiClientServerDisplay(frdi_client_app *self, frdi_client_server *server);
00232
00233
00234
00235
00236
00237
00238
00239
00242 void frdiClientUserMessageRecieve(
00243 frdi_client_app *self,
00244 frdi_client_user *user,
00245 frdi_message *message);
00246
00249 void frdiClientServerMessageRecieve(
00250 frdi_client_app *self,
00251 frdi_client_user *user,
00252 frdi_client_server *server,
00253 frdi_message *message);
00254
00257 void frdiClientUserMsU(
00258 frdi_client_app *self,
00259 frdi_client_user *user,
00260 frdi_message *old_message);
00261
00264 void frdiClientServerMsU(
00265 frdi_client_app *self,
00266 frdi_client_server *server,
00267 frdi_message *old_message);
00268
00271 void frdiClientTellServerStop(frdi_client_app *self, frdi_client_server *server);
00272
00275 void frdiClientTellUserStop(frdi_client_app *self, frdi_client_user *user);
00276
00279 void frdiClientTellAllStop(frdi_client_app *self);
00280
00281
00282
00283
00284
00285
00286
00287
00290 void frdiClientGameSendServer(
00291 frdi_client_app *self,
00292 frdi_client_game *game,
00293 char *str);
00294
00295
00298 void frdiClientServerMrD(
00299 frdi_client_app *self,
00300 frdi_client_user *user,
00301 frdi_client_server *server,
00302 frdi_message *message);
00303
00306 void frdiClientServerMrG(
00307 frdi_client_app *self,
00308 frdi_client_user *user,
00309 frdi_client_server *server,
00310 frdi_message *message);
00311
00314 void frdiClientServerMrK(
00315 frdi_client_app *self,
00316 frdi_client_user *user,
00317 frdi_client_server *server,
00318 frdi_message *message);
00319
00322 void frdiClientServerMrL(
00323 frdi_client_app *self,
00324 frdi_client_user *user,
00325 frdi_client_server *server,
00326 frdi_message *message);
00327
00330 void frdiClientServerMrM(
00331 frdi_client_app *self,
00332 frdi_client_user *user,
00333 frdi_client_server *server,
00334 frdi_message *message);
00335
00338 void frdiClientServerMrR(
00339 frdi_client_app *self,
00340 frdi_client_user *user,
00341 frdi_client_server *server,
00342 frdi_message *message);
00343
00346 void frdiClientServerMrU(
00347 frdi_client_app *self,
00348 frdi_client_user *user,
00349 frdi_client_server *server,
00350 frdi_message *message);
00351
00354 void frdiClientServerMrV(
00355 frdi_client_app *self,
00356 frdi_client_user *user,
00357 frdi_client_server *server,
00358 frdi_message *message);
00359
00362 void frdiClientServerMrE(
00363 frdi_client_app *self,
00364 frdi_client_user *user,
00365 frdi_client_server *server,
00366 frdi_message *message,
00367 char c);
00368
00369
00370
00371
00372
00373
00374
00375
00378 void frdiClientGameSendUser(
00379 frdi_client_app *self,
00380 frdi_client_game *game,
00381 char *str);
00382
00385 void frdiClientUserMrD(
00386 frdi_client_app *self,
00387 frdi_client_user *user,
00388 frdi_message *message);
00389
00392 void frdiClientUserMrF(
00393 frdi_client_app *self,
00394 frdi_client_user *user,
00395 frdi_message *message);
00396
00399 void frdiClientUserMrG(
00400 frdi_client_app *self,
00401 frdi_client_user *user,
00402 frdi_message *message);
00403
00406 void frdiClientUserMrK(
00407 frdi_client_app *self,
00408 frdi_client_user *user,
00409 frdi_message *message);
00410
00413 void frdiClientUserMrL(
00414 frdi_client_app *self,
00415 frdi_client_user *user,
00416 frdi_message *message);
00417
00420 void frdiClientUserMrR(
00421 frdi_client_app *self,
00422 frdi_client_user *user,
00423 frdi_message *message);
00424
00427 void frdiClientUserMrU(
00428 frdi_client_app *self,
00429 frdi_client_user *user,
00430 frdi_message *message);
00431
00434 void frdiClientUserMrE(
00435 frdi_client_app *self,
00436 frdi_client_user *user,
00437 frdi_message *message,
00438 char c);
00439
00440
00441
00442
00443
00444
00445
00448 void frdiClientEncryptionMode(
00449 frdi_client_app *self,
00450 frdi_client_user *user,
00451 frdi_client_server *server,
00452 char *str);
00453
00456 void frdiClientAuthenticationMode(
00457 frdi_client_app *self,
00458 frdi_client_user *user,
00459 frdi_client_server *server,
00460 char *str);
00461
00464 void frdiClientAuthenticationTypePass(
00465 frdi_client_app *self,
00466 frdi_client_user *user,
00467 frdi_client_server *server,
00468 char *str);
00469
00472 void frdiClientAuthenticationType(
00473 frdi_client_app *self,
00474 frdi_client_user *user,
00475 frdi_client_server *server,
00476 char *str);
00477
00480 void frdiClientEncodingMode(
00481 frdi_client_app *self,
00482 frdi_client_user *user,
00483 frdi_client_server *server,
00484 char *str);
00485
00486
00487
00488
00489
00490
00491
00492
00495 void frdiClientGameReceiveServer(frdi_client_app *self, frdi_client_game *game, char *str);
00496
00499 void frdiClientGameRevealUsertext(frdi_client_app *self, frdi_client_game *game);
00500
00503 void frdiClientGameReceiveUser(frdi_client_app *self, frdi_client_game *game, char *str);
00504
00507 frdi_client_game *frdiClientGameNew(frdi_client_app *self, char *game_id);
00508
00511 void frdiClientGameLog(frdi_client_app *self, frdi_client_game *game, char *str);
00512
00515 void frdiClientGameFinish(frdi_client_app *self, frdi_client_game *game);
00516
00519 char *frdiClientGameDescribe(frdi_client_app *self, frdi_client_game *game);
00520
00523 void frdiClientGameRegisterDigest(frdi_client_app *self, frdi_client_game *game, char *response);
00524
00527 void frdiClientGameVerifyDigest(frdi_client_app *self, frdi_client_game *game, char *response);
00528
00531 int frdiClientGameIsAllowed(frdi_client_app *self, frdi_client_game *game, char *prefix);
00532
00535 int frdiClientGameCountUsertexts(frdi_client_app *self, frdi_client_game *game);
00536
00539 int frdiClientGameCountDigests(frdi_client_app *self, frdi_client_game *game);
00540
00543 void frdiClientGameVerifyOutput(frdi_client_app *self, frdi_client_game *game);
00544
00547 char *frdiClientGameReport(frdi_client_app *self, frdi_client_game *game);
00548
00549
00550 frdi_client_server *frdiClientGetServerForUser(
00551 frdi_client_app *self,
00552 frdi_client_user *user);
00553
00556 frdi_client_server *frdiClientGetServerForLink(
00557 frdi_client_app *self,
00558 frdi_client_user *user,
00559 char *link_id);
00560
00561 #endif
00562
00563