99 lines
2.6 KiB
C
99 lines
2.6 KiB
C
/*
|
|
* This file Copyright (C) 2007-2008 Charles Kerr <charles@rebelbase.com>
|
|
*
|
|
* 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.
|
|
*
|
|
* $Id$
|
|
*/
|
|
|
|
#ifndef _TR_TRACKER_H_
|
|
#define _TR_TRACKER_H_
|
|
|
|
#include <inttypes.h> /* for uint8_t */
|
|
#include "transmission.h"
|
|
#include "publish.h"
|
|
|
|
/**
|
|
*** Locating a tracker
|
|
**/
|
|
|
|
typedef struct tr_tracker tr_tracker;
|
|
|
|
tr_tracker * tr_trackerNew( const tr_torrent * );
|
|
|
|
void tr_trackerFree ( tr_tracker * );
|
|
|
|
void tr_trackerShuttingDown( tr_handle * );
|
|
|
|
/**
|
|
*** Tracker Publish / Subscribe
|
|
**/
|
|
|
|
typedef enum
|
|
{
|
|
TR_TRACKER_WARNING,
|
|
TR_TRACKER_ERROR,
|
|
TR_TRACKER_ERROR_CLEAR,
|
|
TR_TRACKER_PEERS
|
|
}
|
|
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 * compact;
|
|
int compactLen;
|
|
int allAreSeeds;
|
|
}
|
|
tr_tracker_event;
|
|
|
|
tr_publisher_tag tr_trackerSubscribe ( struct tr_tracker * tag,
|
|
tr_delivery_func func,
|
|
void * user );
|
|
|
|
void tr_trackerUnsubscribe ( struct tr_tracker * tracker,
|
|
tr_publisher_tag tag );
|
|
|
|
/***
|
|
****
|
|
***/
|
|
|
|
void tr_trackerStat ( const tr_tracker * tracker,
|
|
struct tr_tracker_stat * setme);
|
|
|
|
void tr_trackerStart ( struct tr_tracker * );
|
|
|
|
void tr_trackerCompleted ( struct tr_tracker * );
|
|
|
|
void tr_trackerStop ( struct tr_tracker * );
|
|
|
|
void tr_trackerReannounce ( struct tr_tracker * );
|
|
|
|
void tr_trackerChangeMyPort ( struct tr_tracker * );
|
|
|
|
const tr_tracker_info * tr_trackerGetAddress( const struct tr_tracker * );
|
|
|
|
int tr_trackerCanManualAnnounce ( const struct tr_tracker * );
|
|
|
|
time_t tr_trackerGetManualAnnounceTime ( const struct tr_tracker * );
|
|
|
|
void tr_trackerGetCounts ( const struct tr_tracker *,
|
|
int * setme_completedCount,
|
|
int * setme_leecherCount,
|
|
int * setme_seederCount );
|
|
|
|
#endif
|