From 4541a5fe7867ec5e1f58f776dddb9337b461b8f2 Mon Sep 17 00:00:00 2001 From: Stephen Birarda Date: Mon, 25 Feb 2013 12:24:42 -0800 Subject: [PATCH] AgentList returns agents vector and agentSocket by reference --- interface/src/main.cpp | 8 ++++---- shared/src/AgentList.cpp | 8 ++++++-- shared/src/AgentList.h | 15 +++++++++------ 3 files changed, 19 insertions(+), 12 deletions(-) diff --git a/interface/src/main.cpp b/interface/src/main.cpp index 44ed1b8ac9..9b3ad7a39f 100644 --- a/interface/src/main.cpp +++ b/interface/src/main.cpp @@ -223,7 +223,7 @@ void Timer(int extra) output[0] = 'I'; packSocket(output + 1, localAddress, htons(AGENT_SOCKET_LISTEN_PORT)); - agentList.getAgentSocket()->send(DOMAIN_IP, DOMAINSERVER_PORT, output, 7); + agentList.getAgentSocket().send(DOMAIN_IP, DOMAINSERVER_PORT, output, 7); // Ping the agents we can see agentList.pingAgents(); @@ -570,7 +570,7 @@ void display(void) if (display_field) field.render(); // Render heads of other agents - for(std::vector::iterator agent = agentList.agents.begin(); agent != agentList.agents.end(); agent++) { + for(std::vector::iterator agent = agentList.getAgents().begin(); agent != agentList.getAgents().end(); agent++) { if (agent->linkedData != NULL) { Head *agentHead = (Head *)agent->linkedData; glPushMatrix(); @@ -659,7 +659,7 @@ void display(void) // Draw number of nearby people always char agents[100]; - sprintf(agents, "Agents nearby: %ld\n", agentList.agents.size()); + sprintf(agents, "Agents nearby: %ld\n", agentList.getAgents().size()); drawtext(WIDTH-200,20, 0.10, 0, 1.0, 0, agents, 1, 1, 0); glPopMatrix(); @@ -744,7 +744,7 @@ void *networkReceive(void *args) char *incomingPacket = new char[MAX_PACKET_SIZE]; while (!stopNetworkReceiveThread) { - if (agentList.getAgentSocket()->receive(&senderAddress, incomingPacket, &bytesReceived)) { + if (agentList.getAgentSocket().receive(&senderAddress, incomingPacket, &bytesReceived)) { packetcount++; bytescount += bytesReceived; diff --git a/shared/src/AgentList.cpp b/shared/src/AgentList.cpp index fdf4e430ff..0a72c3065e 100644 --- a/shared/src/AgentList.cpp +++ b/shared/src/AgentList.cpp @@ -30,8 +30,12 @@ AgentList::~AgentList() { stopSilentAgentRemovalThread(); } -UDPSocket * AgentList::getAgentSocket() { - return &agentSocket; +std::vector& AgentList::getAgents() { + return agents; +} + +UDPSocket& AgentList::getAgentSocket() { + return agentSocket; } void AgentList::processAgentData(sockaddr *senderAddress, void *packetData, size_t dataBytes) { diff --git a/shared/src/AgentList.h b/shared/src/AgentList.h index 734d64da9e..2755058503 100644 --- a/shared/src/AgentList.h +++ b/shared/src/AgentList.h @@ -16,18 +16,19 @@ const unsigned short AGENT_SOCKET_LISTEN_PORT = 40103; const int AGENT_SILENCE_THRESHOLD_USECS = 2 * 1000000; -extern const char *SOLO_AGENT_TYPES_STRINGg; +extern const char *SOLO_AGENT_TYPES_STRING; class AgentList { public: AgentList(); AgentList(int socketListenPort); ~AgentList(); - std::vector agents; + void(*linkedDataCreateCallback)(Agent *); void(*audioMixerSocketUpdate)(in_addr_t, in_port_t); - - UDPSocket* getAgentSocket(); + + std::vector& getAgents(); + UDPSocket& getAgentSocket(); int updateList(unsigned char *packetData, size_t dataBytes); bool addOrUpdateAgent(sockaddr *publicSocket, sockaddr *localSocket, char agentType); @@ -38,11 +39,13 @@ class AgentList { void startSilentAgentRemovalThread(); void stopSilentAgentRemovalThread(); private: + UDPSocket agentSocket; + std::vector agents; + pthread_t removeSilentAgentsThread; + int indexOfMatchingAgent(sockaddr *senderAddress); void updateAgentWithData(sockaddr *senderAddress, void *packetData, size_t dataBytes); void handlePingReply(sockaddr *agentAddress); - UDPSocket agentSocket; - pthread_t removeSilentAgentsThread; }; #endif /* defined(__hifi__AgentList__) */