2007-08-16 20:00:06 +00:00
|
|
|
/*
|
2008-01-01 17:20:20 +00:00
|
|
|
* This file Copyright (C) 2007-2008 Charles Kerr <charles@rebelbase.com>
|
2006-07-16 19:39:23 +00:00
|
|
|
*
|
2007-08-16 20:00:06 +00:00
|
|
|
* This file is licensed by the GPL version 2. Works owned by the
|
|
|
|
* Transmission project are granted a special exemption to clause 2(b)
|
|
|
|
* so that the bulk of its code can remain under the MIT license.
|
|
|
|
* This exemption does not extend to derived works not owned by
|
|
|
|
* the Transmission project.
|
2007-08-18 17:05:51 +00:00
|
|
|
*
|
2007-08-18 17:19:49 +00:00
|
|
|
* $Id$
|
2007-08-16 20:00:06 +00:00
|
|
|
*/
|
|
|
|
|
|
|
|
#ifndef _TR_TRACKER_H_
|
|
|
|
#define _TR_TRACKER_H_
|
|
|
|
|
|
|
|
#include <inttypes.h> /* for uint8_t */
|
|
|
|
#include "transmission.h"
|
|
|
|
#include "publish.h"
|
|
|
|
|
|
|
|
/**
|
|
|
|
*** Locating a tracker
|
|
|
|
**/
|
|
|
|
|
2007-10-17 18:59:58 +00:00
|
|
|
typedef struct tr_tracker tr_tracker;
|
2007-08-16 20:00:06 +00:00
|
|
|
|
2007-10-17 18:59:58 +00:00
|
|
|
tr_tracker * tr_trackerNew( const tr_torrent * );
|
|
|
|
|
|
|
|
void tr_trackerFree ( tr_tracker * );
|
2007-08-16 20:00:06 +00:00
|
|
|
|
2007-11-29 02:31:21 +00:00
|
|
|
void tr_trackerShuttingDown( tr_handle * );
|
|
|
|
|
2007-08-16 20:00:06 +00:00
|
|
|
/**
|
|
|
|
*** Tracker Publish / Subscribe
|
|
|
|
**/
|
|
|
|
|
|
|
|
typedef enum
|
|
|
|
{
|
|
|
|
TR_TRACKER_WARNING,
|
|
|
|
TR_TRACKER_ERROR,
|
2007-09-25 18:39:58 +00:00
|
|
|
TR_TRACKER_ERROR_CLEAR,
|
2007-10-04 19:58:30 +00:00
|
|
|
TR_TRACKER_PEERS
|
2007-08-16 20:00:06 +00:00
|
|
|
}
|
|
|
|
TrackerEventType;
|
|
|
|
|
|
|
|
typedef struct
|
|
|
|
{
|
|
|
|
/* what type of event this is */
|
|
|
|
TrackerEventType messageType;
|
|
|
|
|
|
|
|
/* the torrent's 20-character sha1 hash */
|
|
|
|
const uint8_t * hash;
|
|
|
|
|
|
|
|
/* for TR_TRACKER_WARNING and TR_TRACKER_ERROR */
|
|
|
|
const char * text;
|
|
|
|
|
|
|
|
/* for TR_TRACKER_PEERS */
|
|
|
|
const uint8_t * peerCompact;
|
|
|
|
int peerCount;
|
|
|
|
}
|
2007-10-17 18:59:58 +00:00
|
|
|
tr_tracker_event;
|
2007-08-16 20:00:06 +00:00
|
|
|
|
2007-09-20 16:32:01 +00:00
|
|
|
tr_publisher_tag tr_trackerSubscribe ( struct tr_tracker * tag,
|
|
|
|
tr_delivery_func func,
|
|
|
|
void * user );
|
2007-08-16 20:00:06 +00:00
|
|
|
|
2007-09-20 16:32:01 +00:00
|
|
|
void tr_trackerUnsubscribe ( struct tr_tracker * tracker,
|
|
|
|
tr_publisher_tag tag );
|
2007-08-16 20:00:06 +00:00
|
|
|
|
|
|
|
/***
|
|
|
|
****
|
|
|
|
***/
|
|
|
|
|
2007-09-20 16:32:01 +00:00
|
|
|
void tr_trackerStart ( struct tr_tracker * );
|
2007-08-16 20:00:06 +00:00
|
|
|
|
2007-09-20 16:32:01 +00:00
|
|
|
void tr_trackerCompleted ( struct tr_tracker * );
|
2007-08-16 20:00:06 +00:00
|
|
|
|
2007-09-20 16:32:01 +00:00
|
|
|
void tr_trackerStop ( struct tr_tracker * );
|
2007-08-16 20:00:06 +00:00
|
|
|
|
2007-09-20 16:32:01 +00:00
|
|
|
void tr_trackerReannounce ( struct tr_tracker * );
|
2007-08-16 20:00:06 +00:00
|
|
|
|
2007-09-20 16:32:01 +00:00
|
|
|
void tr_trackerChangeMyPort ( struct tr_tracker * );
|
2007-08-16 20:00:06 +00:00
|
|
|
|
2007-09-20 16:32:01 +00:00
|
|
|
const tr_tracker_info * tr_trackerGetAddress( const struct tr_tracker * );
|
2007-08-16 20:00:06 +00:00
|
|
|
|
2007-09-20 16:32:01 +00:00
|
|
|
int tr_trackerCanManualAnnounce ( const struct tr_tracker * );
|
2007-08-16 20:00:06 +00:00
|
|
|
|
2008-02-09 17:07:30 +00:00
|
|
|
time_t tr_trackerGetManualAnnounceTime ( const struct tr_tracker * );
|
|
|
|
|
2007-09-20 16:32:01 +00:00
|
|
|
void tr_trackerGetCounts ( const struct tr_tracker *,
|
|
|
|
int * setme_completedCount,
|
|
|
|
int * setme_leecherCount,
|
|
|
|
int * setme_seederCount );
|
2006-07-16 19:39:23 +00:00
|
|
|
|
|
|
|
#endif
|