Having played a bit with Erlang for real, in the sense of something non-trivial, even if not a complete product, I find I'm in the mood for more. But while it comes with some UI widgets, it's something more for headless use, and some client(s) in other languages doing the display.
To date, I can easily do Swing or WinForms as the UI toolkit -- but what about wxPython or FXRuby?
There are a number of bridges that I've found, but the closest to jinterface seem to be:
- py_interface for Python (about 2 years old)
- Un-named code drop on Google for Ruby (about 1 year old)
Neither of them have "just worked" for me in the way that the Java and C# versions have done against the simple mathserver example. Some of it might be down to my not figuring how the differences in the APIs are meant to work.
For py_interface, I had to comment out the line
[__import__(item) for item in __all__]from
init.py
to get imports to work at all; and even then, the simple
from otp import * def Handler(Result): print Result cNode = erl_node.ErlNode("clientnode@chloe.ravnaandtines.com", erl_opts.ErlNodeOpts(cookie="cookie")) print cNode print cNode.Publish() mBox = cNode.CreateMBox() print mBox mBox.SendRPC("servernode@chloe.ravnaandtines.com", "mathserver", "add", [1, 2], Handler) raw_input("wait")
just sits there; while the Ruby code
require 'erlang_node' s_node = Erlang::Node.new("servernode@chloe.ravnaandtines.com") c_node = Erlang::LocalNode.new("clientnode@chloe.ravnaandtines.com", "cookie") connection = Erlang::Connection.new(s_node, c_node) connection.sendRPC("mathserver", "add", [1,2]) sum = connection.receiveRPC() puts "Fail" unless sum == 3
throws a different exception every time I run it, from some place or other inside the connection initializer.
So they both need deeper inspection than this simple kicking of the tyres, maybe modifying for R12 nodes, maybe just reverse engineering the kinks out of the driver programs.
2 comments:
You could also try out Twotp:
https://launchpad.net/twotp
Yeah, I'd spotted that one, but not having the extra dependency was the immediate tie-breaker in favour of py_interface on the first try-out.
Of course, flat out not working is a bigger strike against it. :)
Post a Comment