Skip to content

Commit

Permalink
Update README.md
Browse files Browse the repository at this point in the history
  • Loading branch information
a-pavlov committed Aug 26, 2016
1 parent ad88eec commit 17b472d
Showing 1 changed file with 38 additions and 10 deletions.
48 changes: 38 additions & 10 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,25 +6,53 @@

Main goal - native application for Android platform. Lighter, faster, more user friendly and convenient than current [Mule for Android](https://play.google.com/store/apps/details?id=org.dkfsoft.AndroidMuleFree&hl=en).

## Main features
## Techniques

* Async I/O using Java NIO
* Async network I/O using Java NIO
* Async disk I/O operations emulation via one single thread executor service per session
* Project structure inspired by [libed2k](https://github.com/qmule/libed2k)

## Status
* Base project structure
## Implemented features
* Packets parsing engine
* Connection to server
* Partial peer connection
* Search files in servers
* IN PROGRESS: files downloading
* IN PLANS: KAD support
* Alerts system
* Exception system with one type of exception and error code for each problem
* Search on servers(with all parameter types), search related, search more
* Downloading parts of files
* Downloading compressed parts of files(not recommended as default!)
* Connections policy
* Naive piece picker optimized to download fist and last pieces first for preview feature
* Naive piece manager - online pieces hash calculation and hash verification during downloading

## What next

* Stable code, fixing bugs, increase performance
* Advandced piece picker and piece manager
* KAD support

## Building
Currently no external dependencies. Build configured using Maven.
Few dependencies in pom.xml - Mockito for unit tests and slf4j logging facade. Build configured using Maven.

1. clone project
2. cd jed2k && mvn package

## Testing
You can use simple console downloader class org.jed2k.Conn. Before usage you have to set incoming directory as first parameter.
Do not use double quotes in commands below - there are for mark parameters.
Commands:

* connect to server, default port 4661: connect "server_address_or_ip" [port]
* search on server: search "search_phrase"
* search on server: search "search_phrase" dataSize "limit_in_mb"
* save search results: save
* load search results: restore
* show search results: print
* create transfer: load "hash" "size" "filepath"
* create transfer: load "emule_link"
* create transfer: load "number of search"
* delete transfer: delete "hash"
* exit application: quit

Special case - trial session - fixed sources addresses. Setup -Dsession.trial=true, -Dsession.peers=a.b.c.d:port,....

## Help
If you know Java/C++, Android or Java for Android, use eMule or simply would like help project - welcome :smile:

0 comments on commit 17b472d

Please sign in to comment.