mirror of
https://github.com/overte-org/overte.git
synced 2025-08-10 01:00:44 +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';
|
output[0] = 'I';
|
||||||
packSocket(output + 1, localAddress, htons(AGENT_SOCKET_LISTEN_PORT));
|
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
|
// Ping the agents we can see
|
||||||
agentList.pingAgents();
|
agentList.pingAgents();
|
||||||
|
@ -570,7 +570,7 @@ void display(void)
|
||||||
if (display_field) field.render();
|
if (display_field) field.render();
|
||||||
|
|
||||||
// Render heads of other agents
|
// 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) {
|
if (agent->linkedData != NULL) {
|
||||||
Head *agentHead = (Head *)agent->linkedData;
|
Head *agentHead = (Head *)agent->linkedData;
|
||||||
glPushMatrix();
|
glPushMatrix();
|
||||||
|
@ -659,7 +659,7 @@ void display(void)
|
||||||
|
|
||||||
// Draw number of nearby people always
|
// Draw number of nearby people always
|
||||||
char agents[100];
|
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);
|
drawtext(WIDTH-200,20, 0.10, 0, 1.0, 0, agents, 1, 1, 0);
|
||||||
|
|
||||||
glPopMatrix();
|
glPopMatrix();
|
||||||
|
@ -744,7 +744,7 @@ void *networkReceive(void *args)
|
||||||
char *incomingPacket = new char[MAX_PACKET_SIZE];
|
char *incomingPacket = new char[MAX_PACKET_SIZE];
|
||||||
|
|
||||||
while (!stopNetworkReceiveThread) {
|
while (!stopNetworkReceiveThread) {
|
||||||
if (agentList.getAgentSocket()->receive(&senderAddress, incomingPacket, &bytesReceived)) {
|
if (agentList.getAgentSocket().receive(&senderAddress, incomingPacket, &bytesReceived)) {
|
||||||
packetcount++;
|
packetcount++;
|
||||||
bytescount += bytesReceived;
|
bytescount += bytesReceived;
|
||||||
|
|
||||||
|
|
|
@ -30,8 +30,12 @@ AgentList::~AgentList() {
|
||||||
stopSilentAgentRemovalThread();
|
stopSilentAgentRemovalThread();
|
||||||
}
|
}
|
||||||
|
|
||||||
UDPSocket * AgentList::getAgentSocket() {
|
std::vector<Agent>& AgentList::getAgents() {
|
||||||
return &agentSocket;
|
return agents;
|
||||||
|
}
|
||||||
|
|
||||||
|
UDPSocket& AgentList::getAgentSocket() {
|
||||||
|
return agentSocket;
|
||||||
}
|
}
|
||||||
|
|
||||||
void AgentList::processAgentData(sockaddr *senderAddress, void *packetData, size_t dataBytes) {
|
void AgentList::processAgentData(sockaddr *senderAddress, void *packetData, size_t dataBytes) {
|
||||||
|
|
|
@ -16,18 +16,19 @@
|
||||||
|
|
||||||
const unsigned short AGENT_SOCKET_LISTEN_PORT = 40103;
|
const unsigned short AGENT_SOCKET_LISTEN_PORT = 40103;
|
||||||
const int AGENT_SILENCE_THRESHOLD_USECS = 2 * 1000000;
|
const int AGENT_SILENCE_THRESHOLD_USECS = 2 * 1000000;
|
||||||
extern const char *SOLO_AGENT_TYPES_STRINGg;
|
extern const char *SOLO_AGENT_TYPES_STRING;
|
||||||
|
|
||||||
class AgentList {
|
class AgentList {
|
||||||
public:
|
public:
|
||||||
AgentList();
|
AgentList();
|
||||||
AgentList(int socketListenPort);
|
AgentList(int socketListenPort);
|
||||||
~AgentList();
|
~AgentList();
|
||||||
std::vector<Agent> agents;
|
|
||||||
void(*linkedDataCreateCallback)(Agent *);
|
void(*linkedDataCreateCallback)(Agent *);
|
||||||
void(*audioMixerSocketUpdate)(in_addr_t, in_port_t);
|
void(*audioMixerSocketUpdate)(in_addr_t, in_port_t);
|
||||||
|
|
||||||
UDPSocket* getAgentSocket();
|
std::vector<Agent>& getAgents();
|
||||||
|
UDPSocket& getAgentSocket();
|
||||||
|
|
||||||
int updateList(unsigned char *packetData, size_t dataBytes);
|
int updateList(unsigned char *packetData, size_t dataBytes);
|
||||||
bool addOrUpdateAgent(sockaddr *publicSocket, sockaddr *localSocket, char agentType);
|
bool addOrUpdateAgent(sockaddr *publicSocket, sockaddr *localSocket, char agentType);
|
||||||
|
@ -38,11 +39,13 @@ class AgentList {
|
||||||
void startSilentAgentRemovalThread();
|
void startSilentAgentRemovalThread();
|
||||||
void stopSilentAgentRemovalThread();
|
void stopSilentAgentRemovalThread();
|
||||||
private:
|
private:
|
||||||
|
UDPSocket agentSocket;
|
||||||
|
std::vector<Agent> agents;
|
||||||
|
pthread_t removeSilentAgentsThread;
|
||||||
|
|
||||||
int indexOfMatchingAgent(sockaddr *senderAddress);
|
int indexOfMatchingAgent(sockaddr *senderAddress);
|
||||||
void updateAgentWithData(sockaddr *senderAddress, void *packetData, size_t dataBytes);
|
void updateAgentWithData(sockaddr *senderAddress, void *packetData, size_t dataBytes);
|
||||||
void handlePingReply(sockaddr *agentAddress);
|
void handlePingReply(sockaddr *agentAddress);
|
||||||
UDPSocket agentSocket;
|
|
||||||
pthread_t removeSilentAgentsThread;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif /* defined(__hifi__AgentList__) */
|
#endif /* defined(__hifi__AgentList__) */
|
||||||
|
|
Loading…
Reference in a new issue