-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

On Tuesday 16 September 2003 03:21 pm, Dan Merillat wrote:
> On Tue, 16 Sep 2003, Toad wrote:
[snip]
> > Well, there are several C FCP libraries IIRC...
>
> "several" isn't really a resounding answer.  I know the fcptools library
> was doing decently at one point, but what's needed is a Really Good API
> so FCP can be very low-level and stateless.  I'd also prefer things like
> genSSK and CalcCHK be done outside the node.  Why read in a 1mb chunk
> and feed it to fred when it's faster to do it natively on all platforms?
>
> I'm going to grab the fcptools/ezFCPlib and see how far along it is, and
> see if it's possible to move some of that processing into it.

I didn't want to make any sort of announcement, but ezFCPlib does work in 
some ways as you describe (only for inserts at the moment).

I've tried to keep as much of the original interface designed for fcptools, 
while rewriting the internals so that it may serve as a capable library, 
for both Windows and *nix platforms.

Currently in CVS is a functioning fcpput, which handles FEC splitfiles 
transparently (no support for non-redundant splitfiles and the moment).  
I've also added fcpx, which can serve as a client developer test program of 
sorts.  fcpput is a good example to follow on how the API can be used.

fcpputsite is still being built, and Get() functionality hasn't been started 
really.  The good news is all the underlying _fcp*() modules/source files 
are solid and have been tested, and can/should be used without problems.

I'm also happy to say that the tools appear to work as well on Windows as 
they do on Unix.  You can see why by looking in ezFCPlib/_fcpCompat.c, 
where I tried factoring out only the *absolute* logic that had to be called 
differently between Windows and *nix (read() and recv() are perfect 
examples).  I've also removed the multi-threading logic from ezFCPlib, and 
plan on building another layer on top of FCPlib that will function as a 
threaded scheduler.  That module will handle threads in a platform friendly 
manner (btw, all global vars are effectively "read-only" after being set in 
fcpStartup).

I agree that CHK calculation and even FEC encoding should be done outside of 
the node.  Currently I cheated and used gj's FEC extensions to FCP, but I 
also designed the implementation to be flexible enough to incorporate local 
FEC logic with a minimal ripple effect (in C this isn't easy).

The API isn't complete, but the documentation I have so far is at:
- -> http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/freenet/Contrib/fcptools/
ezFCPlib/README?rev=1.5&content-type=text/vnd.viewcvs-markup

I could use help in a couple of areas.  Ideally, if someone agreed to focus 
on building fcpputsite on top of (the completed) FCPlib, that would leave 
me free to implement the Get() routines, completing the FCPlib low-level C 
api.

All this was from the top of my head.. I'll gladly answer questions & 
criticisms.

- -- 
Jay Oliveri                                  "In the land of the blind,
GnuPG ID: 0x5AA5DD54                          the one-eyed man is king."
FCPTools Maintainer
www.sf.net/users/joliveri
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.3 (GNU/Linux)

iD8DBQE/aIx+5JyaE1ql3VQRAr8AAJ4qKNpU7gs8CWykP7/qlJU2cUay8QCfV6y6
hDJ3UH55Fr4YLWj8hGP+KO8=
=9YRT
-----END PGP SIGNATURE-----

_______________________________________________
Devl mailing list
[EMAIL PROTECTED]
http://dodo.freenetproject.org/cgi-bin/mailman/listinfo/devl

Reply via email to