The SILC Project

source navigation ]
identifier search ]
freetext search ]
file search ]

silc/lib/silccore/silcnotify.h

  1 /*
  2 
  3   silcnotify.h
  4 
  5   Author: Pekka Riikonen <priikone@silcnet.org>
  6 
  7   Copyright (C) 1997 - 2006 Pekka Riikonen
  8 
  9   This program is free software; you can redistribute it and/or modify
 10   it under the terms of the GNU General Public License as published by
 11   the Free Software Foundation; version 2 of the License.
 12 
 13   This program is distributed in the hope that it will be useful,
 14   but WITHOUT ANY WARRANTY; without even the implied warranty of
 15   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 16   GNU General Public License for more details.
 17 
 18 */
 19 
 20 /****h* silccore/SILC Notify Interface
 21  *
 22  * DESCRIPTION
 23  *
 24  * Implementation of the Notify Payload. Notify Payload is used usually
 25  * by servers to send different kind of important notify messages to other
 26  * servers and to clients.
 27  *
 28  ***/
 29 
 30 #ifndef SILCNOTIFY_H
 31 #define SILCNOTIFY_H
 32 
 33 /****s* silccore/SilcNotifyAPI/SilcNotifyPayload
 34  *
 35  * NAME
 36  *
 37  *    typedef struct SilcNotifyPayloadStruct *SilcNotifyPayload;
 38  *
 39  * DESCRIPTION
 40  *
 41  *    This context is the actual Notify Payload and is allocated
 42  *    by silc_notify_payload_parse and given as argument usually to
 43  *    all silc_notify_payload_* functions.  It is freed by the
 44  *    silc_notify_payload_free function.
 45  *
 46  ***/
 47 typedef struct SilcNotifyPayloadStruct *SilcNotifyPayload;
 48 
 49 /****d* silccore/SilcNotifyAPI/SilcNotifyType
 50  *
 51  * NAME
 52  *
 53  *    typedef SilcUInt16 SilcNotifyType;
 54  *
 55  * DESCRIPTION
 56  *
 57  *    The notify type definition and all of the notify types.
 58  *
 59  * SOURCE
 60  */
 61 typedef SilcUInt16 SilcNotifyType;
 62 
 63 /* SILC notify types. Server may send these notify types to client to
 64    notify of some action. */
 65 #define SILC_NOTIFY_TYPE_NONE            0  /* no specific type */
 66 #define SILC_NOTIFY_TYPE_INVITE          1  /* invites/invite list change */
 67 #define SILC_NOTIFY_TYPE_JOIN            2  /* "has joined channel" */
 68 #define SILC_NOTIFY_TYPE_LEAVE           3  /* "has left channel" */
 69 #define SILC_NOTIFY_TYPE_SIGNOFF         4  /* "signoff" */
 70 #define SILC_NOTIFY_TYPE_TOPIC_SET       5  /* "topic has been changed" */
 71 #define SILC_NOTIFY_TYPE_NICK_CHANGE     6  /* "has changed nickname" */
 72 #define SILC_NOTIFY_TYPE_CMODE_CHANGE    7  /* "has changed channel mode" */
 73 #define SILC_NOTIFY_TYPE_CUMODE_CHANGE   8  /* "has change mode" */
 74 #define SILC_NOTIFY_TYPE_MOTD            9  /* message of the day */
 75 #define SILC_NOTIFY_TYPE_CHANNEL_CHANGE  10 /* Channel's ID has changed */
 76 #define SILC_NOTIFY_TYPE_SERVER_SIGNOFF  11 /* Server quitting SILC */
 77 #define SILC_NOTIFY_TYPE_KICKED          12 /* Kicked from channel */
 78 #define SILC_NOTIFY_TYPE_KILLED          13 /* Killed from the network */
 79 #define SILC_NOTIFY_TYPE_UMODE_CHANGE    14 /* user mode was changed */
 80 #define SILC_NOTIFY_TYPE_BAN             15 /* ban list change */
 81 #define SILC_NOTIFY_TYPE_ERROR           16 /* error notify */
 82 #define SILC_NOTIFY_TYPE_WATCH           17 /* watch notify */
 83 /***/
 84 
 85 /* Prototypes */
 86 
 87 /****f* silccore/SilcNotifyAPI/silc_notify_payload_parse
 88  *
 89  * SYNOPSIS
 90  *
 91  *    SilcNotifyPayload
 92  *    silc_notify_payload_parse(const unsigned char *payload,
 93  *                              SilcUInt32 payload_len);
 94  *
 95  * DESCRIPTION
 96  *
 97  *    Parse notify payload buffer and return data into payload structure.
 98  *    The `buffer' is the raw payload data.
 99  *
100  ***/
101 SilcNotifyPayload silc_notify_payload_parse(const unsigned char *payload,
102                                             SilcUInt32 payload_len);
103 
104 /****f* silccore/SilcNotifyAPI/silc_notify_payload_encode
105  *
106  * SYNOPSIS
107  *
108  *    SilcBuffer silc_notify_payload_encode(SilcNotifyType type,
109  *                                          SilcUInt32 argc,
110  *                                          va_list ap);
111  *
112  * DESCRIPTION
113  *
114  *    Encode notify payload with variable argument list. If `argc' is > 0
115  *    argument payloads will be associated to the notify payload. Variable
116  *    arguments must be {unsigned char *, SilcUInt32 (len)}.
117  *
118  ***/
119 SilcBuffer silc_notify_payload_encode(SilcNotifyType type, SilcUInt32 argc,
120                                       va_list ap);
121 
122 /****f* silccore/SilcNotifyAPI/silc_notify_payload_encode_args
123  *
124  * SYNOPSIS
125  *
126  *    SilcBuffer silc_notify_payload_encode_args(SilcNotifyType type,
127  *                                               SilcUInt32 argc,
128  *                                               SilcBuffer args);
129  *
130  * DESCRIPTION
131  *
132  *    Same as silc_notify_payload_encode but takes arguments from the `args'
133  *    encoded Argument Payload buffer.
134  *
135  ***/
136 SilcBuffer silc_notify_payload_encode_args(SilcNotifyType type,
137                                            SilcUInt32 argc,
138                                            SilcBuffer args);
139 
140 /****f* silccore/SilcNotifyAPI/silc_notify_payload_free
141  *
142  * SYNOPSIS
143  *
144  *    void silc_notify_payload_free(SilcNotifyPayload payload);
145  *
146  * DESCRIPTION
147  *
148  *    Frees the Notify Payload and all data in it.
149  *
150  ***/
151 void silc_notify_payload_free(SilcNotifyPayload payload);
152 
153 /****f* silccore/SilcNotifyAPI/silc_notify_get_type
154  *
155  * SYNOPSIS
156  *
157  *    SilcNotifyType silc_notify_get_type(SilcNotifyPayload payload);
158  *
159  * DESCRIPTION
160  *
161  *    Return the notify type from the payload.
162  *
163  ***/
164 SilcNotifyType silc_notify_get_type(SilcNotifyPayload payload);
165 
166 /****f* silccore/SilcNotifyAPI/silc_notify_get_arg_num
167  *
168  * SYNOPSIS
169  *
170  *    SilcUInt32 silc_notify_get_arg_num(SilcNotifyPayload payload);
171  *
172  * DESCRIPTION
173  *
174  *    Return the number of the arguments associated with the Notify Payload.
175  *
176  ***/
177 SilcUInt32 silc_notify_get_arg_num(SilcNotifyPayload payload);
178 
179 /****f* silccore/SilcNotifyAPI/silc_notify_get_args
180  *
181  * SYNOPSIS
182  *
183  *    SilcArgumentPayload silc_notify_get_args(SilcNotifyPayload payload);
184  *
185  * DESCRIPTION
186  *
187  *    Return the Argument Payload containing the arguments from the
188  *    Notify Payload. The caller must not free it.
189  *
190  ***/
191 SilcArgumentPayload silc_notify_get_args(SilcNotifyPayload payload);
192 
193 #endif
194 

This page was automatically generated by the LXR engine.
Free-text search provided by Glimpse