Exemple #1
0
 def initialize(self, domain):
     LOG_VOIP_INT('VOIPManager.Initialize')
     assert self.__initialized is False
     self.__voipDomain = domain
     self.__testDomain = 'sip:confctl-2@' + self.__voipDomain.partition(
         'www.')[2]
     LOG_VOIP_INT("voip_domain: '%s'" % self.__voipDomain)
     LOG_VOIP_INT("test_domain: '%s'" % self.__testDomain)
     self.__fsm.update(self)
     logLevel = 0
     section = Settings.g_instance.userPrefs
     if section.has_key('development'):
         section = section['development']
         if section.has_key('vivoxLogLevel'):
             logLevel = section['vivoxLogLevel'].asInt
     vinit = {
         KEY_SERVER: 'http://%s/api2' % self.__voipDomain,
         KEY_MIN_PORT: '0',
         KEY_MAX_PORT: '0',
         KEY_LOG_PREFIX: 'voip',
         KEY_LOG_SUFFIX: '.txt',
         KEY_LOG_FOLDER: '.',
         KEY_LOG_LEVEL: str(logLevel)
     }
     BigWorld.VOIP.initialise(vinit)
Exemple #2
0
 def onNetworkTest(self, data):
     returnCode = int(data[KEY_RETURN_CODE])
     if returnCode == CODE_ERROR:
         LOG_VOIP_INT('---------------------------')
         LOG_VOIP_INT("ERROR: '%d' - '%s'" % (int(data[KEY_STATUS_CODE]), data[KEY_STATUS_STRING]))
         LOG_VOIP_INT('---------------------------')
         self.onFailedToConnect()
         self.__clearDesiredChannel()
         self.__clearUser()
Exemple #3
0
 def onVoipInited(self, data):
     returnCode = int(data[KEY_RETURN_CODE])
     if returnCode == CODE_SUCCESS:
         self.__initialized = True
         self.__fsm.update(self)
         self.onInitialized(data)
     else:
         self.__initialized = False
         self.__fsm.reset()
         LOG_VOIP_INT('---------------------------')
         LOG_VOIP_INT("ERROR: '%d' - '%s'" % (int(data[KEY_STATUS_CODE]), data[KEY_STATUS_STRING]))
         LOG_VOIP_INT('---------------------------')
 def __call__(self, message, data={}):
     if message is not MSG_PARTICIPANT_UPDATED:
         LOG_VOIP_INT('Message: %d [%s], Data: %s' %
                      (message, MESSAGE_IDS[message], data))
     if message == MSG_VOIP_INITED:
         self.onVoipInited(data)
     elif message == MSG_VOIP_DESTROYED:
         self.onVoipDestroyed(data)
     elif message == MSG_CAPTURE_DEVICES:
         self.onCaptureDevicesArrived(data)
     elif message == MSG_SET_CAPTURE_DEVICE:
         self.onSetCaptureDevice(data)
     elif message == MSG_SET_LOCAL_SPEAKER_VOLUME:
         self.onSetLocalSpeakerVolume(data)
     elif message == MSG_SET_LOCAL_MIC_VOLUME:
         self.onSetLocalMicVolume(data)
     elif message == MSG_MUTE_LOCAL_MIC:
         self.onMuteLocalMic(data)
     elif message == MSG_LOGIN_STATE_CHANGE:
         self.onLoginStateChange(data)
     elif message == MSG_SESSION_ADDED:
         self.onSessionAdded(data)
     elif message == MSG_SESSION_REMOVED:
         self.onSessionRemoved(data)
     elif message == MSG_NETWORK_TEST:
         self.onNetworkTest(data)
     elif message == MSG_PARTICIPANT_ADDED:
         self.onParticipantAdded(data)
     elif message == MSG_PARTICIPANT_REMOVED:
         self.onParticipantRemoved(data)
     elif message == MSG_PARTICIPANT_UPDATED:
         self.onParticipantUpdated(data)
Exemple #5
0
 def __init__(self):
     LOG_VOIP_INT('VOIPManager.Create')
     super(VOIPManager, self).__init__()
     self.__initialized = False
     self.__enabled = False
     self.__voipDomain = ''
     self.__testDomain = ''
     self.__user = ['', '']
     self.__channel = ['', '']
     self.__currentChannel = ''
     self.__inTesting = False
     self.__loggedIn = False
     self.__needLogginAfterInit = False
     self.__loginAttemptsRemained = 2
     self.__fsm = VOIPFsm()
     self.__activateMicByVoice = False
     self.__captureDevices = []
     self.__currentCaptureDevice = ''
     self.__channelUsers = {}
     self.onCaptureDevicesUpdated = Event.Event()
     self.onPlayerSpeaking = Event.Event()
     self.onInitialized = Event.Event()
     self.onStateToggled = Event.Event()
     self.onFailedToConnect = Event.Event()
     self.onJoinedChannel = Event.Event()
     self.onLeftChannel = Event.Event()
     self.__fsm.onStateChanged += self.__onStateChanged
Exemple #6
0
 def update(self, voip):
     if self.__state == _STATE.NONE:
         self.__setState(_STATE.INITIALIZING)
     elif self.__state == _STATE.INITIALIZING and voip.isInitialized():
         self.__setState(_STATE.INITIALIZED)
     elif self.__state == _STATE.INITIALIZED and voip.getUser() != '':
         self.__setState(_STATE.LOGGING_IN)
     elif self.__state == _STATE.LOGGING_IN and voip.isLoggedIn():
         self.__setState(_STATE.LOGGED_IN)
     elif self.__state == _STATE.LOGGING_IN and not voip.isLoggedIn():
         self.__setState(_STATE.INITIALIZED)
     elif self.__state == _STATE.LOGGED_IN and voip.hasDesiredChannel(
     ) and voip.isEnabled():
         self.__setState(_STATE.JOINING_CHANNEL)
     elif self.__state == _STATE.LOGGED_IN and voip.getUser() == '':
         self.__setState(_STATE.LOGGING_OUT)
     elif self.__state == _STATE.LOGGING_OUT and not voip.isLoggedIn():
         self.__setState(_STATE.INITIALIZED)
     elif self.__state == _STATE.JOINING_CHANNEL and voip.getCurrentChannel(
     ):
         self.__setState(_STATE.JOINED_CHANNEL)
     elif self.__state == _STATE.JOINING_CHANNEL and not voip.hasDesiredChannel(
     ):
         self.__setState(_STATE.LEAVING_CHANNEL)
     elif self.__state == _STATE.JOINED_CHANNEL and (
             not voip.isInDesiredChannel() or not voip.isEnabled()
             or not voip.getCurrentChannel()):
         self.__setState(_STATE.LEAVING_CHANNEL)
     elif self.__state == _STATE.LEAVING_CHANNEL and not voip.getCurrentChannel(
     ):
         self.__setState(_STATE.LOGGED_IN)
     else:
         LOG_VOIP_INT('%s not changed' % _STATE_NAMES[self.__state])
Exemple #7
0
 def __enterChannel(self, channel, password):
     if not self.__initialized and self.__fsm.inNoneState():
         self.initialize(self.__voipDomain)
     if not self.__user[0] and self.isEnabled():
         self.__requestCredentials()
     LOG_VOIP_INT("VOIPManager.EnterChannel: '%s' '%s'" % (channel, password))
     self.__channel = [channel, password]
     self.__fsm.update(self)
Exemple #8
0
 def __setState(self, newState):
     if newState == self.__state:
         return
     LOG_VOIP_INT('%s -> %s' %
                  (_STATE_NAMES[self.__state], _STATE_NAMES[newState]))
     oldState = self.__state
     self.__state = newState
     self.onStateChanged(oldState, newState)
Exemple #9
0
 def onDisconnected(self):
     LOG_VOIP_INT('VOIPManager.Unsubscribe')
     voipEvents = g_messengerEvents.voip
     voipEvents.onChannelEntered -= self.__me_onChannelEntered
     voipEvents.onChannelLeft -= self.__me_onChannelLeft
     voipEvents.onCredentialReceived -= self.__me_onCredentialReceived
     usersEvents = g_messengerEvents.users
     usersEvents.onUsersListReceived -= self.__me_onUsersListReceived
     usersEvents.onUserActionReceived -= self.__me_onUserActionReceived
Exemple #10
0
 def leaveTestChannel(self):
     if not self.__inTesting:
         return
     LOG_VOIP_INT('VOIPManager.LeaveTestChannel')
     self.__inTesting = False
     params = self.bwProto.voipProvider.getChannelParams()
     if params[0]:
         self.__enterChannel(*params)
     else:
         self.__leaveChannel()
Exemple #11
0
 def __muteParticipantForMe(self, dbid, mute):
     LOG_VOIP_INT('VOIPManager.MuteParticipantForMe: %d, %s' % (dbid, str(mute)))
     raise dbid in self.__channelUsers or AssertionError
     self.__channelUsers[dbid]['muted'] = mute
     uri = self.__channelUsers[dbid]['uri']
     cmd = {KEY_COMMAND: CMD_SET_PARTICIPANT_MUTE,
      KEY_PARTICIPANT_URI: uri,
      KEY_STATE: str(mute)}
     BigWorld.VOIP.command(cmd)
     return True
Exemple #12
0
 def onConnected(self):
     LOG_VOIP_INT('VOIPManager.Subscribe')
     self.__loginAttemptsRemained = 2
     voipEvents = g_messengerEvents.voip
     voipEvents.onChannelEntered += self.__me_onChannelEntered
     voipEvents.onChannelLeft += self.__me_onChannelLeft
     voipEvents.onCredentialReceived += self.__me_onCredentialReceived
     usersEvents = g_messengerEvents.users
     usersEvents.onUsersListReceived += self.__me_onUsersListReceived
     usersEvents.onUserActionReceived += self.__me_onUserActionReceived
Exemple #13
0
 def onLoginStateChange(self, data):
     returnCode = int(data[KEY_RETURN_CODE])
     if returnCode == CODE_SUCCESS:
         state = int(data[KEY_STATE])
         if state == STATE_LOGGED_IN:
             if self.getAPI() == VOIP_SUPPORTED_API.VIVOX:
                 self.bwProto.voipProvider.logVivoxLogin()
             self.__loggedIn = True
             self.__fsm.update(self)
         elif state == STATE_LOGGED_OUT:
             self.__loggedIn = False
             self.__fsm.update(self)
     else:
         LOG_VOIP_INT('---------------------------')
         LOG_VOIP_INT("ERROR: '%d' - '%s'" % (int(data[KEY_STATUS_CODE]), data[KEY_STATUS_STRING]))
         LOG_VOIP_INT('---------------------------')
         code = int(data[KEY_STATUS_CODE])
         if (code == STATUS_WRONG_CREDENTIALS or code == STATUS_UNKNOWN_ACCOUNT) and self.__loginAttemptsRemained > 0:
             self.__reloginUser()
         else:
             self.onFailedToConnect()
 def initialize(self, domain, server):
     LOG_VOIP_INT('VOIPManager.Initialize')
     if not self.__initialized is False:
         raise AssertionError
         self.__voipServer = server
         self.__voipDomain = domain
         self.__testDomain = 'sip:confctl-2@' + self.__voipDomain
         LOG_VOIP_INT("voip_server: '%s'" % self.__voipServer)
         LOG_VOIP_INT("voip_domain: '%s'" % self.__voipDomain)
         LOG_VOIP_INT("test_domain: '%s'" % self.__testDomain)
         self.__fsm.update(self)
         logLevel = 0
         section = Settings.g_instance.userPrefs
         if section.has_key('development'):
             section = section['development']
             logLevel = section.has_key('vivoxLogLevel') and section['vivoxLogLevel'].asInt
     vinit = {VOIPCommon.KEY_SERVER: 'http://%s/api2' % self.__voipServer,
      VOIPCommon.KEY_MIN_PORT: '0',
      VOIPCommon.KEY_MAX_PORT: '0',
      VOIPCommon.KEY_LOG_PREFIX: 'voip',
      VOIPCommon.KEY_LOG_SUFFIX: '.txt',
      VOIPCommon.KEY_LOG_FOLDER: '.',
      VOIPCommon.KEY_LOG_LEVEL: str(logLevel)}
     BigWorld.VOIP.initialise(vinit)
Exemple #15
0
 def __onStateChanged(self, _, newState):
     if newState == STATE.INITIALIZED:
         self.__resetToInitializedState()
     elif newState == STATE.LOGGING_IN:
         self.__loginUser(self.__user[0], self.__user[1])
     elif newState == STATE.LOGGED_IN:
         self.__fsm.update(self)
     elif newState == STATE.JOINING_CHANNEL:
         muteMic = self.__channel[0] != self.__testDomain and not self.__activateMicByVoice
         self.setMicMute(muteMic)
         self.__joinChannel(self.__channel[0], self.__channel[1])
     elif newState == STATE.JOINED_CHANNEL:
         LOG_VOIP_INT("Joined to channel: '%s'" % self.__currentChannel)
         self.__fsm.update(self)
     elif newState == STATE.LEAVING_CHANNEL:
         self.__sendLeaveChannelCommand(self.getCurrentChannel())
     elif newState == STATE.LOGGING_OUT:
         BigWorld.VOIP.logout()
Exemple #16
0
 def __me_onCredentialReceived(self, name, pwd):
     """
     Listener of event g_messengerEvents.voip.onCredentialReceived.
     """
     LOG_VOIP_INT("VOIPManager.OnUserCredentials: '%s' '%s'" % (name, pwd))
     self.__login(name, pwd)
Exemple #17
0
 def logout(self):
     LOG_VOIP_INT('VOIPManager.Logout')
     self.__clearUser()
     self.__clearDesiredChannel()
     self.__fsm.update(self)
Exemple #18
0
 def __joinChannel(self, channel, password):
     LOG_VOIP_INT("Joining channel '%s'" % channel)
     BigWorld.VOIP.joinChannel(channel, password)
Exemple #19
0
 def __leaveChannel(self):
     if not self.__initialized:
         return
     LOG_VOIP_INT('VOIPManager.LeaveChannel')
     self.__clearDesiredChannel()
     self.__fsm.update(self)
Exemple #20
0
 def enterTestChannel(self):
     if self.__inTesting:
         return
     LOG_VOIP_INT("VOIPManager.EnterTestChannel: '%s'" % self.__testDomain)
     self.__inTesting = True
     self.__enterChannel(self.__testDomain, '')
Exemple #21
0
 def __sendLeaveChannelCommand(self, channel):
     LOG_VOIP_INT("Leaving channel '%s'" % channel)
     if channel:
         BigWorld.VOIP.leaveChannel(channel)
     self.__fsm.update(self)
Exemple #22
0
 def __onChatActionMute(self, dbid, muted):
     LOG_VOIP_INT('VOIPManager.OnChatActionMute', dbid, muted)
     if dbid in self.__channelUsers and self.__channelUsers[dbid]['muted'] != muted:
         self.__muteParticipantForMe(dbid, muted)
Exemple #23
0
 def __reloginUser(self):
     self.__loginAttemptsRemained -= 1
     LOG_VOIP_INT('VOIPHandler.ReloginUser. Attempts remained: %d' % self.__loginAttemptsRemained)
     if self.__enabled:
         self.__requestCredentials(1)
Exemple #24
0
 def setVoiceActivation(self, enabled):
     LOG_VOIP_INT('VOIPManager.SetVoiceActivation: %s' % str(enabled))
     self.__activateMicByVoice = enabled
     self.setMicMute(not enabled)
Exemple #25
0
 def destroy(self):
     self.__fsm.onStateChanged -= self.__onStateChanged
     BigWorld.VOIP.finalise()
     LOG_VOIP_INT('VOIPManager.Destroy')
     closeLog()
Exemple #26
0
 def __setMicMute(self, muted):
     LOG_VOIP_INT('VOIPManager.SetMicMute: %s' % str(muted))
     if muted:
         BigWorld.VOIP.disableMicrophone()
     else:
         BigWorld.VOIP.enableMicrophone()
Exemple #27
0
 def setCaptureDevice(self, deviceName):
     LOG_VOIP_INT("VOIPManager.SetCaptureDevice: '%s'" % deviceName)
     BigWorld.VOIP.setCaptureDevice(deviceName)
Exemple #28
0
 def __requestCredentials(self, reset = 0):
     LOG_VOIP_INT('VOIPManager.RequestUserCredentials')
     self.bwProto.voipProvider.requestCredentials(reset)
Exemple #29
0
 def requestCaptureDevices(self):
     LOG_VOIP_INT('VOIPManager.RequestCaptureDevices')
     BigWorld.VOIP.getCaptureDevices()
Exemple #30
0
 def __loginUser(self, username, password):
     LOG_VOIP_INT("Login Request: '%s', '%s'" % (username, password))
     cmd = {KEY_PARTICIPANT_PROPERTY_FREQUENCY: '100'}
     BigWorld.VOIP.login(username, password, cmd)