X-Git-Url: http://git.silcnet.org/gitweb/?a=blobdiff_plain;f=lib%2Fsilcclient%2Fcommand.h;h=c6c597de1cb49f038bb03bc0ca96935819c0fb00;hb=c257b555225193e54d85daf541d29578b3c93882;hp=46fb36509bc830781800e32bae61be9ad425e17f;hpb=31b9c6e9ceffe13a84659d337e35f7a5960ac6d9;p=silc.git diff --git a/lib/silcclient/command.h b/lib/silcclient/command.h index 46fb3650..c6c597de 100644 --- a/lib/silcclient/command.h +++ b/lib/silcclient/command.h @@ -1,6 +1,6 @@ /* - command.h + command.h Author: Pekka Riikonen @@ -36,7 +36,7 @@ struct SilcClientCommandStruct { SilcCommandCb reply; /* Command reply callback */ char *name; /* Name of the command (optional) */ SilcUInt8 max_args; /* Maximum arguments (optional) */ - SilcUInt16 ident; /* Identifier for command (optional) */ + SilcUInt16 ident; /* Identifier for command (optional) */ struct SilcClientCommandStruct *next; }; @@ -60,9 +60,10 @@ struct SilcClientCommandContextStruct { executed after command reply has been executed. */ typedef struct SilcClientCommandPendingStruct { SilcCommand reply_cmd; + SilcUInt16 ident; + unsigned int reply_check : 8; SilcCommandCb callback; void *context; - SilcUInt16 ident; struct SilcClientCommandPendingStruct *next; } SilcClientCommandPending; @@ -96,6 +97,11 @@ do { \ silc_client_command_pending_del(ctx->sock->user_data, cmd, ctx->ident); \ } while(0) +SilcClientCommandContext silc_client_command_alloc(void); +void silc_client_command_free(SilcClientCommandContext ctx); +SilcClientCommandContext silc_client_command_dup(SilcClientCommandContext ctx); +SilcClientCommand silc_client_command_find(SilcClient client, + const char *name); bool silc_client_command_register(SilcClient client, SilcCommand command, const char *name, @@ -116,9 +122,12 @@ void silc_client_command_pending_del(SilcClientConnection conn, SilcClientCommandPendingCallbacks silc_client_command_pending_check(SilcClientConnection conn, SilcClientCommandReplyContext ctx, - SilcCommand command, + SilcCommand command, SilcUInt16 ident, SilcUInt32 *callbacks_count); +void silc_client_command_process(SilcClient client, + SilcSocketConnection sock, + SilcPacketContext *packet); SILC_CLIENT_CMD_FUNC(whois); SILC_CLIENT_CMD_FUNC(whowas); SILC_CLIENT_CMD_FUNC(identify); @@ -139,6 +148,7 @@ SILC_CLIENT_CMD_FUNC(cumode); SILC_CLIENT_CMD_FUNC(kick); SILC_CLIENT_CMD_FUNC(ban); SILC_CLIENT_CMD_FUNC(detach); +SILC_CLIENT_CMD_FUNC(watch); SILC_CLIENT_CMD_FUNC(silcoper); SILC_CLIENT_CMD_FUNC(leave); SILC_CLIENT_CMD_FUNC(users);