Ecosyste.ms: OpenCollective
An open API service for software projects hosted on Open Collective.
github.com/alanmcgovern/monotorrent
The official repository for MonoTorrent, a bittorrent library for .NET
https://github.com/alanmcgovern/monotorrent
efd7d5c8a1b94977f8457a7b0ff2413196446997 authored almost 4 years ago by Alan McGovern <[email protected]>
We can probably rely on an interceptor (PiecePickerFilterChecker)
and a StandardPicker to fulfil...
StreamingPicker can now be implemented as a PiecePickerFilter
rather than a full PiecePicker. It...
0f97b0ae523316ec79484bab8076cbbb7c61f752 authored almost 4 years ago by Alan McGovern <[email protected]>
3d97773168137757fa2e1b8f0084220251119b44 authored almost 4 years ago by Alan McGovern <[email protected]>
2fd0155cfb62c8351c37b9263e753cde111ead01 authored almost 4 years ago by Alan McGovern <[email protected]>
887f5186b9e7e9e3589a33525b66253b2b06e07c authored almost 4 years ago by Alan McGovern <[email protected]>
55c3a7ad9261710060101d91d0dcb44e21db4bdd authored almost 4 years ago by Alan McGovern <[email protected]>
345d31c4230fb090973338f7309015642a4f902c authored almost 4 years ago by Alan McGovern <[email protected]>
32afe1b4b63b9bcb4cd9f836b300263e5c63f67a authored almost 4 years ago by Alan McGovern <[email protected]>
780b35f5c13b429124bd0b53b9a4e02dab53d5da authored almost 4 years ago by Alan McGovern <[email protected]>
7b4abaee18215bdd24588a1396edd3145e4c54d7 authored almost 4 years ago by Alan McGovern <[email protected]>
ef310e43901da46aa5d70a833912e01d2ff3a00a authored almost 4 years ago by Alan McGovern <[email protected]>
97fe724c3ce9c581d408a119406a9f54876a0258 authored almost 4 years ago by Alan McGovern <[email protected]>
884638af2bcbbb5f5452b9c69136e69f4aaff240 authored almost 4 years ago by Alan McGovern <[email protected]>
2210c656f504a500ba1dc29d5bb93bfbe0b5c4a4 authored almost 4 years ago by Alan McGovern <[email protected]>
34cad69ca6b98740fbf0f7d744b081a2111b4086 authored almost 4 years ago by Alan McGovern <[email protected]>
33ee11687cf15a7ef9601b8458a43ddda33d4588 authored almost 4 years ago by Alan McGovern <[email protected]>
867bdd8df308a29a1dc0245c86c0732f9cf564e8 authored almost 4 years ago by Alan McGovern <[email protected]>
The idea is to:
1) Make it easier for the engine to indicate when a peer should be
used to downl...
The return value is guaranteed to be immutable (again).
The previous commit returned the input p...
c55939853b11b1fd191e3a1e48732571f6567e79 authored almost 4 years ago by AN3O <[email protected]>
ec0f0390b2cd5a253ebf0f61ca40d5084b4728e0 authored almost 4 years ago by AN3O <[email protected]>
When we seek to a new location in the piece picker we want
to cancel any pending requests and im...
There's (currently) only one way to request or cancel
a piece, and that's calling CreateRequest ...
It's helpful if you ever want to compare against the
list of ConnectedPeers.
69e9b1deb028cd7a6db1ac6ab63e51bcb6b4cefd authored about 4 years ago by Alan McGovern <[email protected]>
If a peer sends data slower than 1 block every 15
seconds we should close the connection.
If we download just the last piece it may not actually be enough
data. The last piece could be a...
This will make things a little faster maybe.
3bffad4174105422801c7701beb98ebd18b9b271 authored about 4 years ago by Alan McGovern <[email protected]>e42927c1c25419d5a9d0cbdb4cfa325b3082f181 authored about 4 years ago by Alan McGovern <[email protected]>
Improve 'ContinueAnyRequest' to support prioritising the
high priority pieces over low priority ...
The streaming picker is intended to be forward-only, so we
should exclude pieces which come befo...
If a peer does not send the 'MetadataSize' key it
means they do not have metadata to send us. We...
It's not impossible for the connection to be disposed
before we reach the Socket.Connect call.
...
51828084315b766118ca77cf705ce370e0242cc9 authored about 4 years ago by Alan McGovern <[email protected]>
The encryption spec does not allow the initiator of the
connection to set a preference. As such,...
If a block is abandoned, only peers which have not been involved
in hash fails should be allowed...
It's simpler all round to mark pieces as abandoned instead of
monitoring this on a block-by-bloc...
If we request a piece and it is sent at less than 1kB/sec we
should simply disconnect the peer. ...
This is less efficient as data can arrive out-of-order which
means we'll write data to disk, the...
We know the peer will not supply any more data if they
choke us, so we can treat those pieces as...
They were annoying me :p
fc7d9226a0d0b12e6d923fd3f1c352eabc88aaaf authored about 4 years ago by Alan McGovern <[email protected]>
Don't write all log statements to the console in release
mode as it makes it a bit harder to per...
927fb1b0db9129fd21bcb0a2b5d9f7e8cc4eb585 authored about 4 years ago by Alan McGovern <[email protected]>
The DiskManager implementation may, or may not, use a
memory cache. As per comment in the code -...
It would be incredibly complex to support a scenario where some
parts of a single read are in th...
We shouldn't rely on the media player receiving the data
to seek to the start of the stream befo...
Some APIs deliberately read until 0 is returned, such
as Stream.CopyToAsync.
If the peer who was downloading a piece has been disconnected,
treat the piece as abandoned and ...
If we seek to the same piece we're already in then we don't
need to cancel pending piece requests.
The tests don't necessarily run a main loop which ticks
the DiskManager to process queued writes...
When we've downloaded all the data we intend to, flush the
data to disk before changing to 'Seed...
We cannot iterate over 'CachedBlocks' and use
an await unless we write our code so that it
is aw...
Don't bother creating a real Udp based DhtListener for the tests
as we never acutally use it.
T...
2988b36bc44cda53af992dead6acc08a6b480885 authored about 4 years ago by Alan McGovern <[email protected]>
Use two queues to allow tasks to be processed with
fewer locks.
By swapping the queue object we...
af92c101f1ddee33eb342b8e54e46882702496e0 authored about 4 years ago by Alan McGovern <[email protected]>b5f2e24a6b9c81dfc3a093f4495ac42febed1659 authored about 4 years ago by Alan McGovern <[email protected]>
9480b8614c780e88e5e6868bf4a5db47e1e4af21 authored about 4 years ago by Alan McGovern <[email protected]>
Change around ownership of the Semaphore used to control
access to the streams (again).
There w...
2df35f606cd056b50c0faf23667e0973c65838cf authored about 4 years ago by Alan McGovern <[email protected]>
When we use a Stream we now update it
in the usage order :)
If we have a piece in the disk cache and we 'read' it,
we can be reasonably certain the engine w...
Defaulting to using a MemoryCache should improve performance
when Blocks arrive slightly out of ...
The new semantics make it better to enter endgame mode when
ContinueAnyExisting returns null rat...
Now we only try to continue an existing request if the
peer has been unable to select one normal...
This allocates far less than the built-in implementation
so it's a net win for monotorrent. The ...
This makes it less likely there'll be a bug later on.
12eddf34c978022a3436c630cc201fbce1d89fc5 authored about 4 years ago by Alan McGovern <[email protected]>Urgh. Oops.
Thanks to jpmikkers
0f161b43e13148da5e52799020bdddae87804723 authored about 4 years ago by Alan McGovern <[email protected]>
The filestreams we use to read/write data from disk are now
protected with just a SemaphoreSlim....
This is to ensure that alpha versions are strictly monotonic
when sorted as strings, as per spec.
Also a bunch of misc cleanups to make the whole thing work.
I was too lazy to proper separate ou...
bb552cfbf5dff1ff862766913447d6475a3d7321 authored about 4 years ago by Alan McGovern <[email protected]>
9e49422ae36ebf254fc3c475c95c7446b043d5f2 authored about 4 years ago by Alan McGovern <[email protected]>
If the Settings objects were immutable and users had to
pass in a new Settings object whenever t...
We should ensure we're executing on the IO thread
when we're interacting with the filestreams.
...
ec3c8ebeba31ef71930f7c5a102df41171110b52 authored about 4 years ago by Alan McGovern <[email protected]>
We can start issuing unstable nuget packages for
people who want to live on the edge!
Will have...
6bbd8ad9ef61e24c318d923b6e54a815a966269a authored about 4 years ago by Alan McGovern <[email protected]>
The API expects this to be the path to a specific file,
so when we autogenerate a value ensure w...
Co-authored-by: guangzhi.wu <[email protected]>
f875ae639c3e9c8872839895409788c00982f30a authored about 4 years ago by OneFingerCodingWarrior <[email protected]>9da0f30f86406aa889ee15a267c956530feca359 authored about 4 years ago by Alan McGovern <[email protected]>
If a BEncodedDictionary has been encoded with the keys in the
wrong order, we will now compute t...
We should tie the lifespan of the local peer listener
to the engine it's registered with.
If no...
e7c64febdc415923f6ad93c587a66c0b08498d9a authored about 4 years ago by Alan McGovern <[email protected]>
Add an early exit to this task. If we find at least 128 peers
we should stop sending further que...
It's better to add peers to the table by virtue of them responding
to a message we've sent. Do n...
We now allow the 'Initialization' task to indicate it has
completed before it has fully inserted...
Have one codepath for initialization which ensures the
state is updated consistently.
4f30808b3feadd5c5219fbd712ab2ecc2cf56b6a authored about 4 years ago by Alan McGovern <[email protected]>
When we send a FindNode message to a torrent, we do
not want to add *every* node to the DhtTable...
This clearly needs better tests, or even any tests at all :p
Improving the integration tests to...
50345740b44ee80135cc5ac6efd81747bf4cb171 authored about 4 years ago by Alan McGovern <[email protected]>
Every await can add overhead, so let's avoid
awaiting something if we don't need to!
It's a little simpler than the original code which
used a manualresetevent.
The tests cover this completely so we can simplify
things by removing the code which attempts to...
861d0b2315210ec2676bac48df9d2044cc6e4a47 authored about 4 years ago by Konst Kolesnichenko <[email protected]>
76766537d14d87c8c5c4ecef20bcf9b05720b792 authored about 4 years ago by Alan McGovern <[email protected]>
Nothing uses this nowadays
c1b6ceb401141ce76e91b44c246a6a005621378e authored about 4 years ago by Alan McGovern <[email protected]>
Firstly, don't reset the stream every time we connect
to a peer who supports metadata mode. That...
Previously we'd emit the log line
'connected to self' if we actually had too many
active connect...
1dd7bfbbba4f4af84a62c5639e283c64c280c013 authored about 4 years ago by shc <[email protected]>
I only really need net472 and net2.1. That'll test all
relevant codepaths. Might as well include...
3301c8e727e035616b551896f671332f2afd66d7 authored about 4 years ago by jpmikkers <[email protected]>
fc53fa81ded19256a6d8308f59ae6a0598e58067 authored about 4 years ago by jpmikkers <[email protected]>
Ensure the packagereferences are restricted
to use a version of the nuget dependencies
which are...
We require the full path to the file where the metadata
will be written to. Let's not make guess...