X-Git-Url: http://git.silcnet.org/gitweb/?a=blobdiff_plain;f=lib%2Fsilcclient%2Fcommand.h;h=0b8949e15132da54cb230e7e20face8ce73f0354;hb=a818c5b5411bbc4436d1c5f011236985c96bb787;hp=6b8bd6266eefacb18e5a1ca54688dcee5c57b431;hpb=6394d86063413bc1c473723f3ef971840195bcd3;p=silc.git diff --git a/lib/silcclient/command.h b/lib/silcclient/command.h index 6b8bd626..0b8949e1 100644 --- a/lib/silcclient/command.h +++ b/lib/silcclient/command.h @@ -20,11 +20,6 @@ #ifndef COMMAND_H #define COMMAND_H -/* Forward declarations */ -typedef struct SilcClientCommandStruct *SilcClientCommand; -typedef struct SilcClientCommandContextStruct *SilcClientCommandContext; - -#include "silcapi.h" #include "command_reply.h" /* Structure holding one command and pointer to its function. This @@ -40,8 +35,8 @@ struct SilcClientCommandStruct { SilcCommandCb command; /* Command function */ SilcCommandCb reply; /* Command reply callback */ char *name; /* Name of the command (optional) */ - uint8 max_args; /* Maximum arguments (optional) */ - uint16 ident; /* Identifier for command (optional) */ + SilcUInt8 max_args; /* Maximum arguments (optional) */ + SilcUInt16 ident; /* Identifier for command (optional) */ struct SilcClientCommandStruct *next; }; @@ -53,10 +48,10 @@ struct SilcClientCommandContextStruct { SilcClient client; SilcClientConnection conn; SilcClientCommand command; - uint32 argc; + SilcUInt32 argc; unsigned char **argv; - uint32 *argv_lens; - uint32 *argv_types; + SilcUInt32 *argv_lens; + SilcUInt32 *argv_types; int pending; /* Command is being re-processed when TRUE */ int users; /* Reference counter */ }; @@ -66,9 +61,8 @@ struct SilcClientCommandContextStruct { typedef struct SilcClientCommandPendingStruct { SilcCommand reply_cmd; SilcCommandCb callback; - SilcClientPendingDestructor destructor; void *context; - uint16 ident; + SilcUInt16 ident; struct SilcClientCommandPendingStruct *next; } SilcClientCommandPending; @@ -93,19 +87,12 @@ silc_client_command_unregister(client, SILC_COMMAND_##cmd, \ void silc_client_command_##func(void *context, void *context2) /* Executed pending command callback */ -#define SILC_CLIENT_PENDING_EXEC(ctx, cmd) \ -do { \ - if ((ctx)->callback) \ - (*ctx->callback)(ctx->context, ctx); \ -} while(0) - -/* Execute destructor for pending command */ -#define SILC_CLIENT_PENDING_DESTRUCTOR(ctx, cmd) \ +#define SILC_CLIENT_PENDING_EXEC(ctx, cmd) \ do { \ + if ((ctx)->callback) \ + (*ctx->callback)(ctx->context, ctx); \ silc_client_command_pending_del((ctx)->sock->user_data, (cmd), \ (ctx)->ident); \ - if (ctx->destructor) \ - (*ctx->destructor)(ctx->context); \ } while(0) bool silc_client_command_register(SilcClient client, @@ -113,22 +100,22 @@ bool silc_client_command_register(SilcClient client, const char *name, SilcCommandCb command_function, SilcCommandCb command_reply_function, - uint8 max_args, - uint16 ident); + SilcUInt8 max_args, + SilcUInt16 ident); bool silc_client_command_unregister(SilcClient client, SilcCommand command, SilcCommandCb command_function, SilcCommandCb command_reply_function, - uint16 ident); + SilcUInt16 ident); void silc_client_commands_register(SilcClient client); void silc_client_commands_unregister(SilcClient client); void silc_client_command_pending_del(SilcClientConnection conn, SilcCommand reply_cmd, - uint16 ident); + SilcUInt16 ident); int silc_client_command_pending_check(SilcClientConnection conn, SilcClientCommandReplyContext ctx, SilcCommand command, - uint16 ident); + SilcUInt16 ident); SILC_CLIENT_CMD_FUNC(whois); SILC_CLIENT_CMD_FUNC(whowas);