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>

Reply via email to