1 /* 2 * exttrack.h 3 * 4 * Defines and classes for working with external trackers 5 * 6 * Created by Arno Bakker 7 * Copyright 2013-2016 Vrije Universiteit Amsterdam. All rights reserved. 8 */ 9 #ifndef SWIFT_EXTTRACK_H_ 10 #define SWIFT_EXTTRACK_H_ 11 12 namespace swift 13 { 14 15 #define EXTTRACK_EVENT_STARTED "started" 16 #define EXTTRACK_EVENT_COMPLETED "completed" 17 #define EXTTRACK_EVENT_STOPPED "stopped" 18 #define EXTTRACK_EVENT_WORKING "" 19 20 struct Address; 21 typedef std::vector<Address> peeraddrs_t; 22 23 /** External tracker */ 24 typedef void (*exttrack_peerlist_callback_t)(int td, std::string result, uint32_t interval, peeraddrs_t peerlist); 25 26 27 class ContentTransfer; 28 29 struct ExtTrackCallbackRecord { ExtTrackCallbackRecordExtTrackCallbackRecord30 ExtTrackCallbackRecord(int td, exttrack_peerlist_callback_t callback) : td_(td), callback_(callback) {} 31 int td_; 32 exttrack_peerlist_callback_t callback_; 33 }; 34 35 class ExternalTrackerClient 36 { 37 public: 38 ExternalTrackerClient(std::string url); 39 ~ExternalTrackerClient(); 40 /** (Re)Registers at tracker and adds returned peer addresses to peerlist */ 41 int Contact(ContentTransfer *transfer, std::string event, exttrack_peerlist_callback_t callback); GetReportedComplete()42 bool GetReportedComplete() { 43 return reported_complete_; 44 } GetReportLastTime()45 tint GetReportLastTime() { 46 return report_last_time_; 47 } SetReportInterval(uint32_t interval)48 void SetReportInterval(uint32_t interval) { 49 report_interval_ = interval; 50 } GetReportInterval()51 uint32_t GetReportInterval() { 52 return report_interval_; 53 } 54 protected: 55 std::string url_; 56 uint8_t *peerid_; 57 tint report_last_time_; // tint 58 uint32_t report_interval_; // seconds 59 bool reported_complete_; 60 61 /** IP in myaddr currently unused */ 62 std::string CreateQuery(ContentTransfer *transfer, Address myaddr, std::string event); 63 int HTTPConnect(std::string query,ExtTrackCallbackRecord *callbackrec); 64 }; 65 66 } 67 68 #endif /* SWIFT_EXTTRACK_H_ */ 69