mud/lib/secure/daemon/i3router/broadcast_chanlist.h
2020-09-06 05:43:07 -07:00

34 lines
1.3 KiB
C

// This file written mostly by Tim Johnson (Tim@TimMUD)
// broadcast the chanlist-reply when a channel just now got changed...
varargs void broadcast_chanlist(string channame, string thismud){
string name; // channel name in first loop, then mud name in later loop
string *mudses = keys(connected_muds);
mapping out=([]); // only used if whole chanlist is sent
if(thismud && thismud != "" && connected_muds[thismud]) mudses = ({ thismud });
trr("<><><><><><><><><><>");
trr("broadcasting chanlist to "+identify(mudses));
trr("<><><><><><><><><><>");
#ifdef SEND_WHOLE_CHANLIST
//trr("broadcasting chanlist to let them know about "+channame);
foreach(name in keys(channels)){
out[name]=({ channels[name][1], channels[name][0] });
}
#else
if(!channels[channame])
out = ([ channame:0 ]);
else
out = ([ channame:({ channels[channame][1], channels[channame][0] }) ]);
#endif
foreach(name in mudses){
trr("inside loop with "+name);
if(member_array("channel", keys(mudinfo[name]["services"]))!=-1){
// only tell muds that have the "channel" service...
write_data(connected_muds[name], ({
"chanlist-reply",5,router_name,0,name,0,channel_update_counter,out
}));
}
//trr("done with: "+name);
}
}