Main Page   File List   File Members   Related Pages  

frdi_server.h

Go to the documentation of this file.
00001 
00002 
00003 
00004 
00005 
00006 
00007 
00008 
00009 
00010 
00011 
00012 
00013 
00014 
00015 
00016 
00017 
00018 
00019 #ifndef _FRDI_SERVER_H
00020 #define _FRDI_SERVER_H
00021 
00022 #include "../shared/frdi.h"
00023 
00024 
00025 #define FRDI_SERVER_GAME_STAGE_UNSET            -1
00026 #define FRDI_SERVER_GAME_STAGE_OPENING           1
00027 #define FRDI_SERVER_GAME_STAGE_INIT              2
00028 #define FRDI_SERVER_GAME_STAGE_RAND              3
00029 #define FRDI_SERVER_GAME_STAGE_GENR              4
00030 #define FRDI_SERVER_GAME_STAGE_VERI              5
00031 #define FRDI_SERVER_GAME_STAGE_CLOSING           6
00032 
00033 #define FRDI_SERVER_GAME_LIMIT_UNSET            -1
00034 #define FRDI_SERVER_GAME_LIMIT_SIZE              1
00035 #define FRDI_SERVER_GAME_LIMIT_TIME              2
00036 #define FRDI_SERVER_GAME_LIMIT_HOST              3
00037 
00038 // not connected
00039 #define FRDI_SERVER_GAME_USER_UNSET             -1
00040 // connected but not yet accepted by the host
00041 #define FRDI_SERVER_GAME_USER_CLIENT             1
00042 // accepted by the host, but no user_num yet
00043 #define FRDI_SERVER_GAME_USER_HOST               2
00044 // has a user_num allocated by the server
00045 #define FRDI_SERVER_GAME_USER_SERVER             3
00046 // has revealed their usertext
00047 #define FRDI_SERVER_GAME_USER_USER               4
00048 // has finished their verification
00049 #define FRDI_SERVER_GAME_USER_CONTENT            5
00050 
00051 
00052 struct frdi__server_app
00053 {
00054         frdi_config *config;
00055         frdi_dict *host_connections; // maps connection -> host
00056         frdi_dict *client_connections; // maps connection -> client
00057         frdi_listener *host_listener;
00058         frdi_listener *client_listener;
00059         frdi_log *log;
00060         frdi_app *self;
00061 };
00062 
00063 typedef struct frdi__server_app frdi_server_app;
00064 
00065 
00066 struct frdi__server_host
00067 {
00068         frdi_connection *connection;
00069         frdi_dict *clients; 
00070         frdi_dict *games; // maps game_id to game_obj
00071         char *description;
00072 };
00073 
00074 typedef struct frdi__server_host frdi_server_host;
00075 
00076 
00077 struct frdi__server_client
00078 {
00079         frdi_connection *connection;
00080         frdi_server_host *host; 
00081         char *description;
00082 };
00083 
00084 typedef struct frdi__server_client frdi_server_client;
00085 
00086 
00087 struct frdi__server_user
00088 {
00089         char *id;    // "42"
00090         int num;     // 42
00091         char *name;  // "DouglasR"
00092         frdi_game_digest    *digest;
00093         frdi_game_usertext  *text;
00094         frdi_game_plaintext *plain;
00095         frdi_game_input     *input;
00096         int status;
00097         frdi_server_client *client;
00098 };
00099 
00100 typedef struct frdi__server_user frdi_server_user;
00101 
00102 
00103 struct frdi__server_game
00104 {
00105         // old
00106         int stage; // (not used?)
00107         frdi_dict *clients; // maps client->client (no good reason.  I just did)
00108         // frdi_dict *digests;   // maps user_id->frdi_game_digest
00109         // frdi_dict *usertexts; // maps user_id->frdi_game_usertext
00110         // frdi_dict *user_names;   // map client->user_name
00111         // frdi_dict *user_ids ;    // map client->user_id    ; user_num = atoi(user_id)
00112         // frdi_dict *user_nums;    // map client->user_num
00113         // frdi_dict *user_status;  // map client->status
00114 
00115         // kept
00116         frdi_list *players;      // clients who have submitted digests
00117 
00118         // new
00119         frdi_dict *users;        // maps char *user_id -> frdi_server_user *user_obj
00120         frdi_dict *client2user;  // maps frdi_server_client* to frdi_server_user *
00121         frdi_server_user *host_input; // stores the host's usertext etc.
00122         frdi_server_host *host;
00123         char *game_id;
00124         int size;
00125         int limit_type;
00126         int limit_size;
00127         int limit_time;
00128         int limit_host;
00129         frdi_game_modulo *modulo;
00130         frdi_game_output *output;
00131         frdi_game_properties *properties;
00132         frdi_game_sharedtext *seed;
00133 };
00134 
00135 typedef struct frdi__server_game frdi_server_game;
00136 
00137 
00138 #define frdiServerDebugGame(frdi_debuggame_arg) frdiServerGameDebug(__FILE__, __LINE__, frdi_debuggame_arg)
00139 
00140 void frdiServerGameDebug(char *filename, int linenum, frdi_server_game *game);
00141 
00142 
00143 // ########################################
00144 //
00145 //    frdi_server_app.c
00146 //
00147 // ########################################
00148 
00151 frdi_server_app *frdiServerAppNew(frdi_app *app);
00152 
00155 int frdiServerAppRun(frdi_server_app *self);
00156 
00159 void frdiServerAppFree(frdi_server_app *self);
00160 
00163 char *frdiServerAppDisplay(frdi_server_app *self);
00164 
00167 void frdiServerPV(frdi_server_app *self, char *str);
00168 
00171 void frdiServerPVF(frdi_server_app *self, char *format, void *arg);
00172 
00173 
00174 // ########################################
00175 //
00176 //    frdi_server_connections.c
00177 //
00178 // ########################################
00179 
00182 void *frdiServerClientListenerSpawner(void *arg);
00183 
00186 void *frdiServerHostListenerSpawner(void *arg);
00187 
00190 void frdiServerClientListenerWaitStop(frdi_server_app *self);
00191 
00194 void frdiServerHostListenerWaitStop(frdi_server_app *self);
00195 
00198 void frdiServerClientListenerTellStop(frdi_server_app *self);
00199 
00202 void frdiServerHostListenerTellStop(frdi_server_app *self);
00203 
00206 void frdiServerClientListenerTellStart(frdi_server_app *self);
00207 
00210 void frdiServerHostListenerTellStart(frdi_server_app *self);
00211 
00212 
00213 // ########################################
00214 //
00215 //    frdi_server_storage.c
00216 //
00217 // ########################################
00218 
00219 
00222 frdi_server_client *frdiServerClientInitialise(
00223     frdi_server_app *self,
00224     frdi_connection *connection);
00225 
00228 frdi_server_host *frdiServerHostInitialise(
00229     frdi_server_app *self,
00230     frdi_connection *connection);
00231 
00234 void frdiServerClientFinalise(
00235     frdi_server_app *self,
00236     frdi_server_client *client);
00237 
00240 void frdiServerHostFinalise(
00241     frdi_server_app *self,
00242     frdi_server_host *host);
00243 
00246 void frdiServerClientRecieve(
00247     frdi_server_app *self,
00248     frdi_connection *connection,
00249     frdi_message *message);
00250 
00253 void frdiServerHostRecieve(
00254     frdi_server_app *self,
00255     frdi_connection *connection,
00256     frdi_message *message);
00257 
00260 void frdiServerClientMessageSend(
00261     frdi_server_app *self,
00262     frdi_server_client *client,
00263     frdi_message *message);
00264 
00267 void frdiServerHostMessageSend(
00268     frdi_server_app *self,
00269     frdi_server_host *host,
00270     frdi_message *message);
00271 
00274 char *frdiServerClientDisplay(frdi_server_app *self, frdi_server_client *client);
00275 
00278 char *frdiServerHostDisplay(frdi_server_app *self, frdi_server_host *host);
00279 
00280 
00281 // ########################################
00282 //
00283 //    frdi_server_messages.c
00284 //
00285 // ########################################
00286 
00289 void frdiServerClientMessageRecieve(
00290     frdi_server_app *self,
00291     frdi_server_host *host,
00292     frdi_server_client *client,
00293     frdi_message *message);
00294 
00297 void *frdiServerHostMessageRecieve(
00298     frdi_server_app *self,
00299     frdi_server_host *host,
00300     frdi_message *message);
00301 
00304 void frdiServerHostMsU(
00305     frdi_server_app *self,
00306     frdi_server_host *host,
00307     frdi_message *old_message);
00308     
00311 void frdiServerClientMsU(
00312     frdi_server_app *self,
00313     frdi_server_client *client,
00314     frdi_message *old_message);
00315     
00318 void frdiServerTellClientStop(frdi_server_app *self, frdi_server_client *client);
00319 
00322 void frdiServerTellHostStop(frdi_server_app *self, frdi_server_host *host);
00323 
00326 void frdiServerTellAllStop(frdi_server_app *self);
00327 
00330 void frdiServerTellAllStopped(frdi_server_app *self);
00331 
00332 // ########################################
00333 //
00334 //    frdi_server_cmr.c   (client message receive)
00335 //
00336 // ########################################
00337 
00338 
00341 void frdiServerGameSendClient(
00342     frdi_server_app *self,
00343     frdi_server_game *game,
00344     frdi_server_client *client,
00345     char *str);
00346 
00349 void frdiServerGameSendClients(
00350     frdi_server_app *self,
00351     frdi_server_game *game,
00352     char *str);
00353 
00356 void frdiServerClientMrD(
00357     frdi_server_app *self,
00358     frdi_server_host *host,
00359     frdi_server_client *client,
00360     frdi_message *message);
00361 
00364 void frdiServerClientMrG(
00365     frdi_server_app *self,
00366     frdi_server_host *host,
00367     frdi_server_client *client,
00368     frdi_message *message);
00369 
00372 void frdiServerClientMrK(
00373     frdi_server_app *self,
00374     frdi_server_host *host,
00375     frdi_server_client *client,
00376     frdi_message *message);
00377 
00380 void frdiServerClientMrL(
00381     frdi_server_app *self,
00382     frdi_server_host *host,
00383     frdi_server_client *client,
00384     frdi_message *message);
00385 
00388 void frdiServerClientMrM(
00389     frdi_server_app *self,
00390     frdi_server_host *host,
00391     frdi_server_client *client,
00392     frdi_message *message);
00393 
00396 void frdiServerClientMrR(
00397     frdi_server_app *self,
00398     frdi_server_host *host,
00399     frdi_server_client *client,
00400     frdi_message *message);
00401 
00404 void frdiServerClientMrU(
00405     frdi_server_app *self,
00406     frdi_server_host *host,
00407     frdi_server_client *client,
00408     frdi_message *message);
00409 
00412 void frdiServerClientMrV(
00413     frdi_server_app *self,
00414     frdi_server_host *host,
00415     frdi_server_client *client,
00416     frdi_message *message);
00417 
00420 void frdiServerClientMrE(
00421     frdi_server_app *self,
00422     frdi_server_host *host,
00423     frdi_server_client *client,
00424     frdi_message *message,
00425     char c);
00426 
00429 void frdiServerGameSendUsers(
00430     frdi_server_app *self,
00431     frdi_server_game *game,
00432     frdi_list *user_list,
00433     char *str);
00434 
00437 frdi_server_host *frdiServerHostFromGameId(frdi_server_app *self, frdi_server_client *client, char *game_id);
00438 
00439 
00440 // ########################################
00441 //
00442 //    frdi_server_hmr.c   (host message receive)
00443 //
00444 // ########################################
00445 
00448 void frdiServerGameSendHost(
00449     frdi_server_app *self,
00450     frdi_server_game *game,
00451     char *str);
00452 
00455 void frdiServerHostMrD(
00456     frdi_server_app *self,
00457     frdi_server_host *host,
00458     frdi_message *message);
00459 
00462 void frdiServerHostMrF(
00463     frdi_server_app *self,
00464     frdi_server_host *host,
00465     frdi_message *message);
00466 
00469 void frdiServerHostMrG(
00470     frdi_server_app *self,
00471     frdi_server_host *host,
00472     frdi_message *message);
00473 
00476 void frdiServerHostMrK(
00477     frdi_server_app *self,
00478     frdi_server_host *host,
00479     frdi_message *message);
00480 
00483 void frdiServerHostMrL(
00484     frdi_server_app *self,
00485     frdi_server_host *host,
00486     frdi_message *message);
00487 
00490 void frdiServerHostMrR(
00491     frdi_server_app *self,
00492     frdi_server_host *host,
00493     frdi_message *message);
00494 
00497 void frdiServerHostMrU(
00498     frdi_server_app *self,
00499     frdi_server_host *host,
00500     frdi_message *message);
00501 
00504 void frdiServerHostMrE(
00505     frdi_server_app *self,
00506     frdi_server_host *host,
00507     frdi_message *message,
00508     char c);
00509 
00510 // ########################################
00511 //
00512 //    frdi_server_game.c
00513 //
00514 // ########################################
00515 
00518 char *frdiServerGameReport(frdi_server_app *self, frdi_server_game *game);
00519 
00522 void frdiServerGameInitialiseSeed(frdi_server_app *self, frdi_server_game *game);
00523 
00526 void frdiServerGameInitialiseInput(frdi_server_app *self, frdi_server_game *game);
00527 
00530 void frdiServerGameReceiveClient(frdi_server_app *self, frdi_server_game *game, frdi_server_client *client, char *str);
00531 
00534 void frdiServerGameReceiveHost(frdi_server_app *self, frdi_server_game *game, char *str);
00535 
00538 frdi_server_game *frdiServerGameNew(frdi_server_app *self, char *game_id);
00539 
00542 void frdiServerGameLog(frdi_server_app *self, frdi_server_game *game, char *str);
00543 
00546 void frdiServerGameFinish(frdi_server_app *self, frdi_server_game *game);
00547 
00550 char *frdiServerGameDescribe(frdi_server_app *self, frdi_server_game *game);
00551 
00554 void frdiServerGameRegisterDigest(frdi_server_app *self, frdi_server_game *game, char *user_id, char *digest);
00555 
00558 int frdiServerGameIsAllowed(frdi_server_app *self, frdi_server_game *game, char *prefix);
00559 
00568 void frdiServerGameSetGameStage(frdi_server_app *self, frdi_server_game *game, int stage);
00569 
00579 void frdiServerGameSetUserStatus(frdi_server_app *self, frdi_server_game *game,
00580                                  frdi_server_client *client, int status);
00581 
00584 frdi_server_client *frdiServerGameClientFromName(frdi_server_app *self, frdi_server_game *game, char *name);
00585 
00588 void frdiServerGameCheckReadyForOutcome(frdi_server_app *self, frdi_server_game *game);
00589 
00590 
00593 char *frdiServerGameUseridFromClient(frdi_server_app *self, frdi_server_game *game, frdi_server_client *client);
00594 
00597 void frdiGameAnnounceOutcomeToHost(frdi_server_app *self, frdi_server_game *game);
00598 
00601 frdi_server_user *frdiServerUserNew(frdi_server_app *self);
00602 
00605 frdi_server_user *frdiServerUserGetFromId(frdi_server_game *game, char *user_id);
00606 
00609 frdi_server_user *frdiServerUserGetFromClient(frdi_server_game *game, frdi_server_client *client);
00610 
00613 frdi_list *frdiServerUserListMatchStatus(frdi_server_game *game, int status);
00614 
00617 char *frdiServerUserDescribe(frdi_server_app *self, frdi_server_user *user);
00618 
00619 
00620 // ########################################
00621 //
00622 //    frdi_server_link.c
00623 //
00624 // ########################################
00625 
00628 void frdiServerEncryptionMode(
00629     frdi_server_app *self,
00630     frdi_server_host *host,
00631     frdi_server_client *client,
00632     char *str);
00633 
00636 void frdiServerAuthenticationMode(
00637     frdi_server_app *self,
00638     frdi_server_host *host,
00639     frdi_server_client *client,
00640     char *str);
00641 
00644 void frdiServerAuthenticationTypePass(
00645     frdi_server_app *self,
00646     frdi_server_host *host,
00647     frdi_server_client *client,
00648     char *str);
00649 
00652 void frdiServerAuthenticationType(
00653     frdi_server_app *self,
00654     frdi_server_host *host,
00655     frdi_server_client *client,
00656     char *str);
00657 
00660 void frdiServerEncodingMode(
00661     frdi_server_app *self,
00662     frdi_server_host *host,
00663     frdi_server_client *client,
00664     char *str);
00665 
00666 #endif /* _FRDI_SERVER_H */
00667 
00668 /* End of File */

Generated on Wed Aug 18 13:23:46 2004 for Project Fairdice by doxygen1.2.18