Q1.1 Are there performance figures ?
We don't have formal performance evaluations yet. We run a set of 20 ivy
agents on a daily basis with no visible effect.
On a network point of view, :he architecture design
is so that the costs are quadratically related to the nomber of ivy agents, in
terms of network ( each agent is connected to every other agent ). The good
news is that messages are transferred on the net only to the agents wich have
subscribed to them. A good choice of regexp might make your life easier.
On a CPU point of view, the most visible impact is the regexp processing.
The agents wishing to send lots of messages will be CPU-intensive. Good regexp
( e.g.: starting with ^ ) and a good regexp library can improve this aspect.
Q1.2 How about audio, video and other streaming media ?
Ivy is not built to carry this kind of data. However, the control blocks
can be carried on Ivy (start, stop, etc).
Q1.3 There are problems with multi line strings, why ?
The Ivy protocol unfortunately relies on an end of line terminator (ascii
code 10, "\n" ) to parse the different messages. If you send strings
containing newlines, you should encode them beforehand, and decode them in the
end. This is considered poor style, and we think that this is one of the
evolutions of the protocol we need to implement soon.
Q1.4 How to transmit images over the ivy bus (see also Q1.2) ?
Ivy is not designed for transmission of large data like images, but well fitted for carrying references to these files, and using filesystem transfers. However you can transfer images data splitted in as many as needed small ASCII messages (base 64) if you precise the beginning and the end.
2.Languages
Q2.1 How do I use Ivy from Ada 95?
To be completed (meanwhile, ask Eric Blond at blond@cena.fr)
3.Troubleshooting
Q3.1 I can't compile Ivy-c on a solaris box
There are missing symbols at link time, add -lnsl -lsocket to
your command line.
Q3.2 My Ivy client doesn't connect to other clients
Be sure that the "hello" packet reaches the other hosts. Usually, network
equipment, such as routers, etc, are configured to block UDP broadcasts, or
even IP multicast. If the broadcast pass through the router in one direction
only, the order of arrival of the clients is important. The tools allowing you
to check this are platform dependent, but we can give you code snippets to
check this upon demand. Have a look at tcpdump, netcat, ethereal for multipurpose
network analysis tools.