transmission/libtransmission/tracker.h

108 lines
2.7 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 __TRANSMISSION__
#error only libtransmission should #include this header.
#endif
#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_trackerSessionClose( 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_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( 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