prefer -> notation to (*TYPE) for AgentList iterator

This commit is contained in:
Stephen Birarda 2013-04-25 15:49:25 -07:00
parent dac660efda
commit 625a963918
7 changed files with 49 additions and 43 deletions

View file

@ -86,15 +86,15 @@ void *sendBuffer(void *args)
sentBytes = 0;
for (AgentList::iterator agent = agentList->begin(); agent != agentList->end(); agent++) {
AudioRingBuffer *agentBuffer = (AudioRingBuffer *)(*agent).getLinkedData();
AudioRingBuffer *agentBuffer = (AudioRingBuffer *)agent->getLinkedData();
if (agentBuffer != NULL && agentBuffer->getEndOfLastWrite() != NULL) {
if (!agentBuffer->isStarted()
&& agentBuffer->diffLastWriteNextOutput() <= BUFFER_LENGTH_SAMPLES_PER_CHANNEL + JITTER_BUFFER_SAMPLES) {
printf("Held back buffer for agent with ID %d.\n", (*agent).getAgentId());
printf("Held back buffer for agent with ID %d.\n", agent->getAgentId());
} else if (agentBuffer->diffLastWriteNextOutput() < BUFFER_LENGTH_SAMPLES_PER_CHANNEL) {
printf("Buffer from agent with ID %d starved.\n", (*agent).getAgentId());
printf("Buffer from agent with ID %d starved.\n", agent->getAgentId());
agentBuffer->setStarted(false);
} else {
// good buffer, add this to the mix
@ -109,7 +109,7 @@ void *sendBuffer(void *args)
memset(distanceCoeffs, 0, sizeof(distanceCoeffs));
for (AgentList::iterator agent = agentList->begin(); agent != agentList->end(); agent++) {
AudioRingBuffer *agentRingBuffer = (AudioRingBuffer *)(*agent).getLinkedData();
AudioRingBuffer *agentRingBuffer = (AudioRingBuffer *)agent->getLinkedData();
float agentBearing = agentRingBuffer->getBearing();
bool agentWantsLoopback = false;
@ -218,11 +218,11 @@ void *sendBuffer(void *args)
}
}
agentList->getAgentSocket().send((*agent).getPublicSocket(), clientMix, BUFFER_LENGTH_BYTES);
agentList->getAgentSocket().send(agent->getPublicSocket(), clientMix, BUFFER_LENGTH_BYTES);
}
for (AgentList::iterator agent = agentList->begin(); agent != agentList->end(); agent++) {
AudioRingBuffer *agentBuffer = (AudioRingBuffer *)(*agent).getLinkedData();
AudioRingBuffer *agentBuffer = (AudioRingBuffer *)agent->getLinkedData();
if (agentBuffer->wasAddedToMix()) {
agentBuffer->setNextOutput(agentBuffer->getNextOutput() + BUFFER_LENGTH_SAMPLES_PER_CHANNEL);

View file

@ -132,25 +132,25 @@ int main(int argc, const char * argv[])
agent++) {
if (DEBUG_TO_SELF ||
!(*agent).matches((sockaddr *)&agentPublicAddress, (sockaddr *)&agentLocalAddress, agentType)) {
if (memchr(SOLO_AGENT_TYPES, (*agent).getType(), sizeof(SOLO_AGENT_TYPES)) == NULL) {
!agent->matches((sockaddr *)&agentPublicAddress, (sockaddr *)&agentLocalAddress, agentType)) {
if (memchr(SOLO_AGENT_TYPES, agent->getType(), sizeof(SOLO_AGENT_TYPES)) == NULL) {
// this is an agent of which there can be multiple, just add them to the packet
// don't send avatar agents to other avatars, that will come from avatar mixer
if (agentType != AGENT_TYPE_AVATAR || (*agent).getType() != AGENT_TYPE_AVATAR) {
currentBufferPos = addAgentToBroadcastPacket(currentBufferPos, &(*agent));
if (agentType != AGENT_TYPE_AVATAR || agent->getType() != AGENT_TYPE_AVATAR) {
currentBufferPos = addAgentToBroadcastPacket(currentBufferPos, &*agent);
}
} else {
// solo agent, we need to only send newest
if (newestSoloAgents[(*agent).getType()] == NULL ||
newestSoloAgents[(*agent).getType()]->getFirstRecvTimeUsecs() < (*agent).getFirstRecvTimeUsecs()) {
if (newestSoloAgents[agent->getType()] == NULL ||
newestSoloAgents[agent->getType()]->getFirstRecvTimeUsecs() < agent->getFirstRecvTimeUsecs()) {
// we have to set the newer solo agent to add it to the broadcast later
newestSoloAgents[(*agent).getType()] = &(*agent);
newestSoloAgents[agent->getType()] = &*agent;
}
}
} else {
// this is the agent, just update last receive to now
(*agent).setLastRecvTimeUsecs(usecTimestampNow());
agent->setLastRecvTimeUsecs(usecTimestampNow());
}
}

View file

@ -310,8 +310,8 @@ void Avatar::simulate(float deltaTime) {
agent != agentList->end();
agent++) {
if ((*agent).getLinkedData() != NULL && (*agent).getType() == AGENT_TYPE_AVATAR) {
Avatar *otherAvatar = (Avatar *)(*agent).getLinkedData();
if (agent->getLinkedData() != NULL && agent->getType() == AGENT_TYPE_AVATAR) {
Avatar *otherAvatar = (Avatar *)agent->getLinkedData();
// check for collisions with other avatars and respond
updateAvatarCollisionDetectionAndResponse

View file

@ -913,8 +913,8 @@ void display(void)
for(AgentList::iterator agent = agentList->begin();
agent != agentList->end();
agent++) {
if ((*agent).getLinkedData() != NULL && (*agent).getType() == AGENT_TYPE_AVATAR) {
Avatar *avatar = (Avatar *)(*agent).getLinkedData();
if (agent->getLinkedData() != NULL && agent->getType() == AGENT_TYPE_AVATAR) {
Avatar *avatar = (Avatar *)agent->getLinkedData();
avatar->render(0);
}
}
@ -986,7 +986,7 @@ void display(void)
int totalAvatars = 0, totalServers = 0;
for (AgentList::iterator agent = agentList->begin(); agent != agentList->end(); agent++) {
(*agent).getType() == AGENT_TYPE_AVATAR ? totalAvatars++ : totalServers++;
agent->getType() == AGENT_TYPE_AVATAR ? totalAvatars++ : totalServers++;
}
sprintf(agents, "Servers: %d, Avatars: %d\n", totalServers, totalAvatars);
@ -1499,8 +1499,8 @@ void idle(void) {
//loop through all the other avatars and simulate them...
AgentList * agentList = AgentList::getInstance();
for(AgentList::iterator agent = agentList->begin(); agent != agentList->end(); agent++) {
if ((*agent).getLinkedData() != NULL) {
Avatar *avatar = (Avatar *)(*agent).getLinkedData();
if (agent->getLinkedData() != NULL) {
Avatar *avatar = (Avatar *)agent->getLinkedData();
avatar->simulate(deltaTime);
}
}

View file

@ -172,7 +172,7 @@ int AgentList::updateAgentWithData(Agent *agent, unsigned char *packetData, int
Agent* AgentList::agentWithAddress(sockaddr *senderAddress) {
for(AgentList::iterator agent = begin(); agent != end(); agent++) {
if ((*agent).getActiveSocket() != NULL && socketMatch((*agent).getActiveSocket(), senderAddress)) {
if (agent->getActiveSocket() != NULL && socketMatch(agent->getActiveSocket(), senderAddress)) {
return &*agent;
}
}
@ -182,7 +182,7 @@ Agent* AgentList::agentWithAddress(sockaddr *senderAddress) {
Agent* AgentList::agentWithID(uint16_t agentID) {
for(AgentList::iterator agent = begin(); agent != end(); agent++) {
if ((*agent).getAgentId() == agentID) {
if (agent->getAgentId() == agentID) {
return &*agent;
}
}
@ -230,7 +230,7 @@ bool AgentList::addOrUpdateAgent(sockaddr *publicSocket, sockaddr *localSocket,
if (publicSocket != NULL) {
for (agent = begin(); agent != end(); agent++) {
if ((*agent).matches(publicSocket, localSocket, agentType)) {
if (agent->matches(publicSocket, localSocket, agentType)) {
// we already have this agent, stop checking
break;
}
@ -262,10 +262,10 @@ bool AgentList::addOrUpdateAgent(sockaddr *publicSocket, sockaddr *localSocket,
return true;
} else {
if ((*agent).getType() == AGENT_TYPE_AUDIO_MIXER || (*agent).getType() == AGENT_TYPE_VOXEL) {
if (agent->getType() == AGENT_TYPE_AUDIO_MIXER || agent->getType() == AGENT_TYPE_VOXEL) {
// until the Audio class also uses our agentList, we need to update
// the lastRecvTimeUsecs for the audio mixer so it doesn't get killed and re-added continously
(*agent).setLastRecvTimeUsecs(usecTimestampNow());
agent->setLastRecvTimeUsecs(usecTimestampNow());
}
// we had this agent already, do nothing for now
@ -292,9 +292,9 @@ void AgentList::addAgentToList(Agent* newAgent) {
void AgentList::broadcastToAgents(unsigned char *broadcastData, size_t dataBytes, const char* agentTypes, int numAgentTypes) {
for(AgentList::iterator agent = begin(); agent != end(); agent++) {
// only send to the AgentTypes we are asked to send to.
if ((*agent).getActiveSocket() != NULL && memchr(agentTypes, (*agent).getType(), numAgentTypes)) {
if (agent->getActiveSocket() != NULL && memchr(agentTypes, agent->getType(), numAgentTypes)) {
// we know which socket is good for this agent, send there
agentSocket.send((*agent).getActiveSocket(), broadcastData, dataBytes);
agentSocket.send(agent->getActiveSocket(), broadcastData, dataBytes);
}
}
}
@ -303,11 +303,11 @@ void AgentList::handlePingReply(sockaddr *agentAddress) {
for(AgentList::iterator agent = begin(); agent != end(); agent++) {
// check both the public and local addresses for each agent to see if we find a match
// prioritize the private address so that we prune erroneous local matches
if (socketMatch((*agent).getPublicSocket(), agentAddress)) {
(*agent).activatePublicSocket();
if (socketMatch(agent->getPublicSocket(), agentAddress)) {
agent->activatePublicSocket();
break;
} else if (socketMatch((*agent).getLocalSocket(), agentAddress)) {
(*agent).activateLocalSocket();
} else if (socketMatch(agent->getLocalSocket(), agentAddress)) {
agent->activateLocalSocket();
break;
}
}
@ -316,7 +316,7 @@ void AgentList::handlePingReply(sockaddr *agentAddress) {
Agent* AgentList::soloAgentOfType(char agentType) {
if (memchr(SOLO_AGENT_TYPES, agentType, sizeof(SOLO_AGENT_TYPES)) != NULL) {
for(AgentList::iterator agent = begin(); agent != end(); agent++) {
if ((*agent).getType() == agentType) {
if (agent->getType() == agentType) {
return &*agent;
}
}
@ -338,12 +338,12 @@ void *pingUnknownAgents(void *args) {
for(AgentList::iterator agent = agentList->begin();
agent != agentList->end();
agent++) {
if ((*agent).getActiveSocket() == NULL
&& ((*agent).getPublicSocket() != NULL && (*agent).getLocalSocket() != NULL)) {
if (agent->getActiveSocket() == NULL
&& (agent->getPublicSocket() != NULL && agent->getLocalSocket() != NULL)) {
// ping both of the sockets for the agent so we can figure out
// which socket we can use
agentList->getAgentSocket().send((*agent).getPublicSocket(), &PACKET_HEADER_PING, 1);
agentList->getAgentSocket().send((*agent).getLocalSocket(), &PACKET_HEADER_PING, 1);
agentList->getAgentSocket().send(agent->getPublicSocket(), &PACKET_HEADER_PING, 1);
agentList->getAgentSocket().send(agent->getLocalSocket(), &PACKET_HEADER_PING, 1);
}
}
@ -375,13 +375,13 @@ void *removeSilentAgents(void *args) {
for(AgentList::iterator agent = agentList->begin(); agent != agentList->end(); ++agent) {
if ((checkTimeUSecs - (*agent).getLastRecvTimeUsecs()) > AGENT_SILENCE_THRESHOLD_USECS
&& (*agent).getType() != AGENT_TYPE_VOXEL) {
if ((checkTimeUSecs - agent->getLastRecvTimeUsecs()) > AGENT_SILENCE_THRESHOLD_USECS
&& agent->getType() != AGENT_TYPE_VOXEL) {
printLog("Killing agent - ");
Agent::printLog(*agent);
(*agent).setAlive(false);
agent->setAlive(false);
}
}
@ -504,6 +504,11 @@ Agent& AgentListIterator::operator*() {
return *agentBucket[_agentIndex % AGENTS_PER_BUCKET];
}
Agent* AgentListIterator::operator->() {
Agent** agentBucket = _agentList->_agentBuckets[_agentIndex / AGENTS_PER_BUCKET];
return agentBucket[_agentIndex % AGENTS_PER_BUCKET];
}
AgentListIterator& AgentListIterator::operator++() {
skipDeadAndStopIncrement();
return *this;

View file

@ -121,6 +121,7 @@ public:
bool operator!= (const AgentListIterator& otherValue);
Agent& operator*();
Agent* operator->();
AgentListIterator& operator++();
AgentListIterator operator++(int);

View file

@ -127,7 +127,7 @@ void eraseVoxelTreeAndCleanupAgentVisitData() {
//printf("eraseVoxelTreeAndCleanupAgentVisitData() agent[%d]\n",i);
VoxelAgentData *agentData = (VoxelAgentData *)(*agent).getLinkedData();
VoxelAgentData *agentData = (VoxelAgentData *)agent->getLinkedData();
// clean up the agent visit data
delete agentData->rootMarkerNode;
@ -155,7 +155,7 @@ void *distributeVoxelsToListeners(void *args) {
// enumerate the agents to send 3 packets to each
for (AgentList::iterator agent = agentList->begin(); agent != agentList->end(); agent++) {
VoxelAgentData *agentData = (VoxelAgentData *)(*agent).getLinkedData();
VoxelAgentData *agentData = (VoxelAgentData *)agent->getLinkedData();
ViewFrustum viewFrustum;
// get position and orientation details from the camera
@ -191,7 +191,7 @@ void *distributeVoxelsToListeners(void *args) {
::viewFrustumCulling,
stopOctal);
agentList->getAgentSocket().send((*agent).getActiveSocket(), voxelPacket, voxelPacketEnd - voxelPacket);
agentList->getAgentSocket().send(agent->getActiveSocket(), voxelPacket, voxelPacketEnd - voxelPacket);
packetCount++;
totalBytesSent += voxelPacketEnd - voxelPacket;