Peer Class ReferenceStatus of an on- or offline peer. More...
Collaboration diagram for Peer:
Detailed DescriptionStatus of an on- or offline peer.
Definition at line 40 of file Peer.h. Constructor & Destructor Documentation
Definition at line 42 of file Peer.cpp. References DEB, GetBitmapSize(), Handler(), m_bitmap, and m_bitmap_size. 00043 :m_handler(h) 00044 ,m_hash(hash) 00045 ,m_ip(ip) 00046 ,m_id(id) 00047 ,m_port(port) 00048 ,m_bitmap(NULL) 00049 ,m_bitmap_size(0) 00050 ,m_choke(true) 00051 ,m_interested(false) 00052 ,m_t_choke(0) 00053 ,m_tried(false) 00054 ,m_failed(false) 00055 { 00056 DEB( printf("%s:%d\n", ip.c_str(), port);) 00057 Session *sess = static_cast<PeerHandler&>(Handler()).GetSession(hash); 00058 if (sess) 00059 { 00060 size_t n = sess -> GetNumberOfPieces(); 00061 m_bitmap = new bitmap_t(n); 00062 m_bitmap_size = m_bitmap -> GetBitmapSize(); 00063 } 00064 }
Definition at line 67 of file Peer.cpp. References m_bitmap, and m_requests. 00068 { 00069 if (m_bitmap) 00070 delete m_bitmap; 00071 while (m_requests.size()) 00072 { 00073 request_v::iterator it = m_requests.begin(); 00074 Request *r = *it; 00075 delete r; 00076 m_requests.erase(it); 00077 } 00078 }
Member Function Documentation
Definition at line 51 of file Peer.h. References m_handler. Referenced by Connected(), GotSlice(), Peer(), PeerSocket(), RemoveRequests(), and RequestAvailable(). 00051 { return m_handler; }
Definition at line 53 of file Peer.h. References m_bitmap_size. Referenced by Peer(). 00053 { return m_bitmap_size; }
interest status from remote end Definition at line 59 of file Peer.h. References m_interested. 00059 { return m_interested; }
Definition at line 81 of file Peer.cpp. References Handler(), and PeerSocket(). 00082 { 00083 pSocket *p = PeerSocket(); 00084 return p ? static_cast<PeerHandler&>(Handler()).Connected(this) && p -> CTS() : false; 00085 }
Definition at line 88 of file Peer.cpp. References Handler(). Referenced by Connected(). 00089 { 00090 return static_cast<PeerHandler&>(Handler()).PeerSocket(this); 00091 }
Definition at line 101 of file Peer.cpp. References Handler(), m_hash, m_requests, and SLICE. 00102 { 00103 for (request_v::iterator it = m_requests.begin(); it != m_requests.end(); it++) 00104 { 00105 Request *r = *it; 00106 if (r -> GetPiece() == piece && r -> GetOffset() == offset) 00107 { 00108 size_t l = r -> GetLength(); 00109 delete r; 00110 m_requests.erase(it); 00111 // TODO: reset request timeout here 00112 return l; 00113 } 00114 } 00115 // slice was not in request queue, get slice length from incomplete piece list 00116 Session *sess = static_cast<PeerHandler&>(Handler()).GetSession(m_hash); 00117 if (!sess) 00118 return 0; 00119 Piece *p = sess -> GetIncomplete(piece); 00120 if (p) 00121 return MIN(SLICE, p -> PieceLength() - offset); 00122 return 0; 00123 }
Definition at line 126 of file Peer.cpp. References m_requests. 00127 { 00128 for (request_v::iterator it = m_requests.begin(); it != m_requests.end(); it++) 00129 { 00130 Request *r = *it; 00131 r -> ResetAge(); 00132 } 00133 }
Peer score. Calculate for each piece: Peer have: YES We have: NO Score: +1 Peer have: NO We have: YES Score: +1 Peer have: YES We have: YES Score: 0 Peer have: NO We have: NO Score: 0 Definition at line 136 of file Peer.cpp. References IsSet(), and m_bitmap. 00137 { 00138 if (!bitmap || !m_bitmap) 00139 return 0; 00140 size_t q = 0; 00141 for (size_t i = 0; i < bitmap -> GetNumberOfPieces(); i++) 00142 { 00143 if (bitmap -> IsSet(i) != m_bitmap -> IsSet(i)) 00144 q++; 00145 } 00146 return q; 00147 }
Definition at line 150 of file Peer.cpp. References Handler(), and m_hash. 00151 { 00152 Session *sess = static_cast<PeerHandler&>(Handler()).GetSession(m_hash); 00153 if (!sess) 00154 return; 00155 sess -> RequestAvailable(this); 00156 }
Definition at line 159 of file Peer.cpp. References Handler(), and m_hash. 00160 { 00161 Session *sess = static_cast<PeerHandler&>(Handler()).GetSession(m_hash); 00162 if (!sess) 00163 return; 00164 sess -> RemoveRequests(this); 00165 }
Member Data Documentation
Definition at line 102 of file Peer.h. Referenced by GetHash(), GotSlice(), RemoveRequests(), and RequestAvailable().
Definition at line 111 of file Peer.h. Referenced by GotSlice(), RefreshRequests(), Requests(), and ~Peer().
The documentation for this class was generated from the following files: |