requesting.go | 16 +++++++++++----- diff --git a/requesting.go b/requesting.go index 15033bb0bf55377fc692bbc09337233d0ee4aa8c..16da8393727c5706d3f28e829434b105b943bd7b 100644 --- a/requesting.go +++ b/requesting.go @@ -84,7 +84,10 @@ return p.peerAllowedFast.Contains(bitmap.BitIndex(i)) }, DownloadRate: p.downloadRate(), Age: time.Since(p.completedHandshake), - Id: (*peerId)(p), + Id: peerId{ + Peer: p, + ptr: uintptr(unsafe.Pointer(p)), + }, }) }) ts = append(ts, rst) @@ -98,14 +101,17 @@ setPeerNextRequestState(p, state) } } -type peerId Peer +type peerId struct { + *Peer + ptr uintptr +} -func (p *peerId) Uintptr() uintptr { - return uintptr(unsafe.Pointer(p)) +func (p peerId) Uintptr() uintptr { + return p.ptr } func setPeerNextRequestState(_p request_strategy.PeerId, rp request_strategy.PeerNextRequestState) { - p := (*Peer)(_p.(*peerId)) + p := _p.(peerId).Peer p.nextRequestState = rp p.onNextRequestStateChanged() }