We now have a very basic FCP implementation working in 0.7, from build 362 onwards.
$ telnet 127.0.0.1 8000 Trying 127.0.0.1... Connected to 127.0.0.1. Escape character is '^]'. ClientHello // client to node Name=hello1 ExpectedVersion=0.7.0 End NodeHello // node to client FCPVersion=0.7.0 Version=Fred,0.7,1.0,361 Node=Fred EndMessage ClientPut // client to node, with payload URI=KSK at blahblahblah.86149 DataLength=9 Identifier=6 End Hello !! InsertSuccessful // node to client Identifier=6 URI=freenet:KSK at blahblahblah.86149 EndMessage ClientGet // client to node Identifier=haha URI=freenet:KSK at blahblahblah.86149 End This is not set in stone, I welcome suggestions for improvement! Currently defined messages (client to node): ClientHello Name=<client name> ExpectedVersion=0.7.0 End ClientGet IgnoreDS=false // true = ignore the datastore DSOnly=false // true = only check the datastore, don't route (~= htl 0) URI=KSK at gpl.txt Identifier=Request Number One Verbosity=0 // no status, just tell us when it's done ReturnType=direct // return all at once over the FCP connection MaxSize=100 // maximum size of returned data (all numbers in hex) MaxTempSize=1000 // maximum size of intermediary data MaxRetries=100 // automatic retry supported as an option EndMessage ClientPut URI=CHK@ // could as easily be an insertable SSK URI Metadata.ContentType=text/html DataLength=19000 // hex for 100kB Identifier=Insert-1 // identifier, as always Verbosity=0 // just report when complete MaxRetries=999999 // lots of retries Data <data> Node to client: NodeHello FCPVersion=<protocol version, 0.7.0> Node=Fred Version=Fred,0.7,1.0,361 EndMessage PutSuccessful Identifier=<identifier> URI=<uri to fetch> EndMessage PutFailed Code=9 // error code Identifier=1 // identifier ExpectedURI=freenet:KSK at hello.toad // insert URI if it succeeded CodeDescription=Insert collided with different, pre-existing data at the same key // description of error ExtraDescription=Hmmm // more info on the error EndMessage GetFailed Code=<error code> CodeDescription=<description of error code> ExtraDescription=<extra description of this specific error> Fatal=<true|false; true means there isn't much point retrying as it's probably an error with the data> Identifier=<identifier passed in by client> EndMessage ProtocolError // indicates an FCP protocol error Code=1 // error code CodeDescription=ClientHello must be first message // description of error ExtraDescription=Duh // more info on the error Fatal=false // means the connection stays open EndMessage IdentifierCollision // client tried to reuse an Identifier Identifier=1 EndMessage -- Matthew J Toseland - toad at amphibian.dyndns.org Freenet Project Official Codemonkey - http://freenetproject.org/ ICTHUS - Nothing is impossible. Our Boss says so. -------------- next part -------------- A non-text attachment was scrubbed... Name: signature.asc Type: application/pgp-signature Size: 189 bytes Desc: Digital signature URL: <https://emu.freenetproject.org/pipermail/tech/attachments/20060118/0bee04cd/attachment.pgp>