- Paper - Introduction and related work.
- Setup repository in Github & Continues Integration process.
- Understand what .torrent files are.
- How to communicate with a trackerUrl.
- How to communicate with a peer.
- Paper - Introduction and related work.
- Understand basic algorithms of BitTorrent protocol.
- Design without implementing API for a basic algorithm.
- Be able to connect to peers and peers connect to me.
- Implement an API for reading/writing from/to files on the local machine.
- Learn how to work with latex. (Shachar, Stav)
- Create a paper on: (Shachar, Stav)
- What are we building.
- How client torrent application work.
- What our application do,add,won't do compared to other client torrent applications.
- How our application will work including technologies.
- Git repository – GitHub.
- Configure branch protection + pull request.
- Create automatic build: compilation + Units tests + cucumber tests – Travis-CI.
- GitHub pull request can be approved if and only if the build is pass in
CircleCI
andTravisCI
. (Stav)
- List of information types which are saved in a .torrent file. (Shachar, Stav)
- Understand how much parts there are for a file. Where can we get this information for each torrent file. (Shachar, Stav)
- What library in java we need to use to read and analyze .torrent files. (Shachar, Stav)
- Find the protocol and udpPort which enable us to communicate with a given trackerUrl. (Stav)
- List the methods we can run on a given trackerUrl. (Stav)
- Get list of peers information from this trackerUrl on a specific torrent. (Stav)
- Extract a peers IP from a seeder information. (Stav)
- Creating a New Sequence. (Stav)
- Transforming an Existing Sequence. (Stav)
- Peeking into a Sequence. (Stav)
- Handling Errors. (Stav)
- Writing tests. (Stav)
- Design a reactive API which provide trackers we connected to them. (Stav)
- Connect
- Announce
- Scrape
- Implementing tests. (Stav)
- Implementing the API. (Stav)
- Find the protocol and udpPort which enable us to communicate with a seeder.
- List the methods we can run on a given seeder.
- Design a reactive API which provide peers we connected to them. (Stav)
The API will let us listen for incoming messages and provide us a way to send messages to them. * Handshake * BitField * Cancel * Choke * Have * Interested * KeepAlive * NotInterested * Piece * Port - We are not supporting this at the moment. * Request * Unchoke
- Implementing tests. (Stav)
- Implementing the API. (Stav)
- Learn about basic BitTorrent algorithms. (Stav)
- Design an abstract API for download and upload a torrent. (Stav)