mirror of
https://github.com/overte-org/overte.git
synced 2025-04-20 14:24:22 +02:00
AgentList returns agents vector and agentSocket by reference
This commit is contained in:
parent
72ddc78ad6
commit
5910fdd7b7
3 changed files with 19 additions and 12 deletions
|
@ -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<Agent>::iterator agent = agentList.agents.begin(); agent != agentList.agents.end(); agent++) {
|
||||
for(std::vector<Agent>::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;
|
||||
|
||||
|
|
|
@ -30,8 +30,12 @@ AgentList::~AgentList() {
|
|||
stopSilentAgentRemovalThread();
|
||||
}
|
||||
|
||||
UDPSocket * AgentList::getAgentSocket() {
|
||||
return &agentSocket;
|
||||
std::vector<Agent>& AgentList::getAgents() {
|
||||
return agents;
|
||||
}
|
||||
|
||||
UDPSocket& AgentList::getAgentSocket() {
|
||||
return agentSocket;
|
||||
}
|
||||
|
||||
void AgentList::processAgentData(sockaddr *senderAddress, void *packetData, size_t dataBytes) {
|
||||
|
|
|
@ -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<Agent> agents;
|
||||
|
||||
void(*linkedDataCreateCallback)(Agent *);
|
||||
void(*audioMixerSocketUpdate)(in_addr_t, in_port_t);
|
||||
|
||||
UDPSocket* getAgentSocket();
|
||||
|
||||
std::vector<Agent>& 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<Agent> 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__) */
|
||||
|
|
Loading…
Reference in a new issue