
Doubling up an announcement email again to reduce the traffic on the list. First: RPCA is an RPC system. This first release is pretty lacking, simple client-server interactions work but there's no lame-duck handling, load balancing, security etc. RPCA uses codec-libevent's tagged data structures for serialisation. Tagged structures allow you to grow you RPCs incrementally, which is very important in large programs. Very simple tests should that 1000's of RPCs a second isn't a problem. There's also the start of a C library for the protocol, written on libevent and glib. To give a taste, here's what you need to write on the server side: addNumbers :: TestRPC.Addnumbersrequest -> ((Maybe TestRPC.Addnumbersreply) -> STM ()) -> IO () addNumbers (TestRPC.Addnumbersrequest { TestRPC.addnumbersrequest_a = a , TestRPC.addnumbersrequest_b = b }) cb = do atomically $ cb $ Just $ TestRPC.addnumbersreplyEmpty { TestRPC.addnumbersreply_c = a + b } and on the client side... rpc chan "add" (TestRPC.Addnumbersrequest 400 300) 0.1 That's a synchronous call with a timeout. You can, of course, call them asynchronously as well (and from multiple threads etc) It's highly experimental and can be found in Hackage and at http://darcs.imperialviolet.org/darcsweb.cgi?r=network-rpca;a=summary FEC is an erasure coding library, based on zfec by Zooko, based on code by Luigi Rizzo. The most widely known example of an erasure code is the RAID-5 algorithm which makes it so that in the event of the loss of any one hard drive, the stored data can be completely recovered. The algorithm in the fec package has a similar effect, but instead of recovering from the loss of only a single element, it can be parameterized to choose in advance the number of elements whose loss it can tolerate. Hackage: http://hackage.haskell.org/packages/archive/fec/0.1.1/doc/html/Codec-FEC.htm... It's new code, but the library that it's based on is well tested so should be sound. AGL -- Adam Langley agl@imperialviolet.org http://www.imperialviolet.org 650-283-9641
participants (1)
-
Adam Langley