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
Order this in terms of likelihood
0fd75bac15df1542731dcf72510d86c6f5a52350 authored almost 4 years ago by Alan McGovern <[email protected]>
This disables most things so it's pretty easy to
use.
We can't rely on any given port being available. Try a few!
57dad996eb71dd1c7ad91499f311f7ad9bf1d56b authored almost 4 years ago by Alan McGovern <[email protected]>
We add 1 extra block request (16kB) for every 10 kB/sec of
transfer rate from the remote peer. T...
The normal scenario is that no files are marked as 'do not download',
so optimise this method to...
If SetAll(true) is invoked and all bits are already set to true,
fast-path and do nothing. Simil...
0c42635e2baa1b0ee5631549a645a19c154ed80a authored almost 4 years ago by Alan McGovern <[email protected]>
37d1ba32f187cc9a6195660ea59915b69ca31ade authored almost 4 years ago by Alan McGovern <[email protected]>
These classes should not have been public
3dbee50f3e4956e029eb1bc900694d7b8b54c320 authored almost 4 years ago by Alan McGovern <[email protected]>236ea4c138ffd84ce2ae550f4fbcc9e3cf589b81 authored almost 4 years ago by Alan McGovern <[email protected]>
2f2e9a6d1d3d0de573ed2dcfcf0cb11114e42af1 authored almost 4 years ago by Alan McGovern <[email protected]>
6082f37ccc9a9c6a73ea72fa5b2592093c96a8bb authored almost 4 years ago by Alan McGovern <[email protected]>
COR Policies added to HttpStream
6c4d575d378c4f276f58dca9611e8b665e54db2f authored almost 4 years ago by Alan McGovern <[email protected]>param name for old parameter removed.
a898acf5ab99be14cc042c45922584f3cdcd0043 authored almost 4 years ago by Paul <[email protected]>Slight progress. CORS policy declined message goes away. Just a lot of Net.Sockets Exceptions be...
af5cb9d227092ffb660515be3907ce84ea943728 authored almost 4 years ago by Paul <[email protected]>Access-Control-Allow-Origin fixed the issue. Video is not yet playing as hoped. Will look more i...
a30853c9e2e6b8beea62d322956ef5c7f0d3587c authored almost 4 years ago by Paul <[email protected]>the ServerUri points to another domain that should allow HttpListener to be CORS friendly with t...
bb4314f205731ea115757916fde7b4a76b817496 authored almost 4 years ago by Paul <[email protected]>
If you create two DhtEngines then message ids should not be
shared. This wouldn't have been a pr...
The cache is on by default, so disable it here so the tests keep
excercising the correct code.
If the dht engine is stopped, clear out the send and
receive queues.
If the settings have chosen port 0, then the listener will
bind to an arbitrary available port. ...
This is integrated with ClientEngine.Start/Stop now
2b35d820ad1b4b73b9efa751d06290983bfb4231 authored almost 4 years ago by Alan McGovern <[email protected]>Use a random port... because we can!
Also make the status printing a little more concise.
4b610f031caa7306bef345916ce90f3650010a1c authored almost 4 years ago by Alan McGovern <[email protected]>a9d359fad898a32f007fc0fcb85d9362b6e21a05 authored almost 4 years ago by Alan McGovern <[email protected]>
I want it to be ambiguous. Sometimes i want to refer to a method
and i really don't care which o...
The rough edges should be resolved and the disk cache
should be safe to enable by default again....
The engine (currently) only needs two additional methods when streaming
files. Wrap these in ISt...
These are caches, not 'save' directories. The torrent itself
is saved somewhere, but metadata/fa...
Don't manually save/restore fast resume data or the
dht cache. This is handled implicitly by the...
If the DhtEngine is implicitly managed by the engine then
it will now also implicitly manage sav...
At least make it a directory called 'cache'. This
will make things a little better.
* [core] Add support for automatically saving/loading FastResume
The engine will now automati...
c3fd120cda99aa57e45a801c720098898d131f4a authored almost 4 years ago by Alan McGovern <[email protected]>
This phase is usually short lived too, so this is one
step closer to allowing 'streaming' for fi...
This might make it easier to debug performance
45ee7cf6ae532aaf85f2c19a01f95c070448e9c3 authored almost 4 years ago by Alan McGovern <[email protected]>b82232789844ddc005e4c4b06e97e73287c9b7c3 authored almost 4 years ago by Alan McGovern <[email protected]>
They're super useful in things like custom piece pickers,
or piece writers, as it makes it trivi...
Some simplifications to the API.
Rather than manually creating a torrent manager, then regist...
3c7b786f095d66bf25047df0aeffce61ea5682c8 authored almost 4 years ago by Alan McGovern <[email protected]>
This will allow the engine to implicitly manage fastresume data,
dht cache data, and also provid...
Move this to ClientEngine.AddStreamingAsync. When this overload
is invoked we'll now populate th...
EngineSettings contains the path where torrent metadata
files are cached when torrents are downl...
If it's supposed to be a directory, append 'Directory' to
the property name.
This replaces usag...
2ed2319836544c5a11058c614bf92a2be9e682dc authored almost 4 years ago by Alan McGovern <[email protected]>
This should make them deterministically green. We should really
be awaiting the returned tasks t...
If we're reading data from the in-memory cache, we should not
block on the flush-to-disk aspect....
The memory cache enables us to support some level of out-of-order
incremental hashing.
If a blo...
a0de480607ea6307e78672b06f514671786ba38d authored almost 4 years ago by Alan McGovern <[email protected]>
There used to be the potential for a data race. The issue
is that there'd be a gap where a parti...
Added CreateSubFolder property to TorrentSetting
0ed17d0a90668f089bc97f21d6412bd9a8d68cb2 authored almost 4 years ago by Alan McGovern <[email protected]>d292df0af3724365a5cc1e48ff4391677c502dd6 authored almost 4 years ago by Alan McGovern <[email protected]>
d72700a578e2a14cdc747ba188fb8b8e8f98a18a authored almost 4 years ago by Alan McGovern <[email protected]>
I unintentionally removed support for piece sizes which
were not multiples of 16kB. It came as ...
It's probably best, long term, to be consistent. Make this
method async and ensure it proxies to...
This is cached because we know the version passed into
the method is not guaranteed to be non-nu...
59d02088b419f7adc20fbdfabbd067c3098e76c1 authored almost 4 years ago by Alan McGovern <[email protected]>
Incremental hashing now fully guarantees the invariant
that a block which is incrementally hashe...
Simplify the logic to create Piece objects with the correct
number of blocks, and also ensure th...
All public/internal entry points to this class
should proxy themselves to the IO loop so threadi...
The tests should ensure they don't request data which
does not exist. i.e. do not request block ...
These will help reduce the amount of math littered around
the library.
This guarantees we cannot accidentally mix up blocks if there
are two or more active torrents.
662deac8a0fefcfadb6224fdf0c75b90e808ff7a authored almost 4 years ago by Alan McGovern <[email protected]>
We can simplify this and wrap the increment/decrement
in a try/finally in the same method. The c...
Rather than multiplying out the piece/block math in
multiple places, reduce it to some helpers m...
Now we can handle multiple consecutive zero length files while
retaining the new logic to binary...
Rather than integrating a memory cache as an IPieceWriter, we can
instead integrate it as it's o...
* [core] Allow bypassing the disk cache
The cache is used primarily to ensure that data is he...
5a8c94776fe5170b8c3c71ab0f49f613489fc3f4 authored almost 4 years ago by Alan McGovern <[email protected]>
Remove tests which serve no purpose anymore. The tests in
PieceManagerTests are actually attempt...
I'm pretty confident that we can safely keep MemoryWriter available
for people who wish to sligh...
This should rarely, if ever, change during runtime. In the
event it does change it's probably be...
If the very first block we send is the last block in the torrent,
and then we try to send anothe...
If two blocks from the same piece are received at the same time
and are processed in sequential ...
This reverts commit 5e0afecec3ea354898a1369134f36178c19d8ccb.
49780c07bcd41d87216da0672af2882d30568aaa authored almost 4 years ago by Alan McGovern <[email protected]>
There are issues which appear to stem from the memory cache:
https://github.com/alanmcgovern/mon...
This isn't ideal, but it's good enough for now. It's pretty
much mandatory to update the version...
Reported by AN3Orik on github
b3296379a3653c691214aac825b600313507f392 authored almost 4 years ago by Alan McGovern <[email protected]>
We should be clamping the end piece index to within
the bounds of the file we're downloading.
If the MemoryWriter capacity is smaller than the size of
the block being written, it should shor...
If there's a peer we *should* be requesting pieces from but
are currently not requesting any, tr...
This will allow implementations of IPieceRequester to perform
operations on a regular cadence.
Move the specialised streaming piece picker logic into the new StreamingPieceRequester.
This ...
063f9ebc6396291a5058402c3eab5fff0f6ea107 authored almost 4 years ago by Alan McGovern <[email protected]>* using the modern pattern match syntax
* 1、bug fixed--spelling mistake,check whether Picker ...
62dee9212b621d8529e0d5c8803a6c522f113800 authored almost 4 years ago by OneFingerCodingWarrior <[email protected]>c50cd02791badebe74c84899b69a10880c2641ca authored almost 4 years ago by Alan McGovern <[email protected]>
If we forbid the piece picker from being changed at runtime then
we never have to Initialize an ...
Next round of refactorings. I'm a bit happier with this approach.
IPiecePicker - implement th...
a57dd84a0798ef3f23587bc52567f607a4ca9875 authored almost 4 years ago by Alan McGovern <[email protected]>
Some libraries/apps like to seek backwards in the stream
even though they've already read the da...
We can now rely on the IPiecePicker to appropriately
handle how duplicate requests are assigned ...
If we have all the highest, high and medium priority pieces, then
we should enqueue at most 2 re...
If the seek was a no-op we can avoid the overhead of
reassessing which pieces need to be requested.
Don't request the same piece twice from one peer. The
purpose is to make it more likely we'll be...
Issue 3 requests for each block in the first piece, then
3 requests for each block in the secon...
If every piece has been requested 3 times this would cause
us to leave endgame mode.
It would h...
08ec7f9bf4494aafc7c6900be69df90cf912d4eb authored almost 4 years ago by Alan McGovern <[email protected]>7b0b87d2a9332f3104cd097d1dc476da785035ae authored almost 4 years ago by Alan McGovern <[email protected]>
The StandardPicker logic has now been enhanced to
fully support the 'maxDuplicates' parameter in...
02fd4cbcd50ce1d7ad50e5406724d55242620deb authored almost 4 years ago by Alan McGovern <[email protected]>
This is static data, so only create it once.
f9b17089d00c139d3fc4ef83218686a49135a774 authored almost 4 years ago by Alan McGovern <[email protected]>
The tests were slightly non-deterministic in how they
ran due to the interaction between the tes...
Ensure the tests do not deliberately trigger errors by invalidly
writing the same data twice con...
Refactoring picking
b2e2d590cd5904d6da5b585b333c9b80b4f4532b authored almost 4 years ago by Alan McGovern <[email protected]>It's a bit more accurate in how it's used :)
484e09f52c11a4ef23dedd37e623378a99f1ae67 authored almost 4 years ago by Alan McGovern <[email protected]>ea689df46432b2e57caf188fadb404456965ca34 authored almost 4 years ago by Alan McGovern <[email protected]>
Also expose a way to enqueue piece request and
piece cancellation messages with peers. This allo...
IPiecePicker.ContinueAnyExistingRequest now allows duplicate
requests to be made. This allows th...