X-Git-Url: http://git.pk910.de/?a=blobdiff_plain;f=include%2Fsend.h;h=1825e4db2b5a9a98519f15f7bc5766dff8de0130;hb=refs%2Fheads%2Fupstream-ssl;hp=3b719d0b2794806a92bd0822586914b0749067c2;hpb=ae91ef6320f611af74e70a0db2620c338fbaa7d5;p=ircu2.10.12-pk.git diff --git a/include/send.h b/include/send.h index 3b719d0..1825e4d 100644 --- a/include/send.h +++ b/include/send.h @@ -1,7 +1,6 @@ -/* - * send.h - * - * $Id$ +/** @file send.h + * @brief Send messages to certain targets. + * @version $Id$ */ #ifndef INCLUDED_send_h #define INCLUDED_send_h @@ -9,65 +8,116 @@ #include /* va_list */ #define INCLUDED_stdarg_h #endif +#ifndef INCLUDED_time_h +#include /* time_t */ +#define INCLUDED_time_h +#endif struct Channel; struct Client; struct DBuf; - -/* - * Macros - */ - -#define LastDeadComment(cptr) ((cptr)->info) +struct MsgBuf; /* * Prototypes */ +extern struct SLink *opsarray[]; -extern void send_buffer(struct Client* to, char* buf); -extern void flush_sendq_except(const struct DBuf* one); - -extern void sendto_one(struct Client *to, const char* fmt, ...); -extern void sendbufto_one(struct Client *to); -extern void sendto_ops(const char* fmt, ...); -extern void sendto_channel_butserv(struct Channel *chptr, struct Client *from, - const char* fmt, ...); -extern void sendto_serv_butone(struct Client *one, const char* fmt, ...); -extern void sendto_match_servs(struct Channel* chptr, struct Client* from, - const char* fmt, ...); -extern void sendto_lowprot_butone(struct Client *cptr, int p, - const char* fmt, ...); -extern void sendto_highprot_butone(struct Client *cptr, int p, - const char* fmt, ...); -extern void sendto_prefix_one(struct Client *to, struct Client *from, - const char* fmt, ...); +extern void send_buffer(struct Client* to, struct MsgBuf* buf, int prio); + +extern void kill_highest_sendq(int servers_too); extern void flush_connections(struct Client* cptr); extern void send_queued(struct Client *to); -extern void vsendto_one(struct Client *to, const char* fmt, va_list vl); -extern void sendto_channel_butone(struct Client *one, struct Client *from, - struct Channel *chptr, const char* fmt, ...); -extern void sendmsgto_channel_butone(struct Client *one, struct Client *from, - struct Channel *chptr, const char *sender, - const char *cmd, const char *chname, const char *msg); -extern void sendto_lchanops_butone(struct Client *one, struct Client *from, - struct Channel *chptr, const char* fmt, ...); -extern void sendto_chanopsserv_butone(struct Client *one, struct Client *from, - struct Channel *chptr, const char* fmt, ...); -extern void sendto_common_channels(struct Client *user, const char* fmt, ...); -extern void sendto_match_butone(struct Client *one, struct Client *from, - const char *mask, int what, const char* fmt, ...); -extern void sendto_lops_butone(struct Client *one, const char* fmt, ...); -extern void vsendto_ops(const char *pattern, va_list vl); -extern void sendto_ops_butone(struct Client *one, struct Client *from, - const char* fmt, ...); -extern void sendto_g_serv_butone(struct Client *one, const char* fmt, ...); -extern void sendto_realops(const char* fmt, ...); -extern void vsendto_op_mask(unsigned int mask, - const char* fmt, va_list vl); -extern void sendto_op_mask(unsigned int mask, const char* fmt, ...); -extern void sendbufto_op_mask(unsigned int mask); -extern void sendbufto_serv_butone(struct Client *one); - -extern char sendbuf[2048]; + +/* Send a raw message to one client; USE ONLY IF YOU MUST SEND SOMETHING + * WITHOUT A PREFIX! + */ +extern void sendrawto_one(struct Client *to, const char *pattern, ...); + +/* Send a command to one client */ +extern void sendcmdto_one(struct Client *from, const char *cmd, + const char *tok, struct Client *to, + const char *pattern, ...); + +/* Same as above, except it puts the message on the priority queue */ +extern void sendcmdto_prio_one(struct Client *from, const char *cmd, + const char *tok, struct Client *to, + const char *pattern, ...); + +/* Send command to servers by flags except one */ +extern void sendcmdto_flag_serv_butone(struct Client *from, const char *cmd, + const char *tok, struct Client *one, + int require, int forbid, + const char *pattern, ...); + +/* Send command to all servers except one */ +extern void sendcmdto_serv_butone(struct Client *from, const char *cmd, + const char *tok, struct Client *one, + const char *pattern, ...); + +/* Send command to all channels user is on */ +extern void sendcmdto_common_channels_butone(struct Client *from, + const char *cmd, + const char *tok, + struct Client *one, + const char *pattern, ...); + +/* Send command to all channel users on this server */ +extern void sendcmdto_channel_butserv_butone(struct Client *from, + const char *cmd, + const char *tok, + struct Channel *to, + struct Client *one, + unsigned int skip, + const char *pattern, ...); + +/* Send command to all servers interested in a channel */ +extern void sendcmdto_channel_servers_butone(struct Client *from, + const char *cmd, + const char *tok, + struct Channel *to, + struct Client *one, + unsigned int skip, + const char *pattern, ...); + +/* Send command to all interested channel users */ +extern void sendcmdto_channel_butone(struct Client *from, const char *cmd, + const char *tok, struct Channel *to, + struct Client *one, unsigned int skip, + const char *pattern, ...); + +#define SKIP_DEAF 0x01 /**< skip users that are +d */ +#define SKIP_BURST 0x02 /**< skip users that are bursting */ +#define SKIP_NONOPS 0x04 /**< skip users that aren't chanops */ +#define SKIP_NONVOICES 0x08 /**< skip users that aren't voiced (includes + chanops) */ + +/* Send command to all users having a particular flag set */ +extern void sendwallto_group_butone(struct Client *from, int type, + struct Client *one, const char *pattern, + ...); + +#define WALL_DESYNCH 1 /**< send as a DESYNCH message */ +#define WALL_WALLOPS 2 /**< send to all +w opers */ +#define WALL_WALLUSERS 3 /**< send to all +w users */ + +/* Send command to all matching clients */ +extern void sendcmdto_match_butone(struct Client *from, const char *cmd, + const char *tok, const char *to, + struct Client *one, unsigned int who, + const char *pattern, ...); + +/* Send server notice to opers but one--one can be NULL */ +extern void sendto_opmask_butone(struct Client *one, unsigned int mask, + const char *pattern, ...); + +/* Same as above, but rate limited */ +extern void sendto_opmask_butone_ratelimited(struct Client *one, + unsigned int mask, time_t *rate, + const char *pattern, ...); + +/* Same as above, but with variable argument list */ +extern void vsendto_opmask_butone(struct Client *one, unsigned int mask, + const char *pattern, va_list vl); #endif /* INCLUDED_send_h */