0.0.5 - 2024-01-12
-
Use
bt_bencode
version0.8
. -
Use
gen_value
version0.7
.
0.0.4 - 2023-08-27
-
Fix bug in pieces count in
Metainfo
-
Fix piece length for last piece
-
Use borrowed types for KRPC messages and
Metainfo
-
Parse frames using reference types
-
Use byte slice instead of
Bytes
for data parameter inSession::on_read_unknown
. -
Refactor choke/interest peer states based on local perspective of peer. Guard against re-entrancy.
-
Derive
Eq
for protocol messages -
Add
From
impls for Error -
Add
protocol::parse_handshake
function -
Derive
Clone
for DHTBucket
andTable
-
Add
all_set
andnot_all_set
toIndexBitfield
-
Add
prev
toIndex
-
Add
TryFrom<Length>
,TryFrom<BlockBegin>
, andTryFrom<BlockLength>
forusize
-
Add
BlockBegin::index
method
0.0.3 - 2022-05-31
- Fix documentation for peer module types
-
Add
InfoHash
fmt implementations -
Add
Id
andReservedBytes
fmt implementations -
Add
const
,#[must]
, and#[inline]
to various types -
Add
pub
to stable newtypes
-
Add DHT Node
Id
andCompactAddress
types -
Add KRPC traits and common message types for error, ping, find_node, announce_peer and get_peers
-
Add KRPC transaction
Id
and collection types -
Add DHT Routing types to manage known nodes
0.0.2 - 2022-04-27
-
Fix IndexBitfield::from_slice()
from_slice() took a raw byte slice which did not give enough information about the length of the bitfield. Unused bytes would increase the size.
-
Remove clones for is_superset and is_subset
Remove the need to take ownership which usually resulted in a clone of the IndexBitfield for is_superset() and is_subset().
-
Simplify IndexBitfield API
Add simple getter/setter for IndexBitfield to get/set bool for index
-
Add type parameter for IndexCountedSet
In most cases,
u8
should be enough but in case a larger number of peers are simultaneously connected.
-
Add time::Instant trait
Add
Instant
trait for portability -
Add peer::MetricsHistory
MetricsHistory
can be used to store regular intervals of history. Useful to make decisions based on metric averages over a period of time. -
Add peer::Session for managing peer state
Session
maintains the various state changes for peers when a message is received or sent.Make
peer::State
andpeer::SendState
private to allow implementation details to change. -
Add max_index() to IndexBitfield and IndexCountedSet
-
Add peer::Metrics and peer::State
Metrics contain both the current interval's metrics and a running total of accumulated metrics.
peer::State contains the local and remote state as well as deadlines for read and write.
-
Add protocol::Metrics methods for specific types
Allow individual message type metrics to be added to skip the match expression if the message type is already known
-
Adds IndexBitfield::clear_with_max_index
Enables reuse of the IndexBitfield by clearing and resizing to the new maximum piece index.
-
Add generational index and vector types
Generational vectors can be used to store data related to peers and torrents inside a session type
-
Add protocol::Metrics, conn::Metrics, and torrent::Metrics
Metrics can be used to keep track of what data has been exchanged. The metrics may be used to change behavior between peers.
-
Add PartialEq to protocol types
For ReservedBytes and ReceivedHandshakeState
0.0.1 - 2022-04-19
- Initial release