1 | /* |
1 | /* |
2 | * Copyright © 2005 William Pitcock, et al. |
2 | * Copyright © 2005 William Pitcock, et al. |
3 | * Rights to this code are as documented in doc/pod/license.pod. |
3 | * Rights to this code are as documented in doc/pod/license.pod. |
4 | * |
4 | * |
5 | * Protocol module stuff. |
5 | * Protocol module stuff. |
6 | * Modules usually do not need this. |
6 | * Modules usually do not need this. |
7 | * |
7 | * |
8 | * $Id: pmodule.h,v 1.2 2007/07/21 01:29:07 pippijn Exp $ |
8 | * $Id: pmodule.h,v 1.3 2007/08/28 17:08:07 pippijn Exp $ |
9 | */ |
9 | */ |
10 | |
10 | |
11 | #ifndef PMODULE_H |
11 | #ifndef PMODULE_H |
12 | #define PMODULE_H |
12 | #define PMODULE_H |
13 | |
13 | |
14 | struct pcommand_t |
14 | struct pcommand_t |
15 | { |
15 | { |
16 | char *token; |
16 | char const *token; |
17 | void (*handler) (sourceinfo_t *si, int parc, char *parv[]); |
17 | void (*handler) (sourceinfo_t *si, int parc, char *parv[]); |
18 | int minparc; |
18 | int minparc; |
19 | int sourcetype; |
19 | int sourcetype; |
20 | }; |
20 | }; |
21 | |
21 | |
… | |
… | |
24 | #define MSRC_USER 2 /* from users */ |
24 | #define MSRC_USER 2 /* from users */ |
25 | #define MSRC_SERVER 4 /* from servers */ |
25 | #define MSRC_SERVER 4 /* from servers */ |
26 | |
26 | |
27 | #define MAXPARC 35 /* max # params to protocol command */ |
27 | #define MAXPARC 35 /* max # params to protocol command */ |
28 | |
28 | |
29 | /* pmodule.c */ |
29 | E void pcommand_add (pcommand_t const &pcmd); |
30 | E BlockHeap *pcommand_heap; |
30 | E void pcommand_delete (pcommand_t const &pcmd); |
31 | E BlockHeap *messagetree_heap; |
31 | E pcommand_t const *pcommand_find (char const * const token); |
32 | E dictionary_tree_t *pcommands; |
|
|
33 | |
32 | |
34 | E bool pmodule_loaded; |
33 | template<int N> |
|
|
34 | inline void |
|
|
35 | pcommand_add (pcommand_t const (*pcmd)[N]) |
|
|
36 | { |
|
|
37 | for (int i = 0; i < N; i++) |
|
|
38 | pcommand_add ((*pcmd)[i]); |
|
|
39 | } |
35 | |
40 | |
36 | E void pcommand_init (void); |
41 | template<int N> |
37 | E void pcommand_add (char *token, void (*handler) (sourceinfo_t *si, int parc, char *parv[]), int minparc, int sourcetype); |
42 | inline void |
38 | E void pcommand_delete (char *token); |
43 | pcommand_delete (pcommand_t const (*pcmd)[N]) |
39 | E pcommand_t *pcommand_find (char *token); |
44 | { |
|
|
45 | for (int i = 0; i < N; i++) |
|
|
46 | pcommand_delete ((*pcmd)[i]); |
|
|
47 | } |
40 | |
48 | |
41 | /* ptasks.c */ |
49 | /* ptasks.c */ |
42 | E void handle_version (user_t *); |
50 | E void handle_version (user_t *u); |
43 | E void handle_admin (user_t *); |
51 | E void handle_admin (user_t *u); |
44 | E void handle_info (user_t *); |
52 | E void handle_info (user_t *u); |
45 | E void handle_stats (user_t *, char); |
53 | E void handle_stats (user_t *u, char req); |
46 | E void handle_whois (user_t *, char *); |
54 | E void handle_whois (user_t *u, char *target); |
47 | E void handle_trace (user_t *, char *, char *); |
55 | E void handle_trace (user_t *u, char *target, char *dest); |
48 | E void handle_motd (user_t *); |
56 | E void handle_motd (user_t *u); |
49 | E void handle_away (user_t *, const char *); |
57 | E void handle_away (user_t *u, char const * const message); |
50 | E void handle_message (sourceinfo_t *, char *, bool, char *); |
58 | E void handle_message (sourceinfo_t *si, char *target, bool is_notice, char *message); |
51 | E void handle_topic_from (sourceinfo_t *, channel_t *, char *, time_t, char *); |
59 | E void handle_topic_from (sourceinfo_t *si, channel_t *c, char const * const setter, time_t ts, char const * const topic); |
|
|
60 | // This is in services.h |
|
|
61 | //E void handle_topic (channel_t *c, char *setter, time_t ts, char *topic); |
52 | E void handle_kill (sourceinfo_t *, char *, char const *); |
62 | E void handle_kill (sourceinfo_t *si, char *victim, char const *reason); |
53 | E server_t *handle_server (sourceinfo_t *, const char *, const char *, int, const char *); |
63 | E server_t *handle_server (sourceinfo_t *si, char const * const name, char const * const sid, int hops, char const * const desc); |
54 | E void handle_eob (server_t *); |
64 | E void handle_eob (server_t *s); |
55 | E bool should_reg_umode (user_t *); |
65 | E bool should_reg_umode (user_t *u); |
56 | |
66 | |
57 | /* services.c */ |
67 | /* services.c */ |
58 | E void services_init (void); |
68 | E void services_init (void); |
59 | E void reintroduce_user (user_t *u); |
69 | E void reintroduce_user (user_t *u); |
60 | E void handle_nickchange (user_t *u); |
70 | E void handle_nickchange (user_t *u); |