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

[core] Slight tweak to the standard picker perf

Order this in terms of likelihood

0fd75bac15df1542731dcf72510d86c6f5a52350 authored almost 4 years ago by Alan McGovern <[email protected]>
[tests] Use the 'CreateForTests' helper here

This disables most things so it's pretty easy to
use.

475424164c6f88b0a3bc7f2d925b2272d250b8d1 authored almost 4 years ago by Alan McGovern <[email protected]>
[tests] Fix a flakey test

We can't rely on any given port being available. Try a few!

57dad996eb71dd1c7ad91499f311f7ad9bf1d56b authored almost 4 years ago by Alan McGovern <[email protected]>
[core] Make MaxRequests be proportional to download speed

We add 1 extra block request (16kB) for every 10 kB/sec of
transfer rate from the remote peer. T...

6608c7085de72edf18f08de17788d2bae3cfe135 authored almost 4 years ago by Alan McGovern <[email protected]>
[core] Optimise updating partial progress

The normal scenario is that no files are marked as 'do not download',
so optimise this method to...

7be97b1a2612d4ef59536e8d7c574262dad67885 authored almost 4 years ago by Alan McGovern <[email protected]>
[core] Optimise BitField.SetAll(bool)

If SetAll(true) is invoked and all bits are already set to true,
fast-path and do nothing. Simil...

e2a27dc71cf90978504e5591d4283ed2e2b3c73c authored almost 4 years ago by Alan McGovern <[email protected]>
Update some comments

0c42635e2baa1b0ee5631549a645a19c154ed80a authored almost 4 years ago by Alan McGovern <[email protected]>
[samples] Update some of the samples

37d1ba32f187cc9a6195660ea59915b69ca31ade authored almost 4 years ago by Alan McGovern <[email protected]>
[core] Hide implementation details

These classes should not have been public

3dbee50f3e4956e029eb1bc900694d7b8b54c320 authored almost 4 years ago by Alan McGovern <[email protected]>
[build] Remove some warning pragmas

236ea4c138ffd84ce2ae550f4fbcc9e3cf589b81 authored almost 4 years ago by Alan McGovern <[email protected]>
[core] Fix a compiler warning

2f2e9a6d1d3d0de573ed2dcfcf0cb11114e42af1 authored almost 4 years ago by Alan McGovern <[email protected]>
[core] Remove APIs mark with [Deprecated]

6082f37ccc9a9c6a73ea72fa5b2592093c96a8bb authored almost 4 years ago by Alan McGovern <[email protected]>
Merge pull request #412 from SICGames/master

COR Policies added to HttpStream

6c4d575d378c4f276f58dca9611e8b665e54db2f authored almost 4 years ago by Alan McGovern <[email protected]>
Update StreamProvider.cs

param name for old parameter removed.

a898acf5ab99be14cc042c45922584f3cdcd0043 authored almost 4 years ago by Paul <[email protected]>
Update HttpStream.cs

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]>
No More CORS Policy Rejection

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]>
Added serverUri variable to HttpStream and CreateHttpStreamAsync

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]>
[core] Make some state non-static

If you create two DhtEngines then message ids should not be
shared. This wouldn't have been a pr...

7542f97ac1fbedaf3630207b250fadf167fb71a4 authored almost 4 years ago by Alan McGovern <[email protected]>
[Tests] update these tests

The cache is on by default, so disable it here so the tests keep
excercising the correct code.

177957a3288c5c1180423d8d451c3f1277f7e123 authored almost 4 years ago by Alan McGovern <[email protected]>
[core] Slightly better dht engine stop behaviour

If the dht engine is stopped, clear out the send and
receive queues.

780aae8bf4b220587717821dac5988c6acab354b authored almost 4 years ago by Alan McGovern <[email protected]>
[core] Report the correct port when 'random port' is enabled

If the settings have chosen port 0, then the listener will
bind to an arbitrary available port. ...

e793dba2edb6af940ecf9e0c59186449408779c7 authored almost 4 years ago by Alan McGovern <[email protected]>
[core] Auto start/stop the port forwarding logic

This is integrated with ClientEngine.Start/Stop now

2b35d820ad1b4b73b9efa751d06290983bfb4231 authored almost 4 years ago by Alan McGovern <[email protected]>
[examples] Update the main example

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]>
[core] Use a random port by default

a9d359fad898a32f007fc0fcb85d9362b6e21a05 authored almost 4 years ago by Alan McGovern <[email protected]>
[build] Disable a warning about ambiguous methods in xml docs

I want it to be ambiguous. Sometimes i want to refer to a method
and i really don't care which o...

c50aefb3cc3da489a79532b878d65c07527a5c80 authored almost 4 years ago by Alan McGovern <[email protected]>
[core] Re-enable the disk cache by default

The rough edges should be resolved and the disk cache
should be safe to enable by default again....

74264935df6ca013c3d7530d27c97ab37e563f9f authored almost 4 years ago by Alan McGovern <[email protected]>
[core] Create IStreamingPieceRequester

The engine (currently) only needs two additional methods when streaming
files. Wrap these in ISt...

6d6b45fd5bc24e7d4da89e941c8d8731df65c154 authored almost 4 years ago by Alan McGovern <[email protected]>
[core] Use 'Cache' instead of 'Save' for settings

These are caches, not 'save' directories. The torrent itself
is saved somewhere, but metadata/fa...

c379044db3e96794d9d84e113cfa838460f120d7 authored almost 4 years ago by Alan McGovern <[email protected]>
[sample] Rely on the built in behaviour now

Don't manually save/restore fast resume data or the
dht cache. This is handled implicitly by the...

0745d837b8ed36ed8fe4377939c3731010235f6c authored almost 4 years ago by Alan McGovern <[email protected]>
[core] Auto save/restore dht nodes too

If the DhtEngine is implicitly managed by the engine then
it will now also implicitly manage sav...

2d09c20d8d64a948878afd6c9cf76a4ccd98a8a4 authored almost 4 years ago by Alan McGovern <[email protected]>
[core] Improve the default for the cache directory

At least make it a directory called 'cache'. This
will make things a little better.

8606bacf9ed527347ec9f376ff7ea4646006b740 authored almost 4 years ago by Alan McGovern <[email protected]>
[core] Add support for automatically saving/loading FastResume (#409)

* [core] Add support for automatically saving/loading FastResume

The engine will now automati...

c3fd120cda99aa57e45a801c720098898d131f4a authored almost 4 years ago by Alan McGovern <[email protected]>
[core] Allow creating streams during hashing

This phase is usually short lived too, so this is one
step closer to allowing 'streaming' for fi...

13a4fac508352d2f33aa2bb43263170a56edfcfd authored almost 4 years ago by Alan McGovern <[email protected]>
[core] Add a sample which benchmarks streaming

This might make it easier to debug performance

45ee7cf6ae532aaf85f2c19a01f95c070448e9c3 authored almost 4 years ago by Alan McGovern <[email protected]>
[core] Add tests covering the new WaitForMetadataAsync

b82232789844ddc005e4c4b06e97e73287c9b7c3 authored almost 4 years ago by Alan McGovern <[email protected]>
[core] Make these helper methods public now

They're super useful in things like custom piece pickers,
or piece writers, as it makes it trivi...

d18276a33ffa27e09444f6ddb2ed0e4c92f86bbd authored almost 4 years ago by Alan McGovern <[email protected]>
Merge pull request #408 from alanmcgovern/engine_addremove

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]>
[core] Use a generic 'CacheDirectory' in 'EngineSettings'

This will allow the engine to implicitly manage fastresume data,
dht cache data, and also provid...

769a71366054f1da3c367be414c13d50042b46e0 authored almost 4 years ago by Alan McGovern <[email protected]>
[core] Change how Streaming is used

Move this to ClientEngine.AddStreamingAsync. When this overload
is invoked we'll now populate th...

2fb30b1b1ef549a3f165eb07e02dd5b314af746d authored almost 4 years ago by Alan McGovern <[email protected]>
[core] Do not create TorrentManager's directly

EngineSettings contains the path where torrent metadata
files are cached when torrents are downl...

14c96a9edb48eacdd2feaeb19fe7e26e4190be7f authored almost 4 years ago by Alan McGovern <[email protected]>
[core] Rename some settings for clarity

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]>
[tests] These are the worst tests ever

This should make them deterministically green. We should really
be awaiting the returned tasks t...

99d8c5a8d97ff92628150dcec7dc4799e2c568b8 authored almost 4 years ago by alan.mcgovern <[email protected]>
[core] Flush blocks asynchronously when hashing from memory

If we're reading data from the in-memory cache, we should not
block on the flush-to-disk aspect....

882f53632afb638568069ab374e7170abdd83174 authored almost 4 years ago by Alan McGovern <[email protected]>
[core] Allow out-of-order incremental hashing

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]>
[core] Address some potential races in the MemoryCache

There used to be the potential for a data race. The issue
is that there'd be a gap where a parti...

0cf0c4e8d01e4f962f4d4797bc9e51df5b310f49 authored almost 4 years ago by Alan McGovern <[email protected]>
Merge pull request #385 from AN3Orik/createSubFolderTorrentSetting

Added CreateSubFolder property to TorrentSetting

0ed17d0a90668f089bc97f21d6412bd9a8d68cb2 authored almost 4 years ago by Alan McGovern <[email protected]>
Update src/MonoTorrent/MonoTorrent.Client/Settings/TorrentSettingsBuilder.cs

d292df0af3724365a5cc1e48ff4391677c502dd6 authored almost 4 years ago by Alan McGovern <[email protected]>
Update src/MonoTorrent/MonoTorrent.Client/Settings/TorrentSettings.cs

d72700a578e2a14cdc747ba188fb8b8e8f98a18a authored almost 4 years ago by Alan McGovern <[email protected]>
[core] Support unusual piece sizes (again?)

I unintentionally removed support for piece sizes which
were not multiples of 16kB. It came as ...

f438dddfa4341685c294c2ac41e4e02f15834c1e authored almost 4 years ago by Alan McGovern <[email protected]>
[core] Make UpdateSettings a normal 'async' method

It's probably best, long term, to be consistent. Make this
method async and ensure it proxies to...

33eed2d102783323c9ae4d67b47566c6e51fa3d4 authored almost 4 years ago by Alan McGovern <[email protected]>
[core] Ensure that the non-null peersInvolved is used

This is cached because we know the version passed into
the method is not guaranteed to be non-nu...

d532927b7917e26abf3faabb8a44f2489b211f3d authored almost 4 years ago by Alan McGovern <[email protected]>
[core] Move some more code to the helper methods

59d02088b419f7adc20fbdfabbd067c3098e76c1 authored almost 4 years ago by Alan McGovern <[email protected]>
[core] Improve incremental hashing with the memory cache

Incremental hashing now fully guarantees the invariant
that a block which is incrementally hashe...

42f4b8a1fda0136a20a402257f90a0d1de18f153 authored almost 4 years ago by Alan McGovern <[email protected]>
[core] Use the helper methods to instantiate the 'Piece' object

Simplify the logic to create Piece objects with the correct
number of blocks, and also ensure th...

dfd459e7c63c7beeddf12c050f2e09b1e0a8fbf9 authored almost 4 years ago by Alan McGovern <[email protected]>
[core] Fix a threading issue for DiskManager

All public/internal entry points to this class
should proxy themselves to the IO loop so threadi...

bad06e4b72760e71fe14304708e99cefcaa09118 authored almost 4 years ago by Alan McGovern <[email protected]>
[tests] Ensure we do not request invalid blocks

The tests should ensure they don't request data which
does not exist. i.e. do not request block ...

e723637f4d02fb538b9d954c02c4efb04de87db4 authored almost 4 years ago by Alan McGovern <[email protected]>
[core] Add tests around some new extension methods

These will help reduce the amount of math littered around
the library.

18784235277448de4e1d85defc928b9d1211798d authored almost 4 years ago by Alan McGovern <[email protected]>
[core] Fully split the disk cache by torrent

This guarantees we cannot accidentally mix up blocks if there
are two or more active torrents.

a83c89150e9d4fd53cf8e9f6f036efd9a1e2d30f authored almost 4 years ago by Alan McGovern <[email protected]>
[core] Simplify instantiating the cache buffer

662deac8a0fefcfadb6224fdf0c75b90e808ff7a authored almost 4 years ago by Alan McGovern <[email protected]>
[core] Some small cleanups to the Interlocked calls

We can simplify this and wrap the increment/decrement
in a try/finally in the same method. The c...

d629c2b9989637d430a18a072032fcb51778a721 authored almost 4 years ago by Alan McGovern <[email protected]>
[core] Move offset math to a single location

Rather than multiplying out the piece/block math in
multiple places, reduce it to some helpers m...

5eecbbb4b1d758735c922363bbf78d01948ff766 authored almost 4 years ago by Alan McGovern <[email protected]>
[core] Fix how TorrentFile's are created

Now we can handle multiple consecutive zero length files while
retaining the new logic to binary...

092208d55e0c21fb61386fa1746b2ad735c97988 authored almost 4 years ago by Alan McGovern <[email protected]>
[core] Introduce a proper IBlockCache API

Rather than integrating a memory cache as an IPieceWriter, we can
instead integrate it as it's o...

35c6b2daba851909008998a0b596cab7de8adfa3 authored almost 4 years ago by Alan McGovern <[email protected]>
Make disk cache more useful (#397)

* [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]>
[core] Clean up some internal API

Remove tests which serve no purpose anymore. The tests in
PieceManagerTests are actually attempt...

726151398173382cb3be3e24593a21f8045b1691 authored almost 4 years ago by Alan McGovern <[email protected]>
[core] Set disk cache size to 0 by default

I'm pretty confident that we can safely keep MemoryWriter available
for people who wish to sligh...

889df8b066db5f908e13e8173d7acb8afc6cf719 authored almost 4 years ago by Alan McGovern <[email protected]>
[core] Flush the disk cache if the capacity changes

This should rarely, if ever, change during runtime. In the
event it does change it's probably be...

6b904da3d5d25a9313a4b392d96b283ee8519d4c authored almost 4 years ago by Alan McGovern <[email protected]>
[core] Ensure the piece buffer is always large enough

If the very first block we send is the last block in the torrent,
and then we try to send anothe...

119a290a1f7d570e06cd03f0179408747b319f32 authored almost 4 years ago by Alan McGovern <[email protected]>
[core] Make IncrementalHashing threadsafer

If two blocks from the same piece are received at the same time
and are processed in sequential ...

4b33862562820b753f707ed2649018fca0498645 authored almost 4 years ago by Alan McGovern <[email protected]>
Revert "Disable the memory cache internally"

This reverts commit 5e0afecec3ea354898a1369134f36178c19d8ccb.

49780c07bcd41d87216da0672af2882d30568aaa authored almost 4 years ago by Alan McGovern <[email protected]>
Disable the memory cache internally

There are issues which appear to stem from the memory cache:
https://github.com/alanmcgovern/mon...

5e0afecec3ea354898a1369134f36178c19d8ccb authored almost 4 years ago by Alan McGovern <[email protected]>
[core] Use the base version to determine the announced version

This isn't ideal, but it's good enough for now. It's pretty
much mandatory to update the version...

fb68ee1183014ff29407fd34e228e95e00ead690 authored almost 4 years ago by Alan McGovern <[email protected]>
[core] Add the ability to set the disk cache size

Reported by AN3Orik on github

b3296379a3653c691214aac825b600313507f392 authored almost 4 years ago by Alan McGovern <[email protected]>
[core] Fix a regression the tests caught

We should be clamping the end piece index to within
the bounds of the file we're downloading.

7f4f0ba1d9869beb2d09466e5dfbb1bf1ccabf25 authored almost 4 years ago by Alan McGovern <[email protected]>
[core] Fix a bug when the MemoryWriter capacity is tiny

If the MemoryWriter capacity is smaller than the size of
the block being written, it should shor...

482b35320b4eaff543bef728460dc879b10c2e5b authored almost 4 years ago by Alan McGovern <[email protected]>
[core] Add piece requests on a regular cadence

If there's a peer we *should* be requesting pieces from but
are currently not requesting any, tr...

d3f3d3983e3a333c20ef6df0a82a4b2b308fc0d7 authored almost 4 years ago by Alan McGovern <[email protected]>
[core] Call 'AddRequests' every tick

This will allow implementations of IPieceRequester to perform
operations on a regular cadence.

b3ed0af11c5db7e6b3c9e7f5b90f2d92e2455b7c authored almost 4 years ago by Alan McGovern <[email protected]>
Replace StreamingPiecePicker with StreamingPieceRequester

Move the specialised streaming piece picker logic into the new StreamingPieceRequester.

This ...

063f9ebc6396291a5058402c3eab5fff0f6ea107 authored almost 4 years ago by Alan McGovern <[email protected]>
CurrentRequestCount spelling mistake (#395)

* using the modern pattern match syntax

* 1、bug fixed--spelling mistake,check whether Picker ...

62dee9212b621d8529e0d5c8803a6c522f113800 authored almost 4 years ago by OneFingerCodingWarrior <[email protected]>
[core] More renaming in the piece picker rework

c50cd02791badebe74c84899b69a10880c2641ca authored almost 4 years ago by Alan McGovern <[email protected]>
[core] Simplify IPiecePicker

If we forbid the piece picker from being changed at runtime then
we never have to Initialize an ...

f57602f98d470b04b696200ec6c65ad5df8fe0a9 authored almost 4 years ago by Alan McGovern <[email protected]>
More picking tweaks (#394)

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]>
[core] Only cancel pieces if we seek to data we don't have

Some libraries/apps like to seek backwards in the stream
even though they've already read the da...

aab2bd89c496f8e40ed9406a4a1c0afd1b65a33f authored almost 4 years ago by Alan McGovern <[email protected]>
[core] Don't artifically limit the pending requests

We can now rely on the IPiecePicker to appropriately
handle how duplicate requests are assigned ...

de2692bf714f8f151537b832b676a691d0fc446e authored almost 4 years ago by Alan McGovern <[email protected]>
[streaming] Download at most 2 pieces from the lowest priority

If we have all the highest, high and medium priority pieces, then
we should enqueue at most 2 re...

b0b5a1bab1858fcd59c9cd3745385fa98f8354b8 authored almost 4 years ago by Alan McGovern <[email protected]>
[core] Only adjust the position if we actually seeked

If the seek was a no-op we can avoid the overhead of
reassessing which pieces need to be requested.

9cbb46eae79691b2c6256e77a05af94732f004cb authored almost 4 years ago by Alan McGovern <[email protected]>
[core] Ensure duplicate requests are from unique peers

Don't request the same piece twice from one peer. The
purpose is to make it more likely we'll be...

bb98a2c1c15ae34bdb2f838810602d80e19ea92d authored almost 4 years ago by Alan McGovern <[email protected]>
[streaming] Highly prioritise the first 2 pieces we need

Issue 3 requests for each block in the first piece, then
3 requests for each block in the secon...

7be82015c737e42de799c84c0fe415d7546ef38d authored almost 4 years ago by Alan McGovern <[email protected]>
[core] Don't accidentally leave endgame mode before completion

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]>
Add Directory.Build.props to the sln

7b0b87d2a9332f3104cd097d1dc476da785035ae authored almost 4 years ago by Alan McGovern <[email protected]>
[core] Allow duplicate requests in StandardPicker

The StandardPicker logic has now been enhanced to
fully support the 'maxDuplicates' parameter in...

2e23d7369473c2892b024dd446be13d92e757c74 authored almost 4 years ago by Alan McGovern <[email protected]>
[core] always build portable pdb files

02fd4cbcd50ce1d7ad50e5406724d55242620deb authored almost 4 years ago by Alan McGovern <[email protected]>
[tests] Improve some test performance

This is static data, so only create it once.

f9b17089d00c139d3fc4ef83218686a49135a774 authored almost 4 years ago by Alan McGovern <[email protected]>
[tests] Fix a race condition in the unit tests

The tests were slightly non-deterministic in how they
ran due to the interaction between the tes...

f890b521235deea8beac1e2eae1c11e0caf4125c authored almost 4 years ago by Alan McGovern <[email protected]>
[tests] Improve some DiskManager tests

Ensure the tests do not deliberately trigger errors by invalidly
writing the same data twice con...

f031af57602b17a40e79a80f789ef433a089210e authored almost 4 years ago by Alan McGovern <[email protected]>
Merge pull request #388 from alanmcgovern/refactoring-picking

Refactoring picking

b2e2d590cd5904d6da5b585b333c9b80b4f4532b authored almost 4 years ago by Alan McGovern <[email protected]>
Rename IPieceRequester to IPeer

It's a bit more accurate in how it's used :)

484e09f52c11a4ef23dedd37e623378a99f1ae67 authored almost 4 years ago by Alan McGovern <[email protected]>
test

ea689df46432b2e57caf188fadb404456965ca34 authored almost 4 years ago by Alan McGovern <[email protected]>
Pass the list of peers to the 'Tick' method

Also expose a way to enqueue piece request and
piece cancellation messages with peers. This allo...

6bb376674e721e3835364be087dcf733de00ec2f authored almost 4 years ago by Alan McGovern <[email protected]>
add the ability to request duplicate pieces

IPiecePicker.ContinueAnyExistingRequest now allows duplicate
requests to be made. This allows th...

07b55ae6f8f04b86d6ebb47c50d65d311bc2cf73 authored almost 4 years ago by Alan McGovern <[email protected]>