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] Fix a double reference of ReusableTasks

Directory.Build.targets also adds a reference, so ensure that
doesn't happen!

6dfaf257e3173637bbd88e408c0fb56886e0a9b6 authored about 3 years ago by Alan McGovern <[email protected]>
[core] Migrate to HttpClient everywhere (#475)

If we move everything to HttpClient it makes it easier to support proxies in future.

d04058e65e1fc4a4171fa3be25d682d1ea300dc0 authored about 3 years ago by Alan McGovern <[email protected]>
[core] Split the interdependence between types

Make it easier to create things via the factories. Try to
remove constructor time dependence bet...

dad42541ef8a92d98c892d5cb0c62b8cebf87abb authored about 3 years ago by Alan McGovern <[email protected]>
[core] Suppress ExecutionContext flow for socket operations

This appears to work fine under UWP, .NET 4.7.2 and .NET Core 3.0+

Improves perf slightly, and ...

b0640e06bf2ec21bd01ade18535e8f5f161a70b8 authored about 3 years ago by Alan McGovern <[email protected]>
Update ReusableTasks and remove a hack

Any csproj which directly references ReusableTasks will include
a source file with the build whi...

26c9e666f16013f6167b60747312cfb8d028044d authored about 3 years ago by Alan McGovern <[email protected]>
[core] Update some PackageReferences and comments

9155f7157a3b8d22e112c8d39aa28fea929fc9db authored about 3 years ago by Alan McGovern <[email protected]>
Silence unnecessary warnings

896b4d493db9ba4cdabfa1774e3353812bdde67d authored about 3 years ago by Alan McGovern <[email protected]>
Fix the links in the readme

The release branch data is showing up correctly now.

ac64eb420647a6eafeba07bf446b4f00d884a5d1 authored about 3 years ago by Alan McGovern <[email protected]>
[core] Lock all nuget package versions when compiling in CI

3ce1454f768a78b981a05d50c9b915909341df78 authored about 3 years ago by Alan McGovern <[email protected]>
[portforwarding] Lock the version of Mono.Nat

bc6c409bbc4dfef3f810bca3210073f87bbf8ea4 authored about 3 years ago by Alan McGovern <[email protected]>
[core] Move PortForwarding to it's own library

bd174de40789e8c24a5c08179b8aafd87f3ae89d authored about 3 years ago by Alan McGovern <[email protected]>
[core] Update Cache<T> to use a Func

Now we can make IncrementalCacheHash non-static and instantiate
it using the SHA1Creator in the ...

008f49c6e1d32d07b6ec56c55cf24b9dacfe3f92 authored about 3 years ago by Alan McGovern <[email protected]>
Remove a dead file

9228e131582451099849cc2f72113faad741d8d2 authored about 3 years ago by Alan McGovern <[email protected]>
[core] Remove HashAlgoFactory

Fold this into 'Factories'

e194b19e24d8b071f2aba7ccf4b8c22622be51fe authored about 3 years ago by Alan McGovern <[email protected]>
[core] Use an immutable approach to overriding core functionality

Require the user of the library to create the 'Factories' object
before initializing the engine,...

679ce8b549fd7b2c7dde288f6153f3ccbaecf9f9 authored about 3 years ago by Alan McGovern <[email protected]>
[dht] Allow exceptions from DhtListener to propagate

If we propagate exceptions when sending dht messages
we can immediately time out requests when w...

1858b63ce4f84a83896d8a369a7545e0dff544a7 authored about 3 years ago by Alan McGovern <[email protected]>
[dht] Handle init failures better

If we fail to initialise the engine, change the state to
NotReady again.

This can happen if the...

a80e09c3fb8bf1ad7e7b5275c23cb1c2a558c807 authored about 3 years ago by Alan McGovern <[email protected]>
[core] Properly store metadata for streaming torrents

Use the same codepath to load torrents normally and when
loading them for 'streaming'. This ensu...

a4b7db618b99f6449cb91e3732814462a0edc3dd authored about 3 years ago by Alan McGovern <[email protected]>
Fixup how nupkgs are generated

4889bf1d6c8891a74a6390c525751261e4f2bda8 authored about 3 years ago by Alan McGovern <[email protected]>
Set version to 3.0.0 alpha

8b3ae7b6f55196ae802c9888983aed74e239c8b3 authored about 3 years ago by Alan McGovern <[email protected]>
set as alpha

bcbfb967473e587f064cd5ef7d4701dc6dec220a authored about 3 years ago by Alan McGovern <[email protected]>
Create a Connections project too (#457)

* Create a Connections project too

This will make it a bit easier to create an adapter
which...

1f91b085d8e8f89e104c0e3fe47c302f06ab2512 authored about 3 years ago by Alan McGovern <[email protected]>
Merge pull request #458 from alanmcgovern/rename-iconnection

[core] Rename IConnection to IPeerConnection

ac8b81c39a80902dde876028d785acb8f3018134 authored about 3 years ago by Alan McGovern <[email protected]>
[core] Rename IConnection to IPeerConnection

eec400713755a00655c68828c2d29cd244ac9d72 authored about 3 years ago by Alan McGovern <[email protected]>
Merge pull request #456 from alanmcgovern/picker-integration

[core] Better piece picker integration

c0e7d54b011403845b8d05e61fbd7dc3b1e91dee authored about 3 years ago by Alan McGovern <[email protected]>
[core] Better piece picker integration

The integration point for custom piece pickers it to implement
IPieceRequester or IStreamingPiec...

7bb3bbb9439860809d6137f60dfa6bc610d4aef5 authored about 3 years ago by Alan McGovern <[email protected]>
[core] Error correctly if the same torrent is loaded twice

DownloadMetadataAsync was a secret backdoor to accidentally
loading the same torrent twice, but ...

849ffd665213af7b65e1e5a3952a5f792035a36d authored over 3 years ago by Alan McGovern <[email protected]>
Merge pull request #445 from alanmcgovern/partial-files

Partial files

e7c22cbe7608f266f0e4b0de7398ab8651367c3f authored over 3 years ago by Alan McGovern <[email protected]>
[core] Add tests covering changing UsePartialFiles

ed24cd45134e60ab380d0812f8508a65b50923f7 authored over 3 years ago by Alan McGovern <[email protected]>
[core] Use the new 'UsePartialFiles' setting

If a file is actively being downloaded it will be given a special
suffix (.!mt) to indicate it's...

0218d543df425166d2b8c4a44bc884b540c4e0ea authored over 3 years ago by alan.mcgovern <[email protected]>
[core] Add support for suffixing incomplete files

e2d5ccfe689829f756030ae4cd35f0f710a05e99 authored over 3 years ago by alan.mcgovern <[email protected]>
[core] Allow dynamically updating UsePartialFiles

Update ITorrentFile.DownloadIncompleteFullPath, and rename the
on-disk file, whenever we enable/...

9d55965d7d60a45c71a1a620aa1a565ecf45ae47 authored over 3 years ago by Alan McGovern <[email protected]>
[core] add the correct props file

Oops

fd20e15afc143956ced4cc12d21693858d5f5643 authored over 3 years ago by Alan McGovern <[email protected]>
[core] Enable 'Deterministic' for this build

da2d51f5bb1b931f76079e6293f6a5facafcd557 authored over 3 years ago by Alan McGovern <[email protected]>
[core] Clean up the tests projects

Use a Directory.Build.props for common things in tests

9d7da32076d1579ae2e1e776f67b2f77503b1459 authored over 3 years ago by Alan McGovern <[email protected]>
Merge pull request #454 from alanmcgovern/split-library

Split library

999d34b5f102aa4dfb72497b381e8f36b86f5653 authored over 3 years ago by Alan McGovern <[email protected]>
All assemblies are internalsvisibleto their test assembly

6114ebc62884fd48d493dff562473117989f5688 authored over 3 years ago by Alan McGovern <[email protected]>
Shuffle around

79696137669aa27a72504deb11bc19e71e00bf58 authored over 3 years ago by Alan McGovern <[email protected]>
flush

12f5a4581b3d55d5695377b3dabbb7324cedd337 authored over 3 years ago by Alan McGovern <[email protected]>
Undo one part of the changes

95d65a2a72d44c9e354a0cf65934bd9bef704582 authored over 3 years ago by Alan McGovern <[email protected]>
Move peer messages to their own library

7d323c74793ffac34f26c8114e5e9d70bdc33ab7 authored over 3 years ago by Alan McGovern <[email protected]>
[core] Remove a copy/pasted file and reference System.Web

We can use System.Web now. We require .NETStandard 2.0+ so
we are guaranteed that HttpUtility wi...

c5a136a39e6f4c195bd06d075ffd0528a0f9920a authored over 3 years ago by Alan McGovern <[email protected]>
Move all tests projects inside a tests directory

973598a40176d7145f0050b91e72706e7cc89f74 authored over 3 years ago by Alan McGovern <[email protected]>
Create a tests project

6b11dca716a64aa29f49d9488add827caa8521a2 authored over 3 years ago by Alan McGovern <[email protected]>
Remove an unnecessary sync to a threadpool thread

The rest of the file creation process could be slow too,
so we either move the entire file creat...

e726d8665ca90d72da53d813a32646622d96d7b1 authored over 3 years ago by Alan McGovern <[email protected]>
Split out PieceWriting to it's own library

538e11d90fc9d1a269850da3ebd7c8ee825757f7 authored over 3 years ago by Alan McGovern <[email protected]>
[core] Move more stuff to MonoTorrent.PiecePicking

36444b1a020d043e462ab130127d735cb5950114 authored over 3 years ago by Alan McGovern <[email protected]>
Create MonoTorrent.PiecePicking

d6a124f69382e5fac9aa1c183e375192443ecb16 authored over 3 years ago by Alan McGovern <[email protected]>
Create MonoTorrent.csproj and put BitField there

99e72dfdb9255b4aa4bd2461d738fb79375a8987 authored over 3 years ago by Alan McGovern <[email protected]>
Rename MonoTorrent -> MonoTorrent.Client

be6f49d1623ad84010df31436f88f8d4bdbfd19e authored over 3 years ago by Alan McGovern <[email protected]>
[core] Split BEncoding into it's own library

Certain parts of the core library are supposed to be
externally implementable. The easiest way t...

59653bd8e7f1685772224f8fe1dada235f40a947 authored over 3 years ago by Alan McGovern <[email protected]>
[core] Prioritise torrents with the fewest connections

Rather than doing a 'fair' round robin, prioritise connecting
to torrents which have the fewest ...

70973fd6d23471185b7d298ea4e6af0ab08cd2c6 authored over 3 years ago by Alan McGovern <[email protected]>
Version as 2.0.0 stable

Not a huge amount of thought went into this.
But since it's May 4th, why not release 2.0.

adcbbd96af52139f6af9467242ebced67f702d17 authored over 3 years ago by Alan McGovern <[email protected]>
[core] Fix some issues with TorrentManager.Move*Async

Moving a single file now works the same as moving all files.
Destination directory is created (i...

b28da78a69957e62f0b779aa17867bfdcf1a1ca7 authored over 3 years ago by Alan McGovern <[email protected]>
[core] Add a way to save/restore an entire ClientEngine

Save all user settable state, and allow reloading it later.
This will save the engine settings, ...

cdad9ae9701de9120e418e0670da59b88c60714a authored over 3 years ago by Alan McGovern <[email protected]>
[core] Save/Restore in-memory torrents too

Persist a good-enough copy of the torrent metadata to
disk.

17d6eec7a92cec226fe241c8b8d48e2520cdccc4 authored over 3 years ago by Alan McGovern <[email protected]>
[core] Support reloading files from disk

More tests, more fixes.

935858008275c5d80016886f224251d5db51a2a5 authored over 3 years ago by Alan McGovern <[email protected]>
[core] Support saving/restoring magnet link torrents

3ee519da6193ab96845be0da6ea5d0c4c487ab6a authored over 3 years ago by Alan McGovern <[email protected]>
[core] Fix some races in HashingModeTests

Use better async to properly test this.

f141bff04472556f232da4e09712d43c14de725b authored over 3 years ago by Alan McGovern <[email protected]>
[core] Randomize trackers when they're used

The list of tracker tiers, the the order of the trackers
within a tier, are now randomised when ...

405b84d1880641076ca8d6fb7e2ba6cc27b83dd7 authored over 3 years ago by Alan McGovern <[email protected]>
[core] Add serialization methods to [Torrent|Engine]Settings

This can be refactored into a separate class. However the logic
should be nicely forwards/backwa...

7a63b5f9207f45d506a213377a725eccdbf7431f authored over 3 years ago by Alan McGovern <[email protected]>
[core] Store the unchoker on the Mode

This allows the unchoker to be reset implicitly every time
we stop/start a torrent as a new one ...

3ee07d507847e21b2a06fb6212439cf5da5af873 authored over 3 years ago by Alan McGovern <[email protected]>
Merge pull request #440 from alanmcgovern/cleanup-constructors

Cleanup constructors

036ea2438e0adb487e63bbc24a830568b15d0f4c authored over 3 years ago by Alan McGovern <[email protected]>
[core] More constructor cleanup

0019782d64116a7fb942fb6150ade972a9098e25 authored over 3 years ago by Alan McGovern <[email protected]>
[core] Consolidate on 'MetadataPath' instead of 'torrentSave'

7ba230dcb3f0644dc17431e12c53cf9fc515f1ab authored over 3 years ago by Alan McGovern <[email protected]>
[core] Remove an unused TorrentManager constructor

5d279713a1f81b49282c62fa4a3cfb77bce2b4e4 authored over 3 years ago by Alan McGovern <[email protected]>
[core] Remove one unnecessary ctor for TorrentManager

f032dea27bd6f272192b430d5db4aa1b4f833cbf authored over 3 years ago by Alan McGovern <[email protected]>
[core] Make TorrentManager.Engine init-only

This should be non-nilable. Set it in the ctor.

8bd6f43442743c5f7957055590d5de388d4a2a4f authored over 3 years ago by Alan McGovern <[email protected]>
Merge pull request #438 from alanmcgovern/cache-metadata-safely

Improve cache handling

4fa89fd9f7e12074b26d4d5dfc81105cc3a3e8cd authored over 3 years ago by Alan McGovern <[email protected]>
Ignore a file

4e03c2a5edff2675f511d9a417421ec7bfe4f9eb authored over 3 years ago by Alan McGovern <[email protected]>
[core] Add the ability to delete data when removing

If a magnet link is used to create a TorrentManager then
the metadata is written to the cached d...

05dd67c549898f9f4ad19b47a8cb29876238fb7e authored over 3 years ago by Alan McGovern <[email protected]>
[core] Add ClientEngine.AddAsync(string) overloads

This will allow the engine to copy the .torrent file
directly to it's cache directory.

70354758804277e58d7c5f8a6f2c50e8d8d46c1d authored over 3 years ago by Alan McGovern <[email protected]>
[core] Ensure the cache directory is writeable

Validate the cache directory when constructing
the ClientEngine and when changing the settings.
...

d9c41c58a4a833d40c442c83d90a1a19beb6fc67 authored over 3 years ago by Alan McGovern <[email protected]>
Revert "[core] Force developers to set a usable cache directory"

This reverts commit 752b97109aab439c7934014a953b389889eebcbc.
i have a better idea

e4f0ece583ab05e3faf66360c5f58c35d36cf202 authored over 3 years ago by Alan McGovern <[email protected]>
Revert "[core] Validate the Cache directory is writeable"

This reverts commit c87b5b2c0ac72586f3f082f7fc979f8f14c97907.

ed48870d5a48f0ededca71f20ffce9dddaadf92d authored over 3 years ago by Alan McGovern <[email protected]>
[core] Validate the Cache directory is writeable

Validate the cache directory is writeable before loading
a torrent into the engine. This makes i...

c87b5b2c0ac72586f3f082f7fc979f8f14c97907 authored over 3 years ago by Alan McGovern <[email protected]>
[core] Force developers to set a usable cache directory

Don't default to using the current directory as the
cache directory. Instead throw an error if a...

752b97109aab439c7934014a953b389889eebcbc authored over 3 years ago by Alan McGovern <[email protected]>
[core] Maybe save fast resume frequently

If 'BestEffort' is enabled, save fast resume data every N seconds.

f9ac1751ce80819661948e4046e9ebde06ee28ef authored over 3 years ago by Alan McGovern <[email protected]>
[core] Add the concept of Fast or Accurate fast resume

5afb59493666c5c2a53740810694b164829fea09 authored over 3 years ago by alan.mcgovern <[email protected]>
[core] Write fastresume when all data is downloaded

Write fast resume data when we enter 'seeding' mode

c5a92a32f6828c0e4751a4fa76aa27bd3da19cf1 authored over 3 years ago by Alan McGovern <[email protected]>
[core] Remove magic tricks from the logger

Just pass in the classname rather than using magic
tricks to try and parse the name automaticall...

749394374385ad5bfe8305b19fcf300a01185a0e authored over 3 years ago by Alan McGovern <[email protected]>
[core] Allow the StreamingPicker to pick any piece

A prior change to ensure pieces from within the high, or low
priority range were always prioriti...

c9e31cf280f2ee8edeff7dd18d098d161cf4b365 authored over 3 years ago by Alan McGovern <[email protected]>
[core] Verifies valid and absolute HttpSeed urls on load

Invalid urls would fail to parse in Mode.DownloadLogic throwing an unhandled exception. This add...

61bcc569b648e6cced86e33101a084cf9ba9d077 authored over 3 years ago by Phil Scott <[email protected]>
[core] Changes HttpSeeds to IList<Uri>

Breaking change. Changes HttpSeeds from a string to a Uri. Internally, HttpSeeds is only used i...

4961054686afaa2445aa8f7c667cbbd5e77aa1e7 authored over 3 years ago by Phil Scott <[email protected]>
[core] Remove an unnecessary parameter

We can get the correct file for a given byte offset without
the PieceLength, so don't pass that in!

423ea9f10bf7307c9bc2e5b9438911f5cf9577b5 authored over 3 years ago by Alan McGovern <[email protected]>
[core] Fix finding a file by piece index

This code didn't correctly walk back up the list to find
the *first* file which contained the re...

a97b40cd140979c1004329a0700f7a51728c4417 authored over 3 years ago by Alan McGovern <[email protected]>
[core] Add a mutable bitfield to the public API

This now gives us a 'guaranteed' immutable BitField,
and also a Mutable version. Most things int...

88243df448ad044652cc6ae6ea12975fc7b46a66 authored over 3 years ago by Alan McGovern <[email protected]>
[core] Add some documented ways to get access to fast resume data

Also add a way mark a torrent as needing to be hash checked. This
will implicitly be used if the...

bc0aa681fa981b03d85fefe2870d7eef086a8a61 authored almost 4 years ago by Alan McGovern <[email protected]>
[core] Make the 'BitField' mutating methods internal (#422)

The 'BitField' class is supposed to be readonly in every scenario
where it's exposed to users.
...

34b33affc3a83db4b8f92bc2b4a182ccab87f24f authored almost 4 years ago by Alan McGovern <[email protected]>
[core] Pass on the correct FileAccess to the stream

The parameter was unintentionally ignored.

faab4a6ed3a2c59219af00c048fb87ea31e64133 authored almost 4 years ago by Alan McGovern <[email protected]>
[core] Choose a fixed port in the sample

My router will be happier with the port forwards.

2b4fce518b965fb9da30a9d9573a4283518d45a4 authored almost 4 years ago by Alan McGovern <[email protected]>
[core] Support cancellation in the VLC sample

4b804701b9e84a0a069ee52d6bd9e8b7f7b00bdb authored almost 4 years ago by Alan McGovern <[email protected]>
[core] Don't add 'initial nodes' to the table until they respond

Query the node first. It will be added to the table implicitly
if it actually responds.

884291472814115788883b88813362ba8b3b20d6 authored almost 4 years ago by Alan McGovern <[email protected]>
[core] Tweak to streaming picker

Properly reset the bool to false after seeking.

Additionally, focus peers on the high priority ...

870d0cc8a9f3286f35784a463f3a394ca49d8ef2 authored almost 4 years ago by Alan McGovern <[email protected]>
[core] Update the 'vlc' sample

Enable it by passing --vlc to sampleclient.
Somewhat hardcoded to windows paths.
Hardcoded to a ...

e656fc1fc7521307befe2e9f80ded91298bf27a7 authored almost 4 years ago by Alan McGovern <[email protected]>
[core] Move some helpers to actual extension methods

Also remove some duplicate code at the same time

ff1b240c4fcb7ecae78efec2d670bb3a5658767a authored almost 4 years ago by Alan McGovern <[email protected]>
[core] Use a proper way to change file priority (#416)

Don't allow people to set this directly via public API.
It's much more efficient for the librar...

b2dcf1dc3098a1170d8fa89cb2d924effbe395f3 authored almost 4 years ago by Alan McGovern <[email protected]>
[core] Remove a parameter from IPieceRequester

This parameter is unnecessary, and is also confusing. IPieceRequester
can calculate the correct ...

9c13a53d80372659ecfe266a98ab5aad578c9f69 authored almost 4 years ago by Alan McGovern <[email protected]>
[core] Don't make a 32k piece test metadata

bb65c51edd33c98ee09b8b50b087468aa0271c28 authored almost 4 years ago by Alan McGovern <[email protected]>
[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]>