[TAG v0.1 Lemmih **20060105182202] < [Added script to generate a nice diagram of "who imports what" via graphviz. Fixed two "no eol" warnings. Dmitry Astapov **20060105174905] [Fix shabang in Setup.lhs, add build.sh Samuel Bronson **20060105173545] [FIXME in Conjure.hs Lemmih **20060105163115] [FIXME in Conjure.Constants Lemmih **20060105163056] [Move the connection managers from Network.Peer to Network.ConnectionManager. Lemmih **20060105162950] [Wibbles to the BlockManager documentation. Lemmih **20060105145918] [Abandon download in case of an exception. Lemmih **20060105131435] [Documentation for the BlockManager. Lemmih **20060105131410] [Remove old code from the InterestTable. Lemmih **20060105124438] [Update Network.Peer to use BlockManager instead of PieceManager Lemmih **20060105124235] [A bit of refactoring in Network.Peer Lemmih **20060105123929] [Rename the PieceManager to BlockManager. Lemmih **20060105123857] [More cleanup. Lemmih **20060103210515] [Remove some debug info. Lemmih **20060103193424] [Refactorings and a few comments. Lemmih **20060103185931] [TODO changes. Lemmih **20060103172541] [Added 'sendPiece' to the FileSystem interface. Allows optimized senders. Lemmih **20060103172447] [Fix the unchoker and piece validator: bad pieces are now properly refetched. Lemmih **20060103172309] [Rewrote the unchokerThread in STM. Lemmih **20060103121511] [Include the SHA implementation in the cabal file. Lemmih **20060102155104] [We don't want all warnings. Lemmih **20060102154421] [Lexer for BEncode and a fast SHA implementation (in C). Lemmih **20060102154245] [We now expand files as we download. Lemmih **20060102134221] [Way too big patch. Lemmih **20060102115316 Cleanup in various modules and first working implementation of the peer handling code. We can now download files. Wheee. Most of the code is in serious need of some refactoring and documentation. ] [AppendMode won't do. Lemmih **20060102115028] [We no longer use dons' build system. Lemmih **20060102115006] [Limit BInts to Ints. Lemmih **20060102114901] [TODO updates Lemmih **20051229192803] [Updated the INSTALL file to reflect the new dependencies and build system. Lemmih **20051229192729] [Added myself to COPYING Lemmih **20051229192713] [Remove MissingH from the cabal file. Lemmih **20051229181921] [Gut the logger and the dependency on MissingH. Hurrah. Lemmih **20051229181854] [We need NoMonomorphismRestriction in the cabal file. Lemmih **20051229181838] [Setup.lhs Lemmih **20051229181518] [Removed shadows from the .cabal file. Lemmih **20051229181056] [Forgot the .cabal file. Lemmih **20051229180655] [A _LOT_ of cleanup. Lemmih **20051229173145 Removed FS/*, Data/*, Control/* and BEncode/BType.hs Clean and completed the protocol handlers. Conjure.Protocol.{THP|PWP} Wrote a parsec-like parser for BEncoded data. BEncode.BParser Rewrote the piece-picker to use DiffArrays. Conjure.InterestTable Hacked an extensible Torrent interface which provides convenient functions for reading and writing of pieces and blocks. Conjure.FileSystem.Interface and Conjure.FileSystem.InterfaceNaive Wrote a piecemanager which keeps track of who's downloading what. This is the only place where STM make sense. Conjure.FileSystem.PieceManager Wrote the server. Conjure.Network.Server Wrote the client (the part of the code that connects to the tracker). Conjure.Network.Client Started hacking on the peer handling. It's currently just an empty shell. Conjure.Network.Peer ] [Pretty Utils.hs jlouis@mongers.org**20051219230315] [Use Utils.() for FilePaths now we have it jlouis@mongers.org**20051219230107] [Provide INSTALL documentation and COPYING jlouis@mongers.org**20051219225705] [Update AUTHORS a bit jlouis@mongers.org**20051219224456] [Todays Version names ;) jlouis@mongers.org**20051219223943] [Add a couple of FIXME's to the FSThread jlouis@mongers.org**20051219223201] [Preliminary implementation of the StorePiece message in FSThread jlouis@mongers.org**20051219222933] [implement wStore. jlouis@mongers.org**20051219222148 I take the chance and assume a naive implementation actually works. According to the GHC Library docs it should, but I feel there might be dangerous file system semantics lurking and they can very well tickle us. Anyway, it gives us a first view on Piece Writing. I still need to polish ReadWriteMode Handles though, so beware! ] [Unbreak FS.Piece by reverting SamB's patch. Double reverse breaks the stuff yet again ;) jlouis@mongers.org**20051219192700] [Use the logger in FS.Storage rather than putStrLn jlouis@mongers.org**20051219190534] [Make it explicit that we request ReadOnly filehandles jlouis@mongers.org**20051219190337] [Let FSThread be shutdownable jlouis@mongers.org**20051219185618 Having a number of outstanding file descriptors is very bad to have open when you abort a file operation. Therefore, a proper Shutdown call will make it shut down and close all file descriptors by calling through to the handlepool. ] [Update TODO with some smaller stuff jlouis@mongers.org**20051219185003] [Shave Milestones to reality jlouis@mongers.org**20051219184752] [merging SamB's patch into the repo jlouis@mongers.org**20051219130341] [Doc tweaks in Conjure.WorkTable Samuel Bronson **20051217191657] [Take a run over InterestTable and do some minor cleanups jlouis@mongers.org**20051218232517] [Cleanup: Split Block code from FS.Piece to FS.Block jlouis@mongers.org**20051218225941] [Update Haddock strings in BEncode/* and provide Copyright information the right way designating the files are BSD licensed jlouis@mongers.org**20051218224818] [Get rid of Tests.hs. There is no need now we are so close to seeding. jlouis@mongers.org**20051218223329] [Implement 1/3 of the FSThread loop jlouis@mongers.org**20051218223130 Implement 1/3 of the FSThread loop. Now we can read pieces from a store which is there and hopefully seed torrents! ] [Provide a new STYLE update jlouis@mongers.org**20051218221447] [Katana hit redundant reference to the RFC paper in READTHEM jlouis@mongers.org**20051218221157] [Add BlockManager.hs, code for managing FS blocks jlouis@mongers.org**20051218220828] [Update the TODO and AUTHORS lists jlouis@mongers.org**20051218204615] [Lift some constants to parameters in FSThread jlouis@mongers.org**20051218203300 I believe we sooner or later need to be able to specify the location of the ``file database'' on disk which we use for reading and writing the torrents actual data. So, I lifted to being a parameter, such that it is currently a constant in runThread. I did the same with the HandlePool size, as it should also be configurable. Many Linux systems are really free when it comes to the number of simultaneously open file handles. A lot of them can handles thousands, whereas an OpenBSD defaults to 128. The ability to set this value will be much needed and loved by the minorities. Lifted to runThread as well. ] [Minor comment cleanups. jlouis@mongers.org**20051218203024] [Implement pieceSizeST. jlouis@mongers.org**20051218194550 This is almost what Dmitry Astapov wanted. It has type pieceSizeST :: Store -> Piece.PieceNum -> Int and yield the byte-size of the piece requested. There is a noteable advantage of binding this to a particular store and that is we get to be able to run multiple downloads in the same conjure instance over time, since we can make it explicit which store we are requesting piece sizes from. It also gives a nice place to store this information, namely in the FS-thread. The only thing I could be afraid of is if the FSThread will be a point of contention, but I have some ideas for splitting it up into further threads if this happens. ] [Pieces are numbered from 0 not 1. Fix this in Tests.hs jlouis@mongers.org**20051218193140 My TODO list had an item by which Dmitry Astapov said pieces are numbered from 0 and not 1. This was obviously wrong in my test-code, so now it has been fixed. ] [Fix list ordering problems in the FS code jlouis@mongers.org**20051218192803 I had a hunch when I suddenly saw what was wrong: My tail-calling functions all reverse their input lists by cons'ing the value upon a ``done'' list. Therefore, many of the FS-code functions failed miserably. This patch implements list reversals at the correct spots such that the file reading becomes correct. ] [Go to ReadMode for now jlouis@mongers.org**20051218164820 For some reason, Haskell defaults to locking a file opened in ReadWriteMode, by using either a flock, lockf or fcntl call. It poses to be difficult to do anything about, short of using a more direct access to the files. For now, we only want to seed, so opening the file in ReadMode is adequate and solves the problems I had trying to read the file more than once in my test scripts. ] [Small cosmetic typo changes. jlouis@mongers.org**20051218164628] [From taral@taral.net: Pretty urlEncode for MiniHTTP jlouis@mongers.org**20051216234236 I apply a slighty modified version, which IMO is more readable than the original. Kudos to Taral for providing the initial patch! ] [Fix FS.Piece.breakPieceHashes, now FSThread sorta works Samuel Bronson **20051216213301] [Hash out broken FSThread (hashes are wrong somehow) Samuel Bronson **20051216200140] [Just for the fun of it connect to the same peer twice, emulating multi-peer work Dmitry Astapov **20051216011851] [Report status to master on every change of connection status Dmitry Astapov **20051216011709] [Replaced IST with NPP, fixing interface of IST so that NPP becomes almost-drop-in replacement for IST Dmitry Astapov **20051216010652 If you want IST back, import it (and not NPP) qualified as Coordinator in PeerThread, fix a couple of errors (including bringing enqueuePiece back) and voila! PS I was surprised to see how little work was required to replace coordinating module for PeerThread. Perhaps this idea could be brough further and we could make Coordinator modules fully replaceable? Right now PeerThread know internals of the Coordinator module for it's enqueue function. If we could work around this, Coordinator <-> PeerThread interaction could become "proper" interface ] ["Small is beautiful" - naive piece/block manager that Does The Job. Intended to be drop-in replacement for IST Dmitry Astapov **20051216005856 Written because ADEpt became so scared of IST that he could not stand it any more :) ] [Make Torrent instance of Show that does not garble screen with undecoded bencode Dmitry Astapov **20051216005506] [Beefing up WorkTable Dmitry Astapov **20051215232804] [Comment out another part of IST Dmitry Astapov **20051215230732] [Update old names Samuel Bronson **20051215221941] [TAG 2005.12.15-WASTING Samuel Bronson **20051215221235] [Add to READTHEM Samuel Bronson **20051213002202] > { }