X-Git-Url: http://git.silcnet.org/gitweb/?a=blobdiff_plain;f=lib%2Fsilcclient%2Fcommand_reply.h;h=4e5cdbee8178e133c15d7940dfd7c73306bedb3e;hb=a818c5b5411bbc4436d1c5f011236985c96bb787;hp=76bddc1a0a8afa8c4fa0693189d8448d43e6baa1;hpb=bb1973faaa81ead23b3d5e05b45cddd8a47d51f7;p=silc.git diff --git a/lib/silcclient/command_reply.h b/lib/silcclient/command_reply.h index 76bddc1a..4e5cdbee 100644 --- a/lib/silcclient/command_reply.h +++ b/lib/silcclient/command_reply.h @@ -1,16 +1,15 @@ /* - command_reply.h + command_reply.h - Author: Pekka Riikonen + Author: Pekka Riikonen - Copyright (C) 1997 - 2000 Pekka Riikonen + Copyright (C) 1997 - 2001 Pekka Riikonen This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - + the Free Software Foundation; version 2 of the License. + This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the @@ -27,11 +26,8 @@ typedef struct { SilcCommand cmd; } SilcClientCommandReply; -/* All client command replys */ -extern SilcClientCommandReply silc_command_reply_list[]; - /* Context sent as argument to all command reply functions */ -typedef struct { +struct SilcClientCommandReplyContextStruct { SilcClient client; SilcSocketConnection sock; SilcCommandPayload payload; @@ -39,41 +35,33 @@ typedef struct { SilcPacketContext *packet; /* If defined this executes the pending command. */ + SilcCommandCb callback; void *context; - SilcClientCommandCallback callback; -} *SilcClientCommandReplyContext; + SilcUInt16 ident; +}; /* Macros */ -/* Macro used for command declaration in command reply list structure */ -#define SILC_CLIENT_CMD_REPLY(func, cmd ) \ -{ silc_client_command_reply_##func, SILC_COMMAND_##cmd } - /* Macro used to declare command reply functions */ -#define SILC_CLIENT_CMD_REPLY_FUNC(func) \ -void silc_client_command_reply_##func(void *context) - -/* Macro used to execute command replies */ -#define SILC_CLIENT_COMMAND_REPLY_EXEC(ctx) \ -do { \ - SilcClientCommandReply *cmd; \ - \ - for (cmd = silc_command_reply_list; cmd->cb; cmd++) \ - if (cmd->cmd == silc_command_get(ctx->payload)) { \ - cmd->cb(ctx); \ - break; \ - } \ - \ - if (cmd == NULL) { \ - silc_free(ctx); \ - return; \ - } \ -} while(0) +#define SILC_CLIENT_CMD_REPLY_FUNC(func) \ +void silc_client_command_reply_##func(void *context, void *context2) + +/* Status message structure. Messages are defined below. */ +typedef struct { + SilcCommandStatus status; + char *message; +} SilcCommandStatusMessage; + +/* Status messages returned by the server */ +#define STAT(x) SILC_STATUS_ERR_##x +DLLAPI extern const SilcCommandStatusMessage silc_command_status_messages[]; /* Prototypes */ + void silc_client_command_reply_process(SilcClient client, SilcSocketConnection sock, SilcPacketContext *packet); +char *silc_client_command_status_message(SilcCommandStatus status); SILC_CLIENT_CMD_REPLY_FUNC(whois); SILC_CLIENT_CMD_REPLY_FUNC(whowas); SILC_CLIENT_CMD_REPLY_FUNC(identify); @@ -81,7 +69,6 @@ SILC_CLIENT_CMD_REPLY_FUNC(nick); SILC_CLIENT_CMD_REPLY_FUNC(list); SILC_CLIENT_CMD_REPLY_FUNC(topic); SILC_CLIENT_CMD_REPLY_FUNC(invite); -SILC_CLIENT_CMD_REPLY_FUNC(quit); SILC_CLIENT_CMD_REPLY_FUNC(kill); SILC_CLIENT_CMD_REPLY_FUNC(info); SILC_CLIENT_CMD_REPLY_FUNC(links); @@ -97,11 +84,18 @@ SILC_CLIENT_CMD_REPLY_FUNC(umode); SILC_CLIENT_CMD_REPLY_FUNC(cmode); SILC_CLIENT_CMD_REPLY_FUNC(cumode); SILC_CLIENT_CMD_REPLY_FUNC(kick); -SILC_CLIENT_CMD_REPLY_FUNC(restart); +SILC_CLIENT_CMD_REPLY_FUNC(ban); SILC_CLIENT_CMD_REPLY_FUNC(close); -SILC_CLIENT_CMD_REPLY_FUNC(die); +SILC_CLIENT_CMD_REPLY_FUNC(shutdown); SILC_CLIENT_CMD_REPLY_FUNC(silcoper); SILC_CLIENT_CMD_REPLY_FUNC(leave); -SILC_CLIENT_CMD_REPLY_FUNC(names); +SILC_CLIENT_CMD_REPLY_FUNC(users); +SILC_CLIENT_CMD_REPLY_FUNC(getkey); +SILC_CLIENT_CMD_REPLY_FUNC(quit); + +/* Internal command reply functions */ +SILC_CLIENT_CMD_REPLY_FUNC(whois_i); +SILC_CLIENT_CMD_REPLY_FUNC(identify_i); +SILC_CLIENT_CMD_REPLY_FUNC(info_i); #endif