diff options
| author | Aura Linden <aura@lindenlab.com> | 2013-02-08 16:28:43 -0800 | 
|---|---|---|
| committer | Aura Linden <aura@lindenlab.com> | 2013-02-08 16:28:43 -0800 | 
| commit | 243fe06568d05511ed2f89fea9c00b3c19d97ebf (patch) | |
| tree | 7442c12d140cd41b2390d192b5652f1991277f60 /indra | |
| parent | d16757545c91d4f7dac3c52a311ad0f0239052e1 (diff) | |
Interim version with SLIM removed from voice.
Diffstat (limited to 'indra')
| -rw-r--r-- | indra/newview/llvoiceclient.cpp | 7 | ||||
| -rw-r--r-- | indra/newview/llvoiceclient.h | 1 | ||||
| -rw-r--r-- | indra/newview/llvoicevivox.cpp | 764 | ||||
| -rw-r--r-- | indra/newview/llvoicevivox.h | 27 | 
4 files changed, 8 insertions, 791 deletions
| diff --git a/indra/newview/llvoiceclient.cpp b/indra/newview/llvoiceclient.cpp index 730f022c50..d415ff82ff 100644 --- a/indra/newview/llvoiceclient.cpp +++ b/indra/newview/llvoiceclient.cpp @@ -712,14 +712,7 @@ BOOL LLVoiceClient::isParticipantAvatar(const LLUUID& id)  BOOL LLVoiceClient::isOnlineSIP(const LLUUID& id)  { -	if (mVoiceModule)  -	{ -		return mVoiceModule->isOnlineSIP(id); -	} -	else -	{  		return FALSE; -	}  }  BOOL LLVoiceClient::getIsSpeaking(const LLUUID& id) diff --git a/indra/newview/llvoiceclient.h b/indra/newview/llvoiceclient.h index c9aeea35a9..6715ca6ec8 100644 --- a/indra/newview/llvoiceclient.h +++ b/indra/newview/llvoiceclient.h @@ -199,7 +199,6 @@ public:  	//@{  	virtual BOOL getVoiceEnabled(const LLUUID& id)=0;		// true if we've received data for this avatar  	virtual std::string getDisplayName(const LLUUID& id)=0; -	virtual BOOL isOnlineSIP(const LLUUID &id)=0;	  	virtual BOOL isParticipantAvatar(const LLUUID &id)=0;  	virtual BOOL getIsSpeaking(const LLUUID& id)=0;  	virtual BOOL getIsModeratorMuted(const LLUUID& id)=0; diff --git a/indra/newview/llvoicevivox.cpp b/indra/newview/llvoicevivox.cpp index 820d1d73e1..024fa097b4 100644 --- a/indra/newview/llvoicevivox.cpp +++ b/indra/newview/llvoicevivox.cpp @@ -177,17 +177,10 @@ class LLVivoxVoiceClientMuteListObserver : public LLMuteListObserver  	/* virtual */ void onChange()  { LLVivoxVoiceClient::getInstance()->muteListChanged();}  }; -class LLVivoxVoiceClientFriendsObserver : public LLFriendObserver -{ -public: -	/* virtual */ void changed(U32 mask) { LLVivoxVoiceClient::getInstance()->updateFriends(mask);} -};  static LLVivoxVoiceClientMuteListObserver mutelist_listener;  static bool sMuteListListener_listening = false; -static LLVivoxVoiceClientFriendsObserver *friendslist_listener = NULL; -  ///////////////////////////////////////////////////////////////////////////////////////////////  class LLVivoxVoiceClientCapResponder : public LLHTTPClient::Responder @@ -378,7 +371,6 @@ void LLVivoxVoiceClient::terminate()  void LLVivoxVoiceClient::cleanUp()  {  	deleteAllSessions(); -	deleteAllBuddies();  	deleteAllVoiceFonts();  	deleteVoiceFontTemplates();  } @@ -1202,13 +1194,6 @@ void LLVivoxVoiceClient::stateMachine()  				LLMuteList::getInstance()->addObserver(&mutelist_listener);  				sMuteListListener_listening = true;  			} - -			// Set up the friends list observer if it hasn't been set up already. -			if(friendslist_listener == NULL) -			{ -				friendslist_listener = new LLVivoxVoiceClientFriendsObserver; -				LLAvatarTracker::instance().addObserver(friendslist_listener); -			}  			// Set the initial state of mic mute, local speaker volume, etc.  			{ @@ -1279,9 +1264,7 @@ void LLVivoxVoiceClient::stateMachine()  		case stateNoChannel:  			LL_DEBUGS("Voice") << "State No Channel" << LL_ENDL;  			mSpatialJoiningNum = 0; -			// Do this here as well as inside sendPositionalUpdate().   -			// Otherwise, if you log in but don't join a proximal channel (such as when your login location has voice disabled), your friends list won't sync. -			sendFriendsListUpdates(); +  			if(mSessionTerminateRequested || !mVoiceEnabled)  			{ @@ -1634,7 +1617,7 @@ void LLVivoxVoiceClient::stateMachine()  void LLVivoxVoiceClient::closeSocket(void)  {  	mSocket.reset(); -	mConnected = false;	 +	mConnected = false;  	mConnectorHandle.clear();  	mAccountHandle.clear();  } @@ -1651,7 +1634,7 @@ void LLVivoxVoiceClient::loginSendMessage()  		<< "<AccountName>" << mAccountName << "</AccountName>"  		<< "<AccountPassword>" << mAccountPassword << "</AccountPassword>"  		<< "<AudioSessionAnswerMode>VerifyAnswer</AudioSessionAnswerMode>" -		<< "<EnableBuddiesAndPresence>true</EnableBuddiesAndPresence>" +        << "<EnableBuddiesAndPresence>false</EnableBuddiesAndPresence>"  		<< "<BuddyManagementMode>Application</BuddyManagementMode>"  		<< "<ParticipantPropertyFrequency>5</ParticipantPropertyFrequency>"  		<< (autoPostCrashDumps?"<AutopostCrashDumps>true</AutopostCrashDumps>":"") @@ -2553,10 +2536,7 @@ void LLVivoxVoiceClient::sendPositionalUpdate(void)  	{  		writeString(stream.str());  	} -	 -	// Friends list updates can be huge, especially on the first voice login of an account with lots of friends. -	// Batching them all together can choke SLVoice, so send them in separate writes. -	sendFriendsListUpdates(); +  }  void LLVivoxVoiceClient::buildSetCaptureDevice(std::ostringstream &stream) @@ -2654,291 +2634,6 @@ void LLVivoxVoiceClient::buildLocalAudioUpdates(std::ostringstream &stream)  } -void LLVivoxVoiceClient::checkFriend(const LLUUID& id) -{ -	buddyListEntry *buddy = findBuddy(id); - -	// Make sure we don't add a name before it's been looked up. -	LLAvatarName av_name; -	if(LLAvatarNameCache::get(id, &av_name)) -	{ -		// *NOTE: For now, we feed legacy names to Vivox because I don't know -		// if their service can support a mix of new and old clients with -		// different sorts of names. -		std::string name = av_name.getLegacyName(); - -		const LLRelationship* relationInfo = LLAvatarTracker::instance().getBuddyInfo(id); -		bool canSeeMeOnline = false; -		if(relationInfo && relationInfo->isRightGrantedTo(LLRelationship::GRANT_ONLINE_STATUS)) -			canSeeMeOnline = true; -		 -		// When we get here, mNeedsSend is true and mInSLFriends is false.  Change them as necessary. -		 -		if(buddy) -		{ -			// This buddy is already in both lists. - -			if(name != buddy->mDisplayName) -			{ -				// The buddy is in the list with the wrong name.  Update it with the correct name. -				LL_WARNS("Voice") << "Buddy " << id << " has wrong name (\"" << buddy->mDisplayName << "\" should be \"" << name << "\"), updating."<< LL_ENDL; -				buddy->mDisplayName = name; -				buddy->mNeedsNameUpdate = true;		// This will cause the buddy to be resent. -			} -		} -		else -		{ -			// This buddy was not in the vivox list, needs to be added. -			buddy = addBuddy(sipURIFromID(id), name); -			buddy->mUUID = id; -		} -		 -		// In all the above cases, the buddy is in the SL friends list (which is how we got here). -		buddy->mInSLFriends = true; -		buddy->mCanSeeMeOnline = canSeeMeOnline; -		buddy->mNameResolved = true; -		 -	} -	else -	{ -		// This name hasn't been looked up yet.  Don't do anything with this buddy list entry until it has. -		if(buddy) -		{ -			buddy->mNameResolved = false; -		} -		 -		// Initiate a lookup. -		// The "lookup completed" callback will ensure that the friends list is rechecked after it completes. -		lookupName(id); -	} -} - -void LLVivoxVoiceClient::clearAllLists() -{ -	// FOR TESTING ONLY -	 -	// This will send the necessary commands to delete ALL buddies, autoaccept rules, and block rules SLVoice tells us about. -	buddyListMap::iterator buddy_it; -	for(buddy_it = mBuddyListMap.begin(); buddy_it != mBuddyListMap.end();) -	{ -		buddyListEntry *buddy = buddy_it->second; -		buddy_it++; -		 -		std::ostringstream stream; - -		if(buddy->mInVivoxBuddies) -		{ -			// delete this entry from the vivox buddy list -			buddy->mInVivoxBuddies = false; -			LL_DEBUGS("Voice") << "delete " << buddy->mURI << " (" << buddy->mDisplayName << ")" << LL_ENDL; -			stream << "<Request requestId=\"" << mCommandCookie++ << "\" action=\"Account.BuddyDelete.1\">" -				<< "<AccountHandle>" << mAccountHandle << "</AccountHandle>" -				<< "<BuddyURI>" << buddy->mURI << "</BuddyURI>" -				<< "</Request>\n\n\n";		 -		} - -		if(buddy->mHasBlockListEntry) -		{ -			// Delete the associated block list entry (so the block list doesn't fill up with junk) -			buddy->mHasBlockListEntry = false; -			stream << "<Request requestId=\"" << mCommandCookie++ << "\" action=\"Account.DeleteBlockRule.1\">" -				<< "<AccountHandle>" << mAccountHandle << "</AccountHandle>" -				<< "<BlockMask>" << buddy->mURI << "</BlockMask>" -				<< "</Request>\n\n\n";								 -		} -		if(buddy->mHasAutoAcceptListEntry) -		{ -			// Delete the associated auto-accept list entry (so the auto-accept list doesn't fill up with junk) -			buddy->mHasAutoAcceptListEntry = false; -			stream << "<Request requestId=\"" << mCommandCookie++ << "\" action=\"Account.DeleteAutoAcceptRule.1\">" -				<< "<AccountHandle>" << mAccountHandle << "</AccountHandle>" -				<< "<AutoAcceptMask>" << buddy->mURI << "</AutoAcceptMask>" -				<< "</Request>\n\n\n"; -		} - -		writeString(stream.str()); - -	} -} - -void LLVivoxVoiceClient::sendFriendsListUpdates() -{ -	if(mBuddyListMapPopulated && mBlockRulesListReceived && mAutoAcceptRulesListReceived && mFriendsListDirty) -	{ -		mFriendsListDirty = false; -		 -		if(0) -		{ -			// FOR TESTING ONLY -- clear all buddy list, block list, and auto-accept list entries. -			clearAllLists(); -			return; -		} -		 -		LL_INFOS("Voice") << "Checking vivox buddy list against friends list..." << LL_ENDL; -		 -		buddyListMap::iterator buddy_it; -		for(buddy_it = mBuddyListMap.begin(); buddy_it != mBuddyListMap.end(); buddy_it++) -		{ -			// reset the temp flags in the local buddy list -			buddy_it->second->mInSLFriends = false; -		} -		 -		// correlate with the friends list -		{ -			LLCollectAllBuddies collect; -			LLAvatarTracker::instance().applyFunctor(collect); -			LLCollectAllBuddies::buddy_map_t::const_iterator it = collect.mOnline.begin(); -			LLCollectAllBuddies::buddy_map_t::const_iterator end = collect.mOnline.end(); -			 -			for ( ; it != end; ++it) -			{ -				checkFriend(it->second); -			} -			it = collect.mOffline.begin(); -			end = collect.mOffline.end(); -			for ( ; it != end; ++it) -			{ -				checkFriend(it->second); -			} -		} -				 -		LL_INFOS("Voice") << "Sending friend list updates..." << LL_ENDL; - -		for(buddy_it = mBuddyListMap.begin(); buddy_it != mBuddyListMap.end();) -		{ -			buddyListEntry *buddy = buddy_it->second; -			buddy_it++; -			 -			// Ignore entries that aren't resolved yet. -			if(buddy->mNameResolved) -			{ -				std::ostringstream stream; - -				if(buddy->mInSLFriends && (!buddy->mInVivoxBuddies || buddy->mNeedsNameUpdate)) -				{					 -					if(mNumberOfAliases > 0) -					{ -						// Add (or update) this entry in the vivox buddy list -						buddy->mInVivoxBuddies = true; -						buddy->mNeedsNameUpdate = false; -						LL_DEBUGS("Voice") << "add/update " << buddy->mURI << " (" << buddy->mDisplayName << ")" << LL_ENDL; -						stream  -							<< "<Request requestId=\"" << mCommandCookie++ << "\" action=\"Account.BuddySet.1\">" -								<< "<AccountHandle>" << mAccountHandle << "</AccountHandle>" -								<< "<BuddyURI>" << buddy->mURI << "</BuddyURI>" -								<< "<DisplayName>" << buddy->mDisplayName << "</DisplayName>" -								<< "<BuddyData></BuddyData>"	// Without this, SLVoice doesn't seem to parse the command. -								<< "<GroupID>0</GroupID>" -							<< "</Request>\n\n\n";	 -					} -				} -				else if(!buddy->mInSLFriends) -				{ -					// This entry no longer exists in your SL friends list.  Remove all traces of it from the Vivox buddy list. - 					if(buddy->mInVivoxBuddies) -					{ -						// delete this entry from the vivox buddy list -						buddy->mInVivoxBuddies = false; -						LL_DEBUGS("Voice") << "delete " << buddy->mURI << " (" << buddy->mDisplayName << ")" << LL_ENDL; -						stream << "<Request requestId=\"" << mCommandCookie++ << "\" action=\"Account.BuddyDelete.1\">" -							<< "<AccountHandle>" << mAccountHandle << "</AccountHandle>" -							<< "<BuddyURI>" << buddy->mURI << "</BuddyURI>" -							<< "</Request>\n\n\n";		 -					} - -					if(buddy->mHasBlockListEntry) -					{ -						// Delete the associated block list entry, if any -						buddy->mHasBlockListEntry = false; -						stream << "<Request requestId=\"" << mCommandCookie++ << "\" action=\"Account.DeleteBlockRule.1\">" -							<< "<AccountHandle>" << mAccountHandle << "</AccountHandle>" -							<< "<BlockMask>" << buddy->mURI << "</BlockMask>" -							<< "</Request>\n\n\n";								 -					} -					if(buddy->mHasAutoAcceptListEntry) -					{ -						// Delete the associated auto-accept list entry, if any -						buddy->mHasAutoAcceptListEntry = false; -						stream << "<Request requestId=\"" << mCommandCookie++ << "\" action=\"Account.DeleteAutoAcceptRule.1\">" -							<< "<AccountHandle>" << mAccountHandle << "</AccountHandle>" -							<< "<AutoAcceptMask>" << buddy->mURI << "</AutoAcceptMask>" -							<< "</Request>\n\n\n"; -					} -				} -				 -				if(buddy->mInSLFriends) -				{ - -					if(buddy->mCanSeeMeOnline) -					{ -						// Buddy should not be blocked. - -						// If this buddy doesn't already have either a block or autoaccept list entry, we'll update their status when we receive a SubscriptionEvent. -						 -						// If the buddy has a block list entry, delete it. -						if(buddy->mHasBlockListEntry) -						{ -							buddy->mHasBlockListEntry = false; -							stream << "<Request requestId=\"" << mCommandCookie++ << "\" action=\"Account.DeleteBlockRule.1\">" -								<< "<AccountHandle>" << mAccountHandle << "</AccountHandle>" -								<< "<BlockMask>" << buddy->mURI << "</BlockMask>" -								<< "</Request>\n\n\n";		 -							 -							 -							// If we just deleted a block list entry, add an auto-accept entry. -							if(!buddy->mHasAutoAcceptListEntry) -							{ -								buddy->mHasAutoAcceptListEntry = true;								 -								stream << "<Request requestId=\"" << mCommandCookie++ << "\" action=\"Account.CreateAutoAcceptRule.1\">" -									<< "<AccountHandle>" << mAccountHandle << "</AccountHandle>" -									<< "<AutoAcceptMask>" << buddy->mURI << "</AutoAcceptMask>" -									<< "<AutoAddAsBuddy>0</AutoAddAsBuddy>" -									<< "</Request>\n\n\n"; -							} -						} -					} -					else -					{ -						// Buddy should be blocked. -						 -						// If this buddy doesn't already have either a block or autoaccept list entry, we'll update their status when we receive a SubscriptionEvent. - -						// If this buddy has an autoaccept entry, delete it -						if(buddy->mHasAutoAcceptListEntry) -						{ -							buddy->mHasAutoAcceptListEntry = false; -							stream << "<Request requestId=\"" << mCommandCookie++ << "\" action=\"Account.DeleteAutoAcceptRule.1\">" -								<< "<AccountHandle>" << mAccountHandle << "</AccountHandle>" -								<< "<AutoAcceptMask>" << buddy->mURI << "</AutoAcceptMask>" -								<< "</Request>\n\n\n"; -						 -							// If we just deleted an auto-accept entry, add a block list entry. -							if(!buddy->mHasBlockListEntry) -							{ -								buddy->mHasBlockListEntry = true; -								stream << "<Request requestId=\"" << mCommandCookie++ << "\" action=\"Account.CreateBlockRule.1\">" -									<< "<AccountHandle>" << mAccountHandle << "</AccountHandle>" -									<< "<BlockMask>" << buddy->mURI << "</BlockMask>" -									<< "<PresenceOnly>1</PresenceOnly>" -									<< "</Request>\n\n\n";								 -							} -						} -					} - -					if(!buddy->mInSLFriends && !buddy->mInVivoxBuddies) -					{ -						// Delete this entry from the local buddy list.  This should NOT invalidate the iterator, -						// since it has already been incremented to the next entry. -						deleteBuddy(buddy->mURI); -					} - -				} -				writeString(stream.str()); -			} -		} -	} -} -  /////////////////////////////  // Response/Event handlers @@ -3745,83 +3440,6 @@ void LLVivoxVoiceClient::participantUpdatedEvent(  	}  } -void LLVivoxVoiceClient::buddyPresenceEvent( -		std::string &uriString,  -		std::string &alias,  -		std::string &statusString, -		std::string &applicationString) -{ -	buddyListEntry *buddy = findBuddy(uriString); -	 -	if(buddy) -	{ -		LL_DEBUGS("Voice") << "Presence event for " << buddy->mDisplayName << " status \"" << statusString << "\", application \"" << applicationString << "\""<< LL_ENDL; -		LL_DEBUGS("Voice") << "before: mOnlineSL = " << (buddy->mOnlineSL?"true":"false") << ", mOnlineSLim = " << (buddy->mOnlineSLim?"true":"false") << LL_ENDL; - -		if(applicationString.empty()) -		{ -			// This presence event is from a client that doesn't set up the Application string.  Do things the old-skool way. -			// NOTE: this will be needed to support people who aren't on the 3010-class SDK yet. - -			if ( stricmp("Unknown", statusString.c_str())== 0)  -			{ -				// User went offline with a non-SLim-enabled viewer. -				buddy->mOnlineSL = false; -			} -			else if ( stricmp("Online", statusString.c_str())== 0)  -			{ -				// User came online with a non-SLim-enabled viewer. -				buddy->mOnlineSL = true; -			} -			else -			{ -				// If the user is online through SLim, their status will be "Online-slc", "Away", or something else. -				// NOTE: we should never see this unless someone is running an OLD version of SLim -- the versions that should be in use now all set the application string. -				buddy->mOnlineSLim = true; -			}  -		} -		else if(applicationString.find("SecondLifeViewer") != std::string::npos) -		{ -			// This presence event is from a viewer that sets the application string -			if ( stricmp("Unknown", statusString.c_str())== 0)  -			{ -				// Viewer says they're offline -				buddy->mOnlineSL = false; -			} -			else -			{ -				// Viewer says they're online -				buddy->mOnlineSL = true; -			} -		} -		else -		{ -			// This presence event is from something which is NOT the SL viewer (assume it's SLim). -			if ( stricmp("Unknown", statusString.c_str())== 0)  -			{ -				// SLim says they're offline -				buddy->mOnlineSLim = false; -			} -			else -			{ -				// SLim says they're online -				buddy->mOnlineSLim = true; -			} -		}  - -		LL_DEBUGS("Voice") << "after: mOnlineSL = " << (buddy->mOnlineSL?"true":"false") << ", mOnlineSLim = " << (buddy->mOnlineSLim?"true":"false") << LL_ENDL; -		 -		// HACK -- increment the internal change serial number in the LLRelationship (without changing the actual status), so the UI notices the change. -		LLAvatarTracker::instance().setBuddyOnline(buddy->mUUID,LLAvatarTracker::instance().isBuddyOnline(buddy->mUUID)); - -		notifyFriendObservers(); -	} -	else -	{ -		LL_DEBUGS("Voice") << "Presence for unknown buddy " << uriString << LL_ENDL; -	}	 -} -  void LLVivoxVoiceClient::messageEvent(  		std::string &sessionHandle,   		std::string &uriString,  @@ -4013,70 +3631,12 @@ void LLVivoxVoiceClient::sessionNotificationEvent(std::string &sessionHandle, st  	}  } -void LLVivoxVoiceClient::subscriptionEvent(std::string &buddyURI, std::string &subscriptionHandle, std::string &alias, std::string &displayName, std::string &applicationString, std::string &subscriptionType) -{ -	buddyListEntry *buddy = findBuddy(buddyURI); -	 -	if(!buddy) -	{ -		// Couldn't find buddy by URI, try converting the alias... -		if(!alias.empty()) -		{ -			LLUUID id; -			if(IDFromName(alias, id)) -			{ -				buddy = findBuddy(id); -			} -		} -	} -	 -	if(buddy) -	{ -		std::ostringstream stream; -		 -		if(buddy->mCanSeeMeOnline) -		{ -			// Sending the response will create an auto-accept rule -			buddy->mHasAutoAcceptListEntry = true; -		} -		else -		{ -			// Sending the response will create a block rule -			buddy->mHasBlockListEntry = true; -		} -		 -		if(buddy->mInSLFriends) -		{ -			buddy->mInVivoxBuddies = true; -		} -		 -		stream -			<< "<Request requestId=\"" << mCommandCookie++ << "\" action=\"Account.SendSubscriptionReply.1\">" -				<< "<AccountHandle>" << mAccountHandle << "</AccountHandle>" -				<< "<BuddyURI>" << buddy->mURI << "</BuddyURI>" -				<< "<RuleType>" << (buddy->mCanSeeMeOnline?"Allow":"Hide") << "</RuleType>" -				<< "<AutoAccept>"<< (buddy->mInSLFriends?"1":"0")<< "</AutoAccept>" -				<< "<SubscriptionHandle>" << subscriptionHandle << "</SubscriptionHandle>" -			<< "</Request>" -			<< "\n\n\n"; -			 -		writeString(stream.str()); -	} -} -  void LLVivoxVoiceClient::auxAudioPropertiesEvent(F32 energy)  {  	LL_DEBUGS("Voice") << "got energy " << energy << LL_ENDL;  	mTuningEnergy = energy;  } -void LLVivoxVoiceClient::buddyListChanged() -{ -	// This is called after we receive a BuddyAndGroupListChangedEvent. -	mBuddyListMapPopulated = true; -	mFriendsListDirty = true; -} -  void LLVivoxVoiceClient::muteListChanged()  {  	// The user's mute list has been updated.  Go through the current participant list and sync it with the mute list. @@ -4095,15 +3655,6 @@ void LLVivoxVoiceClient::muteListChanged()  	}  } -void LLVivoxVoiceClient::updateFriends(U32 mask) -{ -	if(mask & (LLFriendObserver::ADD | LLFriendObserver::REMOVE | LLFriendObserver::POWERS)) -	{ -		// Just resend the whole friend list to the daemon -		mFriendsListDirty = true; -	} -} -  /////////////////////////////  // Managing list of participants  LLVivoxVoiceClient::participantState::participantState(const std::string &uri) :  @@ -4702,34 +4253,6 @@ bool LLVivoxVoiceClient::answerInvite(std::string &sessionHandle)  	return false;  } -BOOL LLVivoxVoiceClient::isOnlineSIP(const LLUUID &id) -{ -	bool result = false; -	buddyListEntry *buddy = findBuddy(id); -	if(buddy) -	{ -		result = buddy->mOnlineSLim; -		LL_DEBUGS("Voice") << "Buddy " << buddy->mDisplayName << " is SIP " << (result?"online":"offline") << LL_ENDL; -	} - -	if(!result) -	{ -		// This user isn't on the buddy list or doesn't show online status through the buddy list, but could be a participant in an existing session if they initiated a text IM. -		sessionState *session = findSession(id); -		if(session && !session->mHandle.empty()) -		{ -			if((session->mTextStreamState != streamStateUnknown) || (session->mMediaStreamState > streamStateIdle)) -			{ -				LL_DEBUGS("Voice") << "Open session with " << id << " found, returning SIP online state" << LL_ENDL; -				// we have a p2p text session open with this user, so by definition they're online. -				result = true; -			} -		} -	} -	 -	return result; -} -  bool LLVivoxVoiceClient::isVoiceWorking() const  {    //Added stateSessionTerminated state to avoid problems with call in parcels with disabled voice (EXT-4758) @@ -4786,7 +4309,7 @@ BOOL LLVivoxVoiceClient::isSessionCallBackPossible(const LLUUID &session_id)  // Currently this will be false only for PSTN P2P calls.  BOOL LLVivoxVoiceClient::isSessionTextIMPossible(const LLUUID &session_id)  { -	bool result = TRUE;  +	bool result = TRUE; //SPATTERS TODO cruft?  	sessionState *session = findSession(session_id);  	if(session != NULL) @@ -5835,229 +5358,6 @@ void LLVivoxVoiceClient::verifySessionState(void)  	}  } -LLVivoxVoiceClient::buddyListEntry::buddyListEntry(const std::string &uri) : -	mURI(uri) -{ -	mOnlineSL = false; -	mOnlineSLim = false; -	mCanSeeMeOnline = true; -	mHasBlockListEntry = false; -	mHasAutoAcceptListEntry = false; -	mNameResolved = false; -	mInVivoxBuddies = false; -	mInSLFriends = false; -	mNeedsNameUpdate = false; -} - -void LLVivoxVoiceClient::processBuddyListEntry(const std::string &uri, const std::string &displayName) -{ -	buddyListEntry *buddy = addBuddy(uri, displayName); -	buddy->mInVivoxBuddies = true;	 -} - -LLVivoxVoiceClient::buddyListEntry *LLVivoxVoiceClient::addBuddy(const std::string &uri) -{ -	std::string empty; -	buddyListEntry *buddy = addBuddy(uri, empty); -	if(buddy->mDisplayName.empty()) -	{ -		buddy->mNameResolved = false; -	} -	return buddy; -} - -LLVivoxVoiceClient::buddyListEntry *LLVivoxVoiceClient::addBuddy(const std::string &uri, const std::string &displayName) -{ -	buddyListEntry *result = NULL; -	buddyListMap::iterator iter = mBuddyListMap.find(uri); -	 -	if(iter != mBuddyListMap.end()) -	{ -		// Found a matching buddy already in the map. -		LL_DEBUGS("Voice") << "adding existing buddy " << uri << LL_ENDL; -		result = iter->second; -	} - -	if(!result) -	{ -		// participant isn't already in one list or the other. -		LL_DEBUGS("Voice") << "adding new buddy " << uri << LL_ENDL; -		result = new buddyListEntry(uri); -		result->mDisplayName = displayName; - -		if(IDFromName(uri, result->mUUID))  -		{ -			// Extracted UUID from name successfully. -		} -		else -		{ -			LL_DEBUGS("Voice") << "Couldn't find ID for buddy " << uri << " (\"" << displayName << "\")" << LL_ENDL; -		} - -		mBuddyListMap.insert(buddyListMap::value_type(result->mURI, result)); -	} -	 -	return result; -} - -LLVivoxVoiceClient::buddyListEntry *LLVivoxVoiceClient::findBuddy(const std::string &uri) -{ -	buddyListEntry *result = NULL; -	buddyListMap::iterator iter = mBuddyListMap.find(uri); -	if(iter != mBuddyListMap.end()) -	{ -		result = iter->second; -	} -	 -	return result; -} - -LLVivoxVoiceClient::buddyListEntry *LLVivoxVoiceClient::findBuddy(const LLUUID &id) -{ -	buddyListEntry *result = NULL; -	buddyListMap::iterator iter; - -	for(iter = mBuddyListMap.begin(); iter != mBuddyListMap.end(); iter++) -	{ -		if(iter->second->mUUID == id) -		{ -			result = iter->second; -			break; -		} -	} -	 -	return result; -} - -LLVivoxVoiceClient::buddyListEntry *LLVivoxVoiceClient::findBuddyByDisplayName(const std::string &name) -{ -	buddyListEntry *result = NULL; -	buddyListMap::iterator iter; - -	for(iter = mBuddyListMap.begin(); iter != mBuddyListMap.end(); iter++) -	{ -		if(iter->second->mDisplayName == name) -		{ -			result = iter->second; -			break; -		} -	} -	 -	return result; -} - -void LLVivoxVoiceClient::deleteBuddy(const std::string &uri) -{ -	buddyListMap::iterator iter = mBuddyListMap.find(uri); -	if(iter != mBuddyListMap.end()) -	{ -		LL_DEBUGS("Voice") << "deleting buddy " << uri << LL_ENDL; -		buddyListEntry *buddy = iter->second; -		mBuddyListMap.erase(iter); -		delete buddy; -	} -	else -	{ -		LL_DEBUGS("Voice") << "attempt to delete nonexistent buddy " << uri << LL_ENDL; -	} -	 -} - -void LLVivoxVoiceClient::deleteAllBuddies(void) -{ -	while(!mBuddyListMap.empty()) -	{ -		deleteBuddy(mBuddyListMap.begin()->first); -	} -	 -	// Don't want to correlate with friends list when we've emptied the buddy list. -	mBuddyListMapPopulated = false; -	 -	// Don't want to correlate with friends list when we've reset the block rules. -	mBlockRulesListReceived = false; -	mAutoAcceptRulesListReceived = false; -} - -void LLVivoxVoiceClient::deleteAllBlockRules(void) -{ -	// Clear the block list entry flags from all local buddy list entries -	buddyListMap::iterator buddy_it; -	for(buddy_it = mBuddyListMap.begin(); buddy_it != mBuddyListMap.end(); buddy_it++) -	{ -		buddy_it->second->mHasBlockListEntry = false; -	} -} - -void LLVivoxVoiceClient::deleteAllAutoAcceptRules(void) -{ -	// Clear the auto-accept list entry flags from all local buddy list entries -	buddyListMap::iterator buddy_it; -	for(buddy_it = mBuddyListMap.begin(); buddy_it != mBuddyListMap.end(); buddy_it++) -	{ -		buddy_it->second->mHasAutoAcceptListEntry = false; -	} -} - -void LLVivoxVoiceClient::addBlockRule(const std::string &blockMask, const std::string &presenceOnly) -{ -	buddyListEntry *buddy = NULL; - -	// blockMask is the SIP URI of a friends list entry -	buddyListMap::iterator iter = mBuddyListMap.find(blockMask); -	if(iter != mBuddyListMap.end()) -	{ -		LL_DEBUGS("Voice") << "block list entry for " << blockMask << LL_ENDL; -		buddy = iter->second; -	} - -	if(buddy == NULL) -	{ -		LL_DEBUGS("Voice") << "block list entry for unknown buddy " << blockMask << LL_ENDL; -		buddy = addBuddy(blockMask); -	} -	 -	if(buddy != NULL) -	{ -		buddy->mHasBlockListEntry = true; -	} -} - -void LLVivoxVoiceClient::addAutoAcceptRule(const std::string &autoAcceptMask, const std::string &autoAddAsBuddy) -{ -	buddyListEntry *buddy = NULL; - -	// blockMask is the SIP URI of a friends list entry -	buddyListMap::iterator iter = mBuddyListMap.find(autoAcceptMask); -	if(iter != mBuddyListMap.end()) -	{ -		LL_DEBUGS("Voice") << "auto-accept list entry for " << autoAcceptMask << LL_ENDL; -		buddy = iter->second; -	} - -	if(buddy == NULL) -	{ -		LL_DEBUGS("Voice") << "auto-accept list entry for unknown buddy " << autoAcceptMask << LL_ENDL; -		buddy = addBuddy(autoAcceptMask); -	} - -	if(buddy != NULL) -	{ -		buddy->mHasAutoAcceptListEntry = true; -	} -} - -void LLVivoxVoiceClient::accountListBlockRulesResponse(int statusCode, const std::string &statusString) -{ -	// Block list entries were updated via addBlockRule() during parsing.  Just flag that we're done. -	mBlockRulesListReceived = true; -} - -void LLVivoxVoiceClient::accountListAutoAcceptRulesResponse(int statusCode, const std::string &statusString) -{ -	// Block list entries were updated via addBlockRule() during parsing.  Just flag that we're done. -	mAutoAcceptRulesListReceived = true; -} -  void LLVivoxVoiceClient::addObserver(LLVoiceClientParticipantObserver* observer)  {  	mParticipantObservers.insert(observer); @@ -6205,11 +5505,7 @@ void LLVivoxVoiceClient::onAvatarNameCache(const LLUUID& agent_id,  void LLVivoxVoiceClient::avatarNameResolved(const LLUUID &id, const std::string &name)  { -	// If the avatar whose name just resolved is on our friends list, resync the friends list. -	if(LLAvatarTracker::instance().getBuddyInfo(id) != NULL) -	{ -		mFriendsListDirty = true; -	} +    //SPATTERS delete this if statment and action  	// Iterate over all sessions.  	for(sessionIterator iter = sessionsBegin(); iter != sessionsEnd(); iter++)  	{ @@ -7116,18 +6412,6 @@ void LLVivoxProtocolParser::StartTag(const char *tag, const char **attr)  			{  				deviceString.clear();  			}			 -			else if (!stricmp("Buddies", tag)) -			{ -				LLVivoxVoiceClient::getInstance()->deleteAllBuddies(); -			} -			else if (!stricmp("BlockRules", tag)) -			{ -				LLVivoxVoiceClient::getInstance()->deleteAllBlockRules(); -			} -			else if (!stricmp("AutoAcceptRules", tag)) -			{ -				LLVivoxVoiceClient::getInstance()->deleteAllAutoAcceptRules(); -			}  			else if (!stricmp("SessionFont", tag))  			{  				id = 0; @@ -7259,22 +6543,10 @@ void LLVivoxProtocolParser::EndTag(const char *tag)  		{  			LLVivoxVoiceClient::getInstance()->addRenderDevice(deviceString);  		} -		else if (!stricmp("Buddy", tag)) -		{ -			LLVivoxVoiceClient::getInstance()->processBuddyListEntry(uriString, displayNameString); -		} -		else if (!stricmp("BlockRule", tag)) -		{ -			LLVivoxVoiceClient::getInstance()->addBlockRule(blockMask, presenceOnly); -		}  		else if (!stricmp("BlockMask", tag))  			blockMask = string;  		else if (!stricmp("PresenceOnly", tag))  			presenceOnly = string; -		else if (!stricmp("AutoAcceptRule", tag)) -		{ -			LLVivoxVoiceClient::getInstance()->addAutoAcceptRule(autoAcceptMask, autoAddAsBuddy); -		}  		else if (!stricmp("AutoAcceptMask", tag))  			autoAcceptMask = string;  		else if (!stricmp("AutoAddAsBuddy", tag)) @@ -7506,16 +6778,6 @@ void LLVivoxProtocolParser::processResponse(std::string tag)  			LLVivoxVoiceClient::getInstance()->auxAudioPropertiesEvent(energy);  		} -		else if (!stricmp(eventTypeCstr, "BuddyPresenceEvent")) -		{ -			LLVivoxVoiceClient::getInstance()->buddyPresenceEvent(uriString, alias, statusString, applicationString); -		} -		else if (!stricmp(eventTypeCstr, "BuddyAndGroupListChangedEvent")) -		{ -			// The buddy list was updated during parsing. -			// Need to recheck against the friends list. -			LLVivoxVoiceClient::getInstance()->buddyListChanged(); -		}  		else if (!stricmp(eventTypeCstr, "BuddyChangedEvent"))  		{  			/* @@ -7538,11 +6800,7 @@ void LLVivoxProtocolParser::processResponse(std::string tag)  		{  			LLVivoxVoiceClient::getInstance()->sessionNotificationEvent(sessionHandle, uriString, notificationType);  		} -		else if (!stricmp(eventTypeCstr, "SubscriptionEvent"))   -		{ -			LLVivoxVoiceClient::getInstance()->subscriptionEvent(uriString, subscriptionHandle, alias, displayNameString, applicationString, subscriptionType); -		} -		else if (!stricmp(eventTypeCstr, "SessionUpdatedEvent"))   +		else if (!stricmp(eventTypeCstr, "SessionUpdatedEvent"))  		{  			/*  			 <Event type="SessionUpdatedEvent"> @@ -7605,14 +6863,6 @@ void LLVivoxProtocolParser::processResponse(std::string tag)  		{  			LLVivoxVoiceClient::getInstance()->connectorShutdownResponse(statusCode, statusString);			  		} -		else if (!stricmp(actionCstr, "Account.ListBlockRules.1")) -		{ -			LLVivoxVoiceClient::getInstance()->accountListBlockRulesResponse(statusCode, statusString);						 -		} -		else if (!stricmp(actionCstr, "Account.ListAutoAcceptRules.1")) -		{ -			LLVivoxVoiceClient::getInstance()->accountListAutoAcceptRulesResponse(statusCode, statusString);						 -		}  		else if (!stricmp(actionCstr, "Session.Set3DPosition.1"))  		{  			// We don't need to process these, but they're so spammy we don't want to log them. diff --git a/indra/newview/llvoicevivox.h b/indra/newview/llvoicevivox.h index 1142a1a49c..5184d4fe16 100644 --- a/indra/newview/llvoicevivox.h +++ b/indra/newview/llvoicevivox.h @@ -48,7 +48,6 @@ class LLVivoxProtocolParser;  class LLAvatarName;  class LLVivoxVoiceAccountProvisionResponder;  class LLVivoxVoiceClientMuteListObserver; -class LLVivoxVoiceClientFriendsObserver;	  class LLVivoxVoiceClient :	public LLSingleton<LLVivoxVoiceClient>, @@ -181,7 +180,6 @@ public:  	//@{  	virtual BOOL getVoiceEnabled(const LLUUID& id);		// true if we've received data for this avatar  	virtual std::string getDisplayName(const LLUUID& id); -	virtual BOOL isOnlineSIP(const LLUUID &id);  	virtual BOOL isParticipantAvatar(const LLUUID &id);  	virtual BOOL getIsSpeaking(const LLUUID& id);  	virtual BOOL getIsModeratorMuted(const LLUUID& id); @@ -488,14 +486,10 @@ protected:  	void participantRemovedEvent(std::string &sessionHandle, std::string &sessionGroupHandle, std::string &uriString, std::string &alias, std::string &nameString);  	void participantUpdatedEvent(std::string &sessionHandle, std::string &sessionGroupHandle, std::string &uriString, std::string &alias, bool isModeratorMuted, bool isSpeaking, int volume, F32 energy);  	void auxAudioPropertiesEvent(F32 energy); -	void buddyPresenceEvent(std::string &uriString, std::string &alias, std::string &statusString, std::string &applicationString);  	void messageEvent(std::string &sessionHandle, std::string &uriString, std::string &alias, std::string &messageHeader, std::string &messageBody, std::string &applicationString);  	void sessionNotificationEvent(std::string &sessionHandle, std::string &uriString, std::string ¬ificationType); -	void subscriptionEvent(std::string &buddyURI, std::string &subscriptionHandle, std::string &alias, std::string &displayName, std::string &applicationString, std::string &subscriptionType); -	void buddyListChanged();  	void muteListChanged(); -	void updateFriends(U32 mask);  	/////////////////////////////  	// Sending updates of current state @@ -587,24 +581,6 @@ protected:  	typedef std::map<std::string, buddyListEntry*> buddyListMap; -	// This should be called when parsing a buddy list entry sent by SLVoice.		 -	void processBuddyListEntry(const std::string &uri, const std::string &displayName); - -	buddyListEntry *addBuddy(const std::string &uri); -	buddyListEntry *addBuddy(const std::string &uri, const std::string &displayName); -	buddyListEntry *findBuddy(const std::string &uri); -	buddyListEntry *findBuddy(const LLUUID &id); -	buddyListEntry *findBuddyByDisplayName(const std::string &name); -	void deleteBuddy(const std::string &uri); -	void deleteAllBuddies(void); - -	void deleteAllBlockRules(void); -	void addBlockRule(const std::string &blockMask, const std::string &presenceOnly); -	void deleteAllAutoAcceptRules(void); -	void addAutoAcceptRule(const std::string &autoAcceptMask, const std::string &autoAddAsBuddy); -	void accountListBlockRulesResponse(int statusCode, const std::string &statusString);						 -	void accountListAutoAcceptRulesResponse(int statusCode, const std::string &statusString); -  	/////////////////////////////  	// session control messages @@ -770,8 +746,7 @@ private:  	void buildSetCaptureDevice(std::ostringstream &stream);  	void buildSetRenderDevice(std::ostringstream &stream); -	void clearAllLists(); -	void checkFriend(const LLUUID& id); +  	void sendFriendsListUpdates();  	// start a text IM session with the specified user | 
