summaryrefslogtreecommitdiff
path: root/doc/ivy-c-1.html
diff options
context:
space:
mode:
authorjacomi1999-04-12 17:18:34 +0000
committerjacomi1999-04-12 17:18:34 +0000
commitf6a815b6504e9c954b9d0af57a3de6ccb75b5321 (patch)
tree0e317b7410bc41fb42448e3452057e33aaf3c7d9 /doc/ivy-c-1.html
parent9d094feea77b5b43b22620050dfe37caf56d9dff (diff)
downloadivy-c-f6a815b6504e9c954b9d0af57a3de6ccb75b5321.zip
ivy-c-f6a815b6504e9c954b9d0af57a3de6ccb75b5321.tar.gz
ivy-c-f6a815b6504e9c954b9d0af57a3de6ccb75b5321.tar.bz2
ivy-c-f6a815b6504e9c954b9d0af57a3de6ccb75b5321.tar.xz
doc updated
Diffstat (limited to 'doc/ivy-c-1.html')
-rw-r--r--doc/ivy-c-1.html114
1 files changed, 114 insertions, 0 deletions
diff --git a/doc/ivy-c-1.html b/doc/ivy-c-1.html
new file mode 100644
index 0000000..69e9dee
--- /dev/null
+++ b/doc/ivy-c-1.html
@@ -0,0 +1,114 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<HTML>
+<HEAD>
+ <META NAME="GENERATOR" CONTENT="SGML-Tools 1.0.7">
+ <TITLE>The Ivy C library guide: General information</TITLE>
+ <LINK HREF="ivy-c-2.html" REL=next>
+
+ <LINK HREF="ivy-c.html#toc1" REL=contents>
+</HEAD>
+<BODY>
+<A HREF="ivy-c-2.html">Next</A>
+Previous
+<A HREF="ivy-c.html#toc1">Contents</A>
+<HR>
+<H2><A NAME="s1">1. General information</A></H2>
+
+<H2><A NAME="ss1.1">1.1 What is Ivy?</A>
+</H2>
+
+<P>
+<P>Ivy is a software bus designed at CENA (France). A software bus is a system
+that allows software applications to exchange information with the illusion of
+broadcasting that information, selection being performed by the receiving
+applications. Using a software bus is very similar to dealing with events in a
+graphical toolkit: on one side, messages are emitted without caring about who
+will handle them, and on the other side, one decide to handle the messages that
+have a certain type or follow a certain pattern. Software buses are mainly aimed
+at facilitating the rapid development of new agents, and at managing a dynamic
+collection of agents on the bus: agents show up, emit messages and receive some,
+then leave the bus without blocking the others.
+<P>
+<H3>Architecture and principles</H3>
+
+<P>As opposed to other software buses, Ivy does not depend on a centralised
+server. Actually, Ivy is mostly a communication convention between processes,
+implemented through a collection of libraries in several languages.
+<P>
+<P>
+<P>From the programmer's point of view, Ivy is an information broadcasting
+channel. The main functions are:
+<P>
+<UL>
+<LI> connecting to a bus.<EM> Example: IvyInit (b, 2011)</EM></LI>
+<LI> sending a message.<EM> Example: IvySend (b, "HELLO %s", world)</EM></LI>
+<LI> bind a message pattern to a callback function.<EM> Example: IvyBind (b, "HELLO (.*)", cb)</EM></LI>
+<LI> the main loop.<EM> Example : IvyLoop ()</EM></LI>
+</UL>
+<P>Ivy's
+decentralised connection scheme probably incurs limitations in terms of how many
+applications can be connected to an Ivy bus, but this simplifies management a
+lot. Basically, an Ivy bus is just a set of applications that decide to
+communicate together. The only conventions between these applications are:
+<OL>
+<LI> the use of the Ivy protocol (for obvious reasons)</LI>
+<LI> a bus address, made of a broadcast port number (a bit like a citizen band
+channel) and a set of networks addresses</LI>
+</OL>
+
+When an application wants to connect to a bus, it sends a broadcast message on the
+networks specified in the bus address, so that all applications present on those
+networks and listening on the specified port number connect to it. It then
+becomes part of the bus, and listens like the other ones.
+<P>The messages are exchanged in text format, and bindings are based on regular
+expressions with captures. If an application subscribes to
+<CODE>HELLO (.*)</CODE> an if another application emits the message <CODE>HELLO WORLD</CODE>, a
+callback will be called in the first application with <CODE>WORLD</CODE> as an argument.
+<P>
+<P>
+<H3>Using Ivy</H3>
+
+<P>You can use Ivy through applications that have been provided to you. This is the
+case for <CODE>ivyprobe</CODE>, an Ivy agent that allows you to examine the messages
+exchanged on a given bus and to send messages on that bus. You can refer to the
+web site <CODE>http:</CODE> for a list of available agents. However, what you will
+usually want to do is to develop your own applications. In order to do that you
+can use an Ivy connection kit, that is a library that implements Ivy.
+<P>
+<P>
+<P>Libraries that implement Ivy are available in the following environments:
+<UL>
+<LI> in C on Unix and Windows platforms, with it own communication library</LI>
+<LI> in C++ on Windows platforms</LI>
+<LI> in C++ on Unix platforms, integrated with the Uch communication library</LI>
+<LI> in C++ on Unix platforms, integrated with OpenInventor</LI>
+<LI> in C++ on Macintosh</LI>
+<LI> in Perl and in Perl/Tk</LI>
+<LI> integrated with Object Caml on Unix platforms</LI>
+<LI> in Scheme on Unix platforms</LI>
+<LI> in Java</LI>
+</UL>
+<P>
+<P>Connecting your application to an Ivy bus just consists in choosing the
+appropriate library, add the appropriate message emission and reception calls to
+your code, use the main loop provided in the library or make the necessary
+integrations, and get your code running!
+<P>
+<H2><A NAME="ss1.2">1.2 The Ivy C library</A>
+</H2>
+
+<P>The Ivy C library (aka Ivy-C or ivy-c) is a C library that allows you to connect
+applications to an Ivy bus. You can use it to write applications in C or any
+other language that supports C extensions. This guide documents how you can do
+that.
+<P>The Ivy C library is known to compile and work in WindowsNT and Linux
+environments. It should be easy to use on most Posix environments.
+<P>The Ivy C library was originally developed by François-Régis Colin at CENA. It
+is maintained by the CENA-Toulouse team.
+<P>
+<HR>
+<A HREF="ivy-c-2.html">Next</A>
+Previous
+<A HREF="ivy-c.html#toc1">Contents</A>
+</BODY>
+</HTML>