def dispatch_control_message(self, type, message): """Dispatch control messages based on their type""" self.Log.debug("dispatch control message") if type == PYMUMBLE_MSG_TYPES_UDPTUNNEL: # audio encapsulated in control message self.sound_received(message) elif type == PYMUMBLE_MSG_TYPES_VERSION: mess = mumble_pb2.Version() mess.ParseFromString(message) self.Log.debug("message: Version : %s", mess) elif type == PYMUMBLE_MSG_TYPES_AUTHENTICATE: mess = mumble_pb2.Authenticate() mess.ParseFromString(message) self.Log.debug("message: Authenticate : %s", mess) elif type == PYMUMBLE_MSG_TYPES_PING: mess = mumble_pb2.Ping() mess.ParseFromString(message) self.Log.debug("message: Ping : %s", mess) elif type == PYMUMBLE_MSG_TYPES_REJECT: mess = mumble_pb2.Reject() mess.ParseFromString(message) self.Log.debug("message: reject : %s", mess) self.ready_lock.release() raise ConnectionRejectedError(mess.reason) elif type == PYMUMBLE_MSG_TYPES_SERVERSYNC: # this message finish the connection process mess = mumble_pb2.ServerSync() mess.ParseFromString(message) self.Log.debug("message: serversync : %s", mess) self.users.set_myself(mess.session) self.server_max_bandwidth = mess.max_bandwidth self.set_bandwidth(mess.max_bandwidth) if self.connected == PYMUMBLE_CONN_STATE_AUTHENTICATING: self.connected = PYMUMBLE_CONN_STATE_CONNECTED self.callbacks(PYMUMBLE_CLBK_CONNECTED) self.ready_lock.release() # release the ready-lock elif type == PYMUMBLE_MSG_TYPES_CHANNELREMOVE: mess = mumble_pb2.ChannelRemove() mess.ParseFromString(message) self.Log.debug("message: ChannelRemove : %s", mess) self.channels.remove(mess.channel_id) elif type == PYMUMBLE_MSG_TYPES_CHANNELSTATE: mess = mumble_pb2.ChannelState() mess.ParseFromString(message) self.Log.debug("message: channelstate : %s", mess) self.channels.update(mess) elif type == PYMUMBLE_MSG_TYPES_USERREMOVE: mess = mumble_pb2.UserRemove() mess.ParseFromString(message) self.Log.debug("message: UserRemove : %s", mess) self.users.remove(mess) elif type == PYMUMBLE_MSG_TYPES_USERSTATE: mess = mumble_pb2.UserState() mess.ParseFromString(message) self.Log.debug("message: userstate : %s", mess) self.users.update(mess) elif type == PYMUMBLE_MSG_TYPES_BANLIST: mess = mumble_pb2.BanList() mess.ParseFromString(message) self.Log.debug("message: BanList : %s", mess) elif type == PYMUMBLE_MSG_TYPES_TEXTMESSAGE: mess = mumble_pb2.TextMessage() mess.ParseFromString(message) self.Log.debug("message: TextMessage : %s", mess) self.callbacks(PYMUMBLE_CLBK_TEXTMESSAGERECEIVED, mess.message) elif type == PYMUMBLE_MSG_TYPES_PERMISSIONDENIED: mess = mumble_pb2.PermissionDenied() mess.ParseFromString(message) self.Log.debug("message: PermissionDenied : %s", mess) elif type == PYMUMBLE_MSG_TYPES_ACL: mess = mumble_pb2.ACL() mess.ParseFromString(message) self.Log.debug("message: ACL : %s", mess) elif type == PYMUMBLE_MSG_TYPES_QUERYUSERS: mess = mumble_pb2.QueryUsers() mess.ParseFromString(message) self.Log.debug("message: QueryUsers : %s", mess) elif type == PYMUMBLE_MSG_TYPES_CRYPTSETUP: mess = mumble_pb2.CryptSetup() mess.ParseFromString(message) self.Log.debug("message: CryptSetup : %s", mess) elif type == PYMUMBLE_MSG_TYPES_CONTEXTACTIONADD: mess = mumble_pb2.ContextActionAdd() mess.ParseFromString(message) self.Log.debug("message: ContextActionAdd : %s", mess) elif type == PYMUMBLE_MSG_TYPES_CONTEXTACTION: mess = mumble_pb2.ContextActionAdd() mess.ParseFromString(message) self.Log.debug("message: ContextActionAdd : %s", mess) elif type == PYMUMBLE_MSG_TYPES_USERLIST: mess = mumble_pb2.UserList() mess.ParseFromString(message) self.Log.debug("message: UserList : %s", mess) elif type == PYMUMBLE_MSG_TYPES_VOICETARGET: mess = mumble_pb2.VoiceTarget() mess.ParseFromString(message) self.Log.debug("message: VoiceTarget : %s", mess) elif type == PYMUMBLE_MSG_TYPES_PERMISSIONQUERY: mess = mumble_pb2.PermissionQuery() mess.ParseFromString(message) self.Log.debug("message: PermissionQuery : %s", mess) elif type == PYMUMBLE_MSG_TYPES_CODECVERSION: mess = mumble_pb2.CodecVersion() mess.ParseFromString(message) self.Log.debug("message: CodecVersion : %s", mess) self.sound_output.set_default_codec(mess) elif type == PYMUMBLE_MSG_TYPES_USERSTATS: mess = mumble_pb2.UserStats() mess.ParseFromString(message) self.Log.debug("message: UserStats : %s", mess) elif type == PYMUMBLE_MSG_TYPES_REQUESTBLOB: mess = mumble_pb2.RequestBlob() mess.ParseFromString(message) self.Log.debug("message: RequestBlob : %s", mess) elif type == PYMUMBLE_MSG_TYPES_SERVERCONFIG: mess = mumble_pb2.ServerConfig() mess.ParseFromString(message) self.Log.debug("message: ServerConfig : %s", mess)
def user_stats(session): msg = mumble_pb2.UserStats() msg.session = session return serialize_(msg)