/*
- idlist.h
+ idlist.h
- Author: Pekka Riikonen <priikone@poseidon.pspt.fi>
+ Author: Pekka Riikonen <priikone@silcnet.org>
- Copyright (C) 1997 - 2000 Pekka Riikonen
+ Copyright (C) 2001 - 2002 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
#ifndef IDLIST_H
#define IDLIST_H
-/* Client entry context. When client receives information about new client
- (it receives its ID, for example, by IDENTIFY request) we create new
- client entry. This entry also includes the private message keys if
- they are used. */
-typedef struct SilcClientEntryStruct {
- char *nickname;
- char *server;
- unsigned int num;
- SilcClientID *id;
-
- /* Keys, these are defined if private message key has been defined
- with the remote client. */
- SilcCipher send_key;
- SilcCipher receive_key;
-} SilcClientEntryObject;
-
-typedef SilcClientEntryObject *SilcClientEntry;
-
-/* Channel entry context. This is allocate for every channel client has
- joined to. This includes for example the channel specific keys */
-/* XXX channel_key is the server generated key. Later this context must
- include the channel private key. */
-typedef struct SilcChannelEntryStruct {
- char *channel_name;
- SilcChannelID *id;
- unsigned int mode;
- int on_channel;
-
- /* Channel keys */
- SilcCipher channel_key;
- unsigned char *key;
- unsigned int key_len;
- unsigned char iv[SILC_CIPHER_MAX_IV_SIZE];
-} SilcChannelEntryObject;
-
-typedef SilcChannelEntryObject *SilcChannelEntry;
-
-/* Prototypes */
+/* Prototypes. These are used only by the library. Application should not
+ call these directly. */
+SilcClientEntry
+silc_client_add_client(SilcClient client, SilcClientConnection conn,
+ char *nickname, char *username,
+ char *userinfo, SilcClientID *id, SilcUInt32 mode);
+void silc_client_update_client(SilcClient client,
+ SilcClientConnection conn,
+ SilcClientEntry client_entry,
+ const char *nickname,
+ const char *username,
+ const char *userinfo,
+ SilcUInt32 mode);
+void silc_client_del_client_entry(SilcClient client,
+ SilcClientConnection conn,
+ SilcClientEntry client_entry);
SilcClientEntry silc_idlist_get_client(SilcClient client,
SilcClientConnection conn,
- char *nickname,
- char *server,
- unsigned int num);
-SilcChannelEntry silc_idlist_get_channel(SilcClient client,
+ const char *nickname,
+ const char *format,
+ SilcBool query);
+SilcChannelEntry silc_client_add_channel(SilcClient client,
SilcClientConnection conn,
- char *channel);
+ const char *channel_name,
+ SilcUInt32 mode,
+ SilcChannelID *channel_id);
+SilcServerEntry silc_client_add_server(SilcClient client,
+ SilcClientConnection conn,
+ const char *server_name,
+ const char *server_info,
+ SilcServerID *server_id);
+void silc_client_update_server(SilcClient client,
+ SilcClientConnection conn,
+ SilcServerEntry server_entry,
+ const char *server_name,
+ const char *server_info);
+SilcBool silc_client_replace_channel_id(SilcClient client,
+ SilcClientConnection conn,
+ SilcChannelEntry channel,
+ SilcChannelID *new_id);
+void silc_client_nickname_format(SilcClient client,
+ SilcClientConnection conn,
+ SilcClientEntry client_entry);
#endif