Added functions to route messages to operators only.
Technially the messages are routed to users with the flag_opnotify set, but this is intended to be set only for operators (and above) - and it allows operators to opt out of these messages if they wish to.
This commit is contained in:
		
							parent
							
								
									5c31f47bea
								
							
						
					
					
						commit
						5b78c0826d
					
				@ -149,6 +149,19 @@ int route_to_all(struct hub_info* hub, struct adc_message* command) /* iterate u
 | 
				
			|||||||
	return 0;
 | 
						return 0;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					int route_to_operators(struct hub_info* hub, struct adc_message* command) /* iterate users */
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						struct hub_user* user = (struct hub_user*) list_get_first(hub->users->list);
 | 
				
			||||||
 | 
						while (user)
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							if (user_flag_get(user, flag_opnotify))
 | 
				
			||||||
 | 
								route_to_user(hub, user, command);
 | 
				
			||||||
 | 
							user = (struct hub_user*) list_get_next(hub->users->list);
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return 0;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
int route_to_subscribers(struct hub_info* hub, struct adc_message* command) /* iterate users */
 | 
					int route_to_subscribers(struct hub_info* hub, struct adc_message* command) /* iterate users */
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	int do_send;
 | 
						int do_send;
 | 
				
			||||||
 | 
				
			|||||||
@ -40,6 +40,14 @@ extern int route_to_user(struct hub_info* hub, struct hub_user*, struct adc_mess
 | 
				
			|||||||
 */
 | 
					 */
 | 
				
			||||||
extern int route_to_all(struct hub_info* hub, struct adc_message* command);
 | 
					extern int route_to_all(struct hub_info* hub, struct adc_message* command);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * Send a message to all operators.
 | 
				
			||||||
 | 
					 * Technically it sends to all users with the flag_opnotify set
 | 
				
			||||||
 | 
					 * which is intended to be set for only operators - allowing operators to opt-out
 | 
				
			||||||
 | 
					 * of these messages.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					extern int route_to_operators(struct hub_info* hub, struct adc_message* command);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
 * Broadcast message to all users subscribing to the type of message.
 | 
					 * Broadcast message to all users subscribing to the type of message.
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
 | 
				
			|||||||
@ -47,6 +47,7 @@ enum user_flags
 | 
				
			|||||||
	feature_link    = 0x00000100, /** LINK: Hub link (not supported) */
 | 
						feature_link    = 0x00000100, /** LINK: Hub link (not supported) */
 | 
				
			||||||
	feature_adcs    = 0x00000200, /** ADCS: ADC over TLS/SSL */
 | 
						feature_adcs    = 0x00000200, /** ADCS: ADC over TLS/SSL */
 | 
				
			||||||
	feature_bas0    = 0x00000400, /** BAS0: Obsolete pre-ADC/1.0 protocol version */
 | 
						feature_bas0    = 0x00000400, /** BAS0: Obsolete pre-ADC/1.0 protocol version */
 | 
				
			||||||
 | 
						flag_opnotify   = 0x00200000, /** User should receive operation notifications. NOTE: Only operators should have this flag! */
 | 
				
			||||||
	flag_flood      = 0x00400000, /** User has been notified about flooding. */
 | 
						flag_flood      = 0x00400000, /** User has been notified about flooding. */
 | 
				
			||||||
	flag_muted      = 0x00800000, /** User is muted (cannot chat) */
 | 
						flag_muted      = 0x00800000, /** User is muted (cannot chat) */
 | 
				
			||||||
	flag_ignore     = 0x01000000, /** Ignore further reads */
 | 
						flag_ignore     = 0x01000000, /** Ignore further reads */
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
		Reference in New Issue
	
	Block a user