Age | Commit message (Collapse) | Author |
|
|
|
|
|
|
|
|
|
|
|
|
|
Announce request/response is not only request/response types!
Moreover we can unify and reuse UDP and HTTP tracker messages.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
* Fix tracker interval timeout: threadDelay use argument is microseconds
while tracker response is seconds.
* Fix stopped request: tracker might response with empty body.
|
|
* Annotate all required fields as strict. These are always used and
there is no reason to keep them lazy.
* Augment user errors with location.
|
|
|
|
HTTP client functions throws an exception. If we unable to decode result
we return BEncode.Result.Left. So user of this function should check
both kinds of errors and this complicate usage. Instead of this we throw
IOException too.
|
|
|
|
stringBufferOp is defined in terms of strictBuffer op. So we previously
we have convertion from strict bytestring to string and then manually
pack string back to strict bytestring to with BC.pack. We could avoid
this unnecessary convertion by just using bytestring streams.
http://hackage.haskell.org/packages/archive/HTTP/4000.0.9/doc/html/Network-BufferType.html#v:stringBufferOp
|
|
This allow to provide better interface.
|
|
All peer location & identification & information stuff should be placed
in Network.BitTorrent.Peer now.
|
|
|
|
|
|
|
|
It will be more convenient to provide high level api and raw protocol
separated. In many use cases we don't worry about protocol but need some
simple things like track swarm/peer state.
So I think it will be better to refactor library in the following way:
1. Network.BitTorrent.Tracker.Protocol,
Network.BitTorrent.PeerWire.Protocol
For raw protocol definitions, documentation and serialization.
2. Network.BitTorrent.Tracker
Network.BitTorrent.PeerWire
For convenient API.
Though we should not restrict user to in some particular way, so high level
api should be flexible enough. In other words: mechanism, not
policy/framework.
|
|
|