path: root/trackerlogic.h
diff options
authorerdgeist <>2010-04-22 22:08:42 +0000
committererdgeist <>2010-04-22 22:08:42 +0000
commitd42bf5a0310b8df4babff645ee91c37e9f994bfe (patch)
tree878712aeae9d2c64dc626b2945f11cac50954258 /trackerlogic.h
parentae9ab769415f30ccb444bb0b0190a5fcf22275e7 (diff)
** struct ot_workstruct gets ritcher (and will become even ritcher soon).
This is where we encapsulate all per-request data from peer to hash to peer_id, so that it is available everywhere without passing hundreds of pointers down the stack. Most functions that do work down the stack now accept an ot_workstruct and some flags. So it can end up in the stats/event-handler where it will be the default parameter in the future. ** peer_id is now being copied by default and moved to ot_workstruct So it is available in stats and subsequent functions. ** sync scrape madness is gone SYNC_SCRAPE was intended to sync tracker state that would normally be lost on restarts i.e. downloaded counts per torrent. The way was to push it in the tracker cloud after finding all neighbouring trackers. This is madness. It never was tested and can be done per tracker by fetching stats/mode=statedump from time to time and starting opentracker with the -l option later. ** livesync thread has its own ot_workstruct now So it can behave like ot_udp and ot_http against trackerlogic.c and get rid of the first half of the embarrassing global variables. The sending half will be fixed soon [tm]. ** stats can log completed events The author recognizes the needs of original content distributors to keep track of the amount of times a work has been downloaded. While not feasible and used on openbittorrent and other open and anonymous tracker installations, a tracker user can now choose to send those events to syslog.
Diffstat (limited to 'trackerlogic.h')
1 files changed, 22 insertions, 16 deletions
diff --git a/trackerlogic.h b/trackerlogic.h
index 4052fa4..5ae644b 100644
--- a/trackerlogic.h
+++ b/trackerlogic.h
@@ -108,22 +108,29 @@ struct ot_peerlist {
108 108
109struct ot_workstruct { 109struct ot_workstruct {
110 /* Thread specific, static */ 110 /* Thread specific, static */
111 char *inbuf; 111 char *inbuf;
112#define G_INBUF_SIZE 8192 112#define G_INBUF_SIZE 8192
113 char *outbuf; 113 char *outbuf;
114#define G_OUTBUF_SIZE 8192 114#define G_OUTBUF_SIZE 8192
116 char *debugbuf; 116 char *debugbuf;
117#define G_DEBUGBUF_SIZE 8192 117#define G_DEBUGBUF_SIZE 8192
118#endif 118#endif
119 119
120 /* The peer currently in the working */
121 ot_peer peer;
123 /* Pointers into the request buffer */
124 ot_hash *hash;
125 char *peer_id;
120 /* HTTP specific, non static */ 127 /* HTTP specific, non static */
121 int keep_alive; 128 int keep_alive;
122 char *request; 129 char *request;
123 ssize_t request_size; 130 ssize_t request_size;
124 ssize_t header_size; 131 ssize_t header_size;
125 char *reply; 132 char *reply;
126 ssize_t reply_size; 133 ssize_t reply_size;
127}; 134};
128 135
129/* 136/*
@@ -150,9 +157,8 @@ void exerr( char * message );
150 157
151/* add_peer_to_torrent does only release the torrent bucket if from_sync is set, 158/* add_peer_to_torrent does only release the torrent bucket if from_sync is set,
152 otherwise it is released in return_peers_for_torrent */ 159 otherwise it is released in return_peers_for_torrent */
153#define add_peer_to_torrent(hash,peer,proto) add_peer_to_torrent_and_return_peers(hash,peer,proto,0,NULL) 160size_t add_peer_to_torrent_and_return_peers( PROTO_FLAG proto, struct ot_workstruct *ws, size_t amount );
154size_t add_peer_to_torrent_and_return_peers( ot_hash hash, ot_peer *peer, PROTO_FLAG proto, size_t amount, char * reply ); 161size_t remove_peer_from_torrent( PROTO_FLAG proto, struct ot_workstruct *ws );
155size_t remove_peer_from_torrent( ot_hash hash, ot_peer *peer, char *reply, PROTO_FLAG proto );
156size_t return_tcp_scrape_for_torrent( ot_hash *hash, int amount, char *reply ); 162size_t return_tcp_scrape_for_torrent( ot_hash *hash, int amount, char *reply );
157size_t return_udp_scrape_for_torrent( ot_hash hash, char *reply ); 163size_t return_udp_scrape_for_torrent( ot_hash hash, char *reply );
158void add_torrent_from_saved_state( ot_hash hash, ot_time base, size_t down_count ); 164void add_torrent_from_saved_state( ot_hash hash, ot_time base, size_t down_count );