~ubuntu-branches/debian/experimental/libtorrent/experimental

« back to all changes in this revision

Viewing changes to TODO

  • Committer: Bazaar Package Importer
  • Author(s): Jose Luis Rivas
  • Date: 2007-03-31 10:31:05 UTC
  • mto: (4.1.4 gutsy) (6.2.1 squeeze) (1.3.1 upstream)
  • mto: This revision was merged to the branch mainline in revision 6.
  • Revision ID: james.westby@ubuntu.com-20070331103105-jzpp1rml6ud0ff75
Tags: upstream-0.11.4
ImportĀ upstreamĀ versionĀ 0.11.4

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
Hmm... need to escape other stuff, like paths? Doubt it, since it
 
2
isn't run through the command parser.
 
3
 
 
4
 
 
5
! Now everyone gets locally unchoked even if they don't send us a remote unchoke.
 
6
 
 
7
    // Some peers unchoke us even though we're not interested, so we
 
8
    // need to ensure it doesn't get added to the queue.
 
9
    if (!m_downInterested)
 
10
      return true;
 
11
 
 
12
Hmm... somehow we don't send uninterested to Qi/ci peers. And might
 
13
forget we're interested in certain peers, though being in the queue
 
14
indicates we are interested.
 
15
 
 
16
- Add a bencode pool that gets passed with calles to VariableMap.
 
17
 
 
18
 
 
19
l/Qn/cn remains so, even for a seeder.
 
20
 
 
21
 
 
22
Look at XMLRPC, should be relatively easy.
 
23
 
 
24
- Add the min time between unchokes.
 
25
 
 
26
- Check if we do enough checking during receive of unchoke, so as not
 
27
  to cause us to use slots when we're not really interested.
 
28
 
 
29
- Improve the choking weighing for downloads.
 
30
 
 
31
 
 
32
=== API CHANGES ===
 
33
 
 
34
Remove std::string from exceptions.
 
35
 
 
36
 
 
37
 
 
38
- what do you think about the DhtStatistics class?
 
39
 
 
40
+    torrent::dht_manager()->set_can_receive(false); 
 
41
Hmm...
 
42
 
 
43
tracker_base
 
44
+  const std::string&  status() const                        { return m_status; }
 
45
Don't use a string.
 
46
 
 
47
 
 
48
 
 
49
*** IDEA ***
 
50
 
 
51
Create tools for avoiding std::string use in favor of cstr. Like
 
52
autobuild cstr for arguments from std::string and const cstr's and
 
53
other knownlength stuff.
 
54
 
 
55
 
 
56
!!! Review DHT.
 
57
 
 
58
- Hmmm... check down interested before adding to the queue?
 
59
 
 
60
! If we have unchoke weight 0, then it might leave open slots during ticks.
 
61
 
 
62
 
 
63
 
 
64
- Set a bad timeout for select... add some kind of sanity check.
 
65
 
 
66
- the goto restart might cause write-done to be set after read_peer.
 
67
 
 
68
- Remove the interested/choked/etc from PCB and allow const access to PB.
 
69
 
 
70
Bad peer: very slow upload, when choked, sends HAVE messages at high rate.
 
71
 
 
72
 
 
73
=== TODO ===
 
74
 
 
75
- Solve the gausian curve error diff.
 
76
 
 
77
! Feature: Allow rtorrent to be temporary paused by touching an
 
78
  external file.
 
79
 
 
80
! When creating dirs/files lazily, only create the first
 
81
  file/dir. That should cover most potential errors.
 
82
 
 
83
===
 
84
 
 
85
 
 
86
- Swap interested between up and down.
 
87
 
 
88
 
 
89
- Do something about the max_memory_usage docs. Make it explicit that
 
90
  the user should tweak their ulimit instead of rtorrent's settings?
 
91
 
 
92
- Rename max_memory_usage to max_...?
 
93
 
 
94
- Add a check that tries to set/unset the soft ulimit if unlimited,
 
95
  just to check that the user doesn't fsck us?
 
96
 
 
97
  Consider also using this to detect max vmem.
 
98
 
 
99
 
 
100
! The sorting doesn't make it certain that we will go through peers in
 
101
  a proper (random) order. Use stable sort, weight based on time since
 
102
  unchoke, or something.
 
103
 
 
104
 
 
105
Replace known max length stringstreams printf.
 
106
 
 
107
== Constructive Ideas on new Download (/upload) Resource Allocator ==
 
108
 
 
109
- For each run, start with caching a single integer 'weight'. This
 
110
  weight will be divided into 'tiers' denoted by the MSB, while the
 
111
  weight is the lower 3 bytes.
 
112
 
 
113
  But how would this allow us to do optimistic unchoking? 
 
114
 
 
115
* Optimize the choke manager container usage. It needs to do fast
 
116
  removal of elements within the containers.
 
117
 
 
118
? The order decideds how large a chance it is that we select from that
 
119
  range? Or do we have a high-selectation order, med, low, and none?
 
120
 
 
121
  Also, change the order of the elements.
 
122
 
 
123
! When we do the randomize unchoke based on the table thing, consider
 
124
  various ways of f.ex only calling random once, and just doing a
 
125
  certain number of an order.
 
126
 
 
127
  That is, beh... randomize only getting the remainder.
 
128
 
 
129
== Rant ==
 
130
 
 
131
To implement scheduling libtorrent should support semi-automatic
 
132
adjustment of download slots. To get there, I need some experience
 
133
with an easier target; automatic adjustment of upload slots.
 
134
 
 
135
Though automatic upload slot adjusting might not be the best initial
 
136
target.
 
137
 
 
138
Perhaps I should consider implementing the download slot thing
 
139
first. Anyway, ideas:
 
140
 
 
141
- Add priority to connections, about what kind of rarity pieces, and
 
142
  what download they are on.
 
143
 
 
144
- Need to fix the pipe-lining code too.
 
145
 
 
146
- Might want to require download throttle to be set, though I assume
 
147
  it should be possible without it. Anyway, one of the first things I
 
148
  need to implement, is a way to detect if we're close to full
 
149
  bandwidth usage. This needs to take into account that upload and
 
150
  congestion varies.
 
151
 
 
152
- Obviously we need to put the 30 second cycles into use.
 
153
 
 
154
- Might use an vector of the last N ticks and how our performance was.
 
155
 
 
156
- Prefer peers which send rare pieces.
 
157
 
 
158
 
 
159
- Add default check disk space.
 
160
 
 
161
- Hmm... Handle relative paths properly in the symlink thingie.
 
162
 
 
163
Hmm... could one make something like APR's memory pools by replacing
 
164
new/delete? Hmm... Probably exists... but what about making some polls
 
165
for auto-release?
 
166
 
 
167
 
 
168
- Write a document of some kind on how to write smaller maps with
 
169
  const char*. Search the net too.
 
170
 
 
171
- Add variable(s) for creating new variables.
 
172
 
 
173
- preloading should perhaps check the piped requests.
 
174
 
 
175
- Move permission, etc, from File to the new OpenFile's value_type?
 
176
 
 
177
 
 
178
- Consider if this would benefit from allowing custom open-file
 
179
  functions to be defined per File. Not necessarily right now, but in
 
180
  the future. Anyway, add a way to make it configurable if we want to
 
181
  create the file or throw.
 
182
 
 
183
 
 
184
 
 
185
- Move file/dir creation into open_file or similar.
 
186
 
 
187
- Later re-add a function for creating all directories in a torrent at
 
188
  open.
 
189
 
 
190
 
 
191
 
 
192
- Allow flags when starting/opening that do extra error checking or
 
193
  ignore them.
 
194
 
 
195
- When it does the missing files thing, it actually creates the missing file... bad.
 
196
 
 
197
 
 
198
 
 
199
- Add helper functions for setting the various max open stuff.
 
200
 
 
201
- Check diskspace before opening a new/incomplete torrent. Should we
 
202
  add the start with flags thing now as a renamed function, then add a
 
203
  flag that checks for diskspace/existing files.
 
204
 
 
205
- Add DownloadList thing to the API. Make the old torrent api use this
 
206
  API. This should contain DownloadWrappers for now.
 
207
 
 
208
- See if we can embed data in the curl handle, like the curlget pointer.
 
209
 
 
210
- Fix HttpQueue?
 
211
 
 
212
- Check how many peers we received, and only reconnect if we got less
 
213
  than request size. Won't work.
 
214
 
 
215
- Fix erasing in HashQueue.
 
216
 
 
217
- Allow print_attr to skip lines.
 
218
 
 
219
- Move signals to their respective classes in the interface.
 
220
 
 
221
- Allow setting the source port. Also move stuff like bind address.
 
222
 
 
223
! Consider single file multi-file torrents. Add an option for this?
 
224
 
 
225
| Configurable tracker request behavior.
 
226
 
 
227
- New global torrent class.
 
228
 
 
229
- Fix the resume interface.
 
230
 
 
231
- Tracker dump does not show failed tracker connects.
 
232