Mumble switcher consists of two parts, a rather small b3 plugin that sends netstrings to the switcherserver which in turn moves the people around using ZeroC Ice.
Due to the problem that we have the mumble server (murmur) running on an other machine then b3 and the game server we had to transport information through the network. Glacier2 would have been an option, but not sure how long Ice operations would take and therefor slow down b3 we decided to separate the actual switcher from b3 and make the plugin as small as possible. In order to operate the switcher needs to know which b3id belongs to which mumble user, since we use the murmur iceauth.py script to connect our mumble server to our phpBB database we only had to match people visiting the forums and playing on the server via IP. So the server receives a string telling it which b3 id plays in what server and team, then identifies the corresponding mumble client and moves it into the according channel.
When joining a team all players are moved to the spectator channel, until a certain threshold is surpassed and players get split up in their team channels. Currently “Home” and it's sub-channels are protected from moving.
Viewgit (browse and download source): http://git.dswp.de/viewgit/?a=summary&p=mumbleswitcher