Merge remote-tracking branch 'origin/android_branch' into android_branch

This commit is contained in:
Eric House 2013-07-22 06:13:01 -07:00
commit 385243763a
5 changed files with 24 additions and 11 deletions

View file

@ -1969,7 +1969,7 @@ comms_canChat( const CommsCtxt* const comms )
{ {
XP_Bool canChat = comms_isConnected( comms ) XP_Bool canChat = comms_isConnected( comms )
&& comms->connID != 0 && comms->connID != 0
&& 128 > comms->queueLen; && 64 > comms->queueLen;
LOG_RETURNF( "%d", canChat ); LOG_RETURNF( "%d", canChat );
return canChat; return canChat;
} }

View file

@ -52,7 +52,7 @@ HostRec(HostID hostID, const AddrInfo* addr, int nPlayersH, int seed, bool ackPe
, m_lastHeartbeat(uptime()) , m_lastHeartbeat(uptime())
, m_ackPending(ackPending) , m_ackPending(ackPending)
{ {
::logf( XW_LOGINFO, "created HostRec with id %d", m_hostID); logf( XW_LOGINFO, "%s created HostRec with id %d", __func__, m_hostID);
} }
HostID m_hostID; HostID m_hostID;
AddrInfo m_addr; AddrInfo m_addr;

View file

@ -199,11 +199,17 @@ UdpQueue::thread_main()
pthread_mutex_unlock( &m_queueMutex ); pthread_mutex_unlock( &m_queueMutex );
utc->noteDequeued(); utc->noteDequeued();
logf( XW_LOGINFO, "%s: dispatching packet %d (socket %d); "
"%d seconds old", __func__, time_t age = utc->ageInSeconds();
utc->getID(), utc->addr()->socket() ); if ( 30 > age ) {
(*utc->cb())( utc ); logf( XW_LOGINFO, "%s: dispatching packet %d (socket %d); "
utc->logStats(); "%d seconds old", __func__, utc->getID(), utc->addr()->socket(),
age );
(*utc->cb())( utc );
utc->logStats();
} else {
logf( XW_LOGINFO, "%s: dropping packet %d; it's %d seconds old!", age );
}
delete utc; delete utc;
} }
return NULL; return NULL;

View file

@ -55,6 +55,7 @@ public:
const AddrInfo* addr() const { return &m_addr; } const AddrInfo* addr() const { return &m_addr; }
void noteDequeued() { m_dequed = time( NULL ); } void noteDequeued() { m_dequed = time( NULL ); }
void logStats(); void logStats();
time_t ageInSeconds() { return time( NULL ) - m_created; }
const QueueCallback cb() const { return m_cb; } const QueueCallback cb() const { return m_cb; }
void setID( int id ) { m_id = id; } void setID( int id ) { m_id = id; }
int getID( void ) { return m_id; } int getID( void ) { return m_id; }

View file

@ -1366,7 +1366,7 @@ ackPacketIf( const UDPHeader* header, const AddrInfo* addr )
{ {
if ( UDPAckTrack::shouldAck( header->cmd ) ) { if ( UDPAckTrack::shouldAck( header->cmd ) ) {
uint32_t packetID = header->packetID; uint32_t packetID = header->packetID;
logf( XW_LOGINFO, "acking packet %d", packetID ); logf( XW_LOGINFO, "%s: acking packet %d", __func__, packetID );
packetID = htonl( packetID ); packetID = htonl( packetID );
send_via_udp( addr, XWPDEV_ACK, send_via_udp( addr, XWPDEV_ACK,
&packetID, sizeof(packetID), NULL ); &packetID, sizeof(packetID), NULL );
@ -1489,8 +1489,15 @@ read_udp_packet( int udpsock )
ssize_t nRead = recvfrom( udpsock, buf, sizeof(buf), 0 /*flags*/, ssize_t nRead = recvfrom( udpsock, buf, sizeof(buf), 0 /*flags*/,
&saddr.u.addr, &fromlen ); &saddr.u.addr, &fromlen );
logf( XW_LOGINFO, "%s: recvfrom=>%d", __func__, nRead );
if ( 0 < nRead ) { if ( 0 < nRead ) {
#ifdef LOG_UDP_PACKETS
gchar* b64 = g_base64_encode( (unsigned char*)&saddr, sizeof(saddr) );
logf( XW_LOGINFO, "%s: recvfrom=>%d (saddr='%s')", __func__, nRead, b64 );
g_free( b64 );
#else
logf( XW_LOGINFO, "%s: recvfrom=>%d", __func__, nRead );
#endif
AddrInfo addr( udpsock, &saddr, false ); AddrInfo addr( udpsock, &saddr, false );
UdpQueue::get()->handle( &addr, buf, nRead, handle_udp_packet ); UdpQueue::get()->handle( &addr, buf, nRead, handle_udp_packet );
} }
@ -1989,8 +1996,7 @@ main( int argc, char** argv )
logf( XW_LOGINFO, logf( XW_LOGINFO,
"%s: accepting connection from %s on socket %d", "%s: accepting connection from %s on socket %d",
__func__, inet_ntoa(saddr.u.addr_in.sin_addr), __func__, inet_ntoa(saddr.u.addr_in.sin_addr), newSock );
newSock );
AddrInfo addr( newSock, &saddr, true ); AddrInfo addr( newSock, &saddr, true );
tPool->AddSocket( perGame ? XWThreadPool::STYPE_GAME tPool->AddSocket( perGame ? XWThreadPool::STYPE_GAME