Cool, I have created a Wiki page for this, if anyone feels like  
starting it please feel free:

   http://wiki.freenetproject.org/FreenetFCPSpec2Point0

Ian.

On 18 Jan 2006, at 09:49, Matthew Toseland wrote:

> 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.
> _______________________________________________
> Tech mailing list
> Tech at freenetproject.org
> http://emu.freenetproject.org/cgi-bin/mailman/listinfo/tech


Reply via email to