From 010c7e028da2cba8c8239dc16f3d89119b28aa15 Mon Sep 17 00:00:00 2001 From: Stephen Birarda Date: Wed, 10 Apr 2013 15:30:21 -0700 Subject: [PATCH] switch from strchr to memchr for broadcastToAgents --- interface/src/main.cpp | 14 +++++--------- shared/src/AgentList.cpp | 4 ++-- shared/src/AgentList.h | 2 +- 3 files changed, 8 insertions(+), 12 deletions(-) diff --git a/interface/src/main.cpp b/interface/src/main.cpp index 0ce344bdfd..b15b90487f 100644 --- a/interface/src/main.cpp +++ b/interface/src/main.cpp @@ -471,13 +471,9 @@ void simulateHead(float frametime) // Send my stream of head/hand data to the avatar mixer and voxel server char broadcastString[200]; int broadcastBytes = myAvatar.getBroadcastData(broadcastString); + const char broadcastReceivers[2] = {AGENT_TYPE_VOXEL, AGENT_TYPE_AVATAR_MIXER}; - char broadcastReceivers[3]; - *broadcastReceivers = AGENT_TYPE_VOXEL; - *(broadcastReceivers + 1) = AGENT_TYPE_AVATAR_MIXER; - *(broadcastReceivers + 2) = '\0'; - - agentList.broadcastToAgents(broadcastString, broadcastBytes, broadcastReceivers); + agentList.broadcastToAgents(broadcastString, broadcastBytes, broadcastReceivers, 2); // If I'm in paint mode, send a voxel out to VOXEL server agents. if (::paintOn) { @@ -497,7 +493,7 @@ void simulateHead(float frametime) ::paintingVoxel.z >= 0.0 && ::paintingVoxel.z <= 1.0) { if (createVoxelEditMessage(PACKET_HEADER_SET_VOXEL, 0, 1, &::paintingVoxel, bufferOut, sizeOut)){ - agentList.broadcastToAgents((char*)bufferOut, sizeOut, &AGENT_TYPE_VOXEL); + agentList.broadcastToAgents((char*)bufferOut, sizeOut, &AGENT_TYPE_VOXEL, 1); delete bufferOut; } } @@ -864,14 +860,14 @@ void sendVoxelServerEraseAll() { char message[100]; sprintf(message,"%c%s",'Z',"erase all"); int messageSize = strlen(message) + 1; - ::agentList.broadcastToAgents(message, messageSize, &AGENT_TYPE_VOXEL); + ::agentList.broadcastToAgents(message, messageSize, &AGENT_TYPE_VOXEL, 1); } void sendVoxelServerAddScene() { char message[100]; sprintf(message,"%c%s",'Z',"add scene"); int messageSize = strlen(message) + 1; - ::agentList.broadcastToAgents(message, messageSize, &AGENT_TYPE_VOXEL); + ::agentList.broadcastToAgents(message, messageSize, &AGENT_TYPE_VOXEL, 1); } void shiftPaintingColor() diff --git a/shared/src/AgentList.cpp b/shared/src/AgentList.cpp index 0cfac49429..8901a4aa6b 100644 --- a/shared/src/AgentList.cpp +++ b/shared/src/AgentList.cpp @@ -246,10 +246,10 @@ bool AgentList::addOrUpdateAgent(sockaddr *publicSocket, sockaddr *localSocket, } } -void AgentList::broadcastToAgents(char *broadcastData, size_t dataBytes, const char* agentTypes) { +void AgentList::broadcastToAgents(char *broadcastData, size_t dataBytes, const char* agentTypes, int numAgentTypes) { for(std::vector::iterator agent = agents.begin(); agent != agents.end(); agent++) { // only send to the AgentTypes we are asked to send to. - if (agent->getActiveSocket() != NULL && strchr(agentTypes,agent->getType())) { + 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); } diff --git a/shared/src/AgentList.h b/shared/src/AgentList.h index eaecc1bf50..ee61a35c8d 100644 --- a/shared/src/AgentList.h +++ b/shared/src/AgentList.h @@ -66,7 +66,7 @@ public: void updateAgentWithData(sockaddr *senderAddress, void *packetData, size_t dataBytes); void updateAgentWithData(Agent *agent, void *packetData, int dataBytes); - void broadcastToAgents(char *broadcastData, size_t dataBytes, const char* agentTypes); + void broadcastToAgents(char *broadcastData, size_t dataBytes, const char* agentTypes, int numAgentTypes); char getOwnerType(); unsigned int getSocketListenPort();