more janitorial cleanup on the "tr_session*" namespace. Today's victim: tr_handle_status.

This commit is contained in:
Charles Kerr 2008-05-22 12:31:47 +00:00
parent 07ae5bf965
commit 7b209acc1b
8 changed files with 71 additions and 93 deletions

View File

@ -359,16 +359,12 @@ main( int argc, char ** argv )
}
fprintf( stderr, "\n" );
/* Try for 5 seconds to delete any port mappings for nat traversal */
/* try for 5 seconds to delete any port mappings for nat traversal */
tr_sessionSetPortForwardingEnabled( h, 0 );
for( i = 0; i < 10; i++ )
{
const tr_handle_status * hstat = tr_handleStatus( h );
if( TR_NAT_TRAVERSAL_UNMAPPED == hstat->natTraversalStatus )
{
/* Port mappings were deleted */
for( i=0; i<10; ++i ) {
const tr_port_forwarding f = tr_sessionGetPortForwarding( h );
if( f == TR_PORT_UNMAPPED )
break;
}
tr_wait( 500 );
}

View File

@ -196,14 +196,14 @@ tr_natpmpPulse( struct tr_natpmp * nat, int port, int isEnabled )
}
switch( nat->state ) {
case TR_NATPMP_IDLE: ret = nat->isMapped ? TR_NAT_TRAVERSAL_MAPPED : TR_NAT_TRAVERSAL_UNMAPPED; break;
case TR_NATPMP_DISCOVER: ret = TR_NAT_TRAVERSAL_UNMAPPED; break;
case TR_NATPMP_IDLE: ret = nat->isMapped ? TR_PORT_MAPPED : TR_PORT_UNMAPPED; break;
case TR_NATPMP_DISCOVER: ret = TR_PORT_UNMAPPED; break;
case TR_NATPMP_RECV_PUB:
case TR_NATPMP_SEND_MAP:
case TR_NATPMP_RECV_MAP: ret = TR_NAT_TRAVERSAL_MAPPING; break;
case TR_NATPMP_RECV_MAP: ret = TR_PORT_MAPPING; break;
case TR_NATPMP_SEND_UNMAP:
case TR_NATPMP_RECV_UNMAP: ret = TR_NAT_TRAVERSAL_UNMAPPING; break;
default: ret = TR_NAT_TRAVERSAL_ERROR; break;
case TR_NATPMP_RECV_UNMAP: ret = TR_PORT_UNMAPPING; break;
default: ret = TR_PORT_ERROR; break;
}
return ret;
}

View File

@ -45,8 +45,8 @@ struct tr_shared
unsigned int isEnabled : 1;
unsigned int isShuttingDown : 1;
tr_nat_traversal_status natpmpStatus;
tr_nat_traversal_status upnpStatus;
tr_port_forwarding natpmpStatus;
tr_port_forwarding upnpStatus;
int bindPort;
int bindSocket;
@ -69,14 +69,14 @@ getNatStateStr( int state )
switch( state )
{
/* we're in the process of trying to set up port forwarding */
case TR_NAT_TRAVERSAL_MAPPING: return _( "Starting" );
case TR_PORT_MAPPING: return _( "Starting" );
/* we've successfully forwarded the port */
case TR_NAT_TRAVERSAL_MAPPED: return _( "Forwarded" );
case TR_PORT_MAPPED: return _( "Forwarded" );
/* we're cancelling the port forwarding */
case TR_NAT_TRAVERSAL_UNMAPPING: return _( "Stopping" );
case TR_PORT_UNMAPPING: return _( "Stopping" );
/* the port isn't forwarded */
case TR_NAT_TRAVERSAL_UNMAPPED: return _( "Not forwarded" );
case TR_NAT_TRAVERSAL_ERROR: return "???";
case TR_PORT_UNMAPPED: return _( "Not forwarded" );
case TR_PORT_ERROR: return "???";
}
return "notfound";
@ -190,8 +190,8 @@ tr_sharedInit( tr_handle * h, int isEnabled, int publicPort )
s->upnp = tr_upnpInit();
s->pulseTimer = tr_timerNew( h, sharedPulse, s, 1000 );
s->isEnabled = isEnabled ? 1 : 0;
s->upnpStatus = TR_NAT_TRAVERSAL_UNMAPPED;
s->natpmpStatus = TR_NAT_TRAVERSAL_UNMAPPED;
s->upnpStatus = TR_PORT_UNMAPPED;
s->natpmpStatus = TR_PORT_UNMAPPED;
return s;
}

View File

@ -315,22 +315,10 @@ tr_sessionGetPublicPort( const tr_handle * h )
return tr_sharedGetPublicPort( h->shared );
}
const tr_handle_status *
tr_handleStatus( tr_handle * h )
tr_port_forwarding
tr_sessionGetPortForwarding( const tr_handle * h )
{
tr_handle_status * s;
h->statCur = ( h->statCur + 1 ) % 2;
s = &h->stats[h->statCur];
tr_globalLock( h );
s->natTraversalStatus = tr_sharedTraversalStatus( h->shared );
s->publicPort = tr_sharedGetPublicPort( h->shared );
tr_globalUnlock( h );
return s;
return tr_sharedTraversalStatus( h->shared );
}
/***

View File

@ -86,9 +86,6 @@ struct tr_handle
tr_rpc_func rpc_func;
void * rpc_func_user_data;
tr_handle_status stats[2];
int statCur;
struct tr_stats_handle * sessionStats;
struct tr_tracker_handle * tracker;

View File

@ -199,10 +199,14 @@ void tr_getCumulativeSessionStats( const tr_handle * handle,
void tr_clearSessionStats( tr_handle * handle );
/**
***
**/
* Set whether or not torrents are allowed to do peer exchanges.
* PEX is always disabled in private torrents regardless of this.
* In public torrents, PEX is enabled by default.
*/
void tr_sessionSetPexEnabled( tr_handle *, int isEnabled );
int tr_sessionIsPexEnabled( const tr_handle * );
typedef enum
{
@ -225,6 +229,37 @@ void tr_sessionSetEncryption( tr_handle * handle, tr_encryption_mode mode );
const char * tr_sessionGetConfigDir( const tr_handle * );
/***********************************************************************
** Incoming Peer Connections Port
*/
void tr_sessionSetPortForwardingEnabled( tr_handle *, int enable );
int tr_sessionIsPortForwardingEnabled( const tr_handle * );
void tr_sessionSetPublicPort( tr_handle *, int );
int tr_sessionGetPublicPort( const tr_handle * );
typedef enum
{
TR_PORT_ERROR,
TR_PORT_UNMAPPED,
TR_PORT_UNMAPPING,
TR_PORT_MAPPING,
TR_PORT_MAPPED
}
tr_port_forwarding;
tr_port_forwarding tr_sessionGetPortForwarding( const tr_handle * );
//ccccccc
/**
***
**/
/***********************************************************************
@ -272,37 +307,6 @@ void tr_setMessageQueuing( int enable );
tr_msg_list * tr_getQueuedMessages( void );
void tr_freeMessageList( tr_msg_list * freeme );
/***********************************************************************
** Incoming Peer Connections Port
*/
void tr_sessionSetPortForwardingEnabled( tr_handle *, int enable );
int tr_sessionIsPortForwardingEnabled( const tr_handle * );
void tr_sessionSetPublicPort( tr_handle *, int );
int tr_sessionGetPublicPort( const tr_handle * );
typedef enum
{
TR_NAT_TRAVERSAL_ERROR,
TR_NAT_TRAVERSAL_UNMAPPED,
TR_NAT_TRAVERSAL_UNMAPPING,
TR_NAT_TRAVERSAL_MAPPING,
TR_NAT_TRAVERSAL_MAPPED
}
tr_nat_traversal_status;
typedef struct tr_handle_status
{
tr_nat_traversal_status natTraversalStatus;
int publicPort;
}
tr_handle_status;
const tr_handle_status * tr_handleStatus( tr_handle * );
/***********************************************************************
***
@ -599,15 +603,6 @@ tr_torrent ** tr_sessionLoadTorrents ( tr_handle * h,
/**
* Set whether or not torrents are allowed to do peer exchanges.
* PEX is always disabled in private torrents regardless of this.
* In public torrents, PEX is enabled by default.
*/
void tr_sessionSetPexEnabled( tr_handle *, int isEnabled );
int tr_sessionIsPexEnabled( const tr_handle * );
const tr_info * tr_torrentInfo( const tr_torrent * );
void tr_torrentSetDownloadDir( tr_torrent *, const char * );

View File

@ -161,12 +161,12 @@ tr_upnpPulse( tr_upnp * handle, int port, int isEnabled )
switch( handle->state )
{
case TR_UPNP_DISCOVER: ret = TR_NAT_TRAVERSAL_UNMAPPED; break;
case TR_UPNP_MAP: ret = TR_NAT_TRAVERSAL_MAPPING; break;
case TR_UPNP_UNMAP: ret = TR_NAT_TRAVERSAL_UNMAPPING; break;
case TR_UPNP_IDLE: ret = handle->isMapped ? TR_NAT_TRAVERSAL_MAPPED
: TR_NAT_TRAVERSAL_UNMAPPED; break;
default: ret = TR_NAT_TRAVERSAL_ERROR; break;
case TR_UPNP_DISCOVER: ret = TR_PORT_UNMAPPED; break;
case TR_UPNP_MAP: ret = TR_PORT_MAPPING; break;
case TR_UPNP_UNMAP: ret = TR_PORT_UNMAPPING; break;
case TR_UPNP_IDLE: ret = handle->isMapped ? TR_PORT_MAPPED
: TR_PORT_UNMAPPED; break;
default: ret = TR_PORT_ERROR; break;
}
return ret;

View File

@ -264,11 +264,13 @@
- (void) updatePortStatus
{
const tr_handle_status * stat = tr_handleStatus(fHandle);
if (fNatStatus != stat->natTraversalStatus || fPublicPort != stat->publicPort)
const tr_port_forwarding fwd = tr_sessionGetPortForwarding(fHandle);
const int port = tr_sessionGetPublicPort(fHandle);
if (fNatStatus != fwd || fPublicPort != port )
{
fNatStatus = stat->natTraversalStatus;
fPublicPort = stat->publicPort;
fNatStatus = fwd;
fPublicPort = port;
[fPortStatusField setStringValue: [NSLocalizedString(@"Checking port status", "Preferences -> Network -> port status")
stringByAppendingEllipsis]];