* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
* USA
- *
- * $Id: msg.h 6 2005-09-10 01:02:21Z nenolod $
*/
#ifndef INCLUDED_msg_h
#define INCLUDED_msg_h
-#include "config.h"
+#include "defaults.h"
+#include "msgbuf.h"
struct Client;
}
HandlerType;
-/* struct Client* client_p - connection message originated from
+/* struct MsgBuf* msgbuf_p - message buffer (including tags)
+ * struct Client* client_p - connection message originated from
* struct Client* source_p - source of message, may be different from client_p
- * int parc - parameter count
- * char* parv[] - parameter vector
+ * int parc - parameter count (from msgbuf_p)
+ * char* parv[] - parameter vector (from msgbuf_p)
*/
-typedef int (*MessageHandler) (struct Client *, struct Client *, int, const char *[]);
+typedef void (*MessageHandler) (struct MsgBuf *, struct Client *, struct Client *, int, const char *[]);
struct MessageEntry
{
MessageHandler handler;
- int min_para;
+ size_t min_para;
};
/* Message table structure */
struct Message
{
- char *cmd;
+ const char *cmd;
unsigned int count; /* number of times command used */
unsigned int rcount; /* number of times command used by server */
unsigned long bytes; /* bytes received for this message */
- unsigned int flags; /* bit 0 set means that this command is allowed
- * to be used only on the average of once per 2
- * seconds -SRB
- */
+ unsigned int flags;
+
/* handlers:
* UNREGISTERED, CLIENT, RCLIENT, SERVER, OPER, LAST
*/
struct MessageEntry handlers[LAST_HANDLER_TYPE];
};
-#define MFLG_SLOW 0x01 /* executed roughly once per 2s */
-#define MFLG_UNREG 0x02 /* available to unregistered clients */
-
-#define MAXPARA 15
-
/* generic handlers */
-extern int m_ignore(struct Client *, struct Client *, int, const char **);
-extern int m_not_oper(struct Client *, struct Client *, int, const char **);
-extern int m_registered(struct Client *, struct Client *, int, const char **);
-extern int m_unregistered(struct Client *, struct Client *, int, const char **);
+extern void m_ignore(struct MsgBuf *, struct Client *, struct Client *, int, const char **);
+extern void m_not_oper(struct MsgBuf *, struct Client *, struct Client *, int, const char **);
+extern void m_registered(struct MsgBuf *, struct Client *, struct Client *, int, const char **);
+extern void m_unregistered(struct MsgBuf *, struct Client *, struct Client *, int, const char **);
#define mg_ignore { m_ignore, 0 }
#define mg_not_oper { m_not_oper, 0 }
/*
* m_functions execute protocol messages on this server:
- * int m_func(struct Client* client_p, struct Client* source_p, int parc, char* parv[]);
+ * void m_func(struct MsgBuf *, struct Client* client_p, struct Client* source_p, int parc, char* parv[]);
*
* client_p is always NON-NULL, pointing to a *LOCAL* client
* structure (with an open socket connected!). This
*
* parv a NULL terminated list of parameter pointers,
*
- * parv[0], sender (prefix string), if not present
- * this points to an empty string.
+ * parv[0], unused for historical reasons (formerly
+ * sender name)
* parv[1]...parv[parc-1]
* pointers to additional parameters
* parv[parc] == NULL, *always*
*
- * note: it is guaranteed that parv[0]..parv[parc-1] are all
+ * note: it is guaranteed that parv[1]..parv[parc-1] are all
* non-NULL pointers.
*/