CTL4j ===== This software is released under the terms of the GNU General Public License, see doc/COPYING for the exact terms of said license. Contact the author for the terms under which you can obtain a commercial license. Supported operating systems: * Linux (tested on Arch, Debian, Fedora, LFS, SuSE, Ubuntu) * Mac OS X (tested on 10.4.x and Xcode 2.3) * Windows XP (see EclipseAndTheCTL4j.txt for more information; other Windows NTs >=5.0 should work, too) Supported architectures: * x86 * x86_64 (You have to use the 32-bit version of the JDK) If you succesfully used the CTL4j on other platforms, please contact me. Project files for Eclipse and Xcode are shipped with the releases. .:. Installation .:. For a quick installation, follow the guide at https://shuya.ath.cx/~neocool/code/CTL/deps/INSTALL Binary packages are also available on the website (see below). Most example applications expect a file 'locs.txt' in the top level directory, which lists available resources. Copy doc/locs.txt and modify it for your own needs. .:. Overview .:. CodeGen/ Code generator for remote interfaces Components/ Ready-to-use Java component library using the CTL CTL/ Core of the communications template library Annotate/ Annotations for defining remote interfaces CCompat/ C/C++ compatibility classes Comm/ Communication handling Serialize/ Serialization of fundamental types Streams/ Custom IO streams Types/ CTL types Debug/ Remote component debugger (SEP2006) DotClass/ Generator for UML diagramms out of source code Example/ Example applications, see below Hitman/ Network protocol framework Impl/ Implementation classes which are used by the examples NCLib/ General purpose Java library ReflWrap/ Wrapper library around java.lang.reflect and BCEL Resourcery/ Simple Java implementation of a resource manager Test/ Testsuite and sample code Tools/ Tools and classes which did not fit anywhere else javaSys/ Default package for generated remote interfaces ctlcc.py Compiler for the CTL IDL (Python implementation) data/ Some data files and scripts python/ Allows writing CTL applications in Python with JPype sniff/ CTL protocol sniffer (written in Python, using Scapy) test/ Some C++ CIs for testing ctlcc.py Example applications: Client.java Simple client Client2.java Client which knows about rResult Client3.java An even simpler client Client4.java The C++ test client Client5.java Daemon-mode test client Client6.java WebService test client Client7.java Simple chain of components Client8.java Example of implicit locations Client9.java Another C++ test client (for AddCI) Client10.java Client for the SEP 2006 (chain) Client11.java Serialization of complex arrays Client12.java Serialization of AnyObjs Client13.java Demonstrates concurrency using multiple services Client14.java Parallel Pi calculation (OpenMP example #1 from c't) Crypto.java Test client for Components.Crypt GSL.java Test client for C++ GSL wrapper components Server.java Example server for testing WebServer.java Example server for testing WebServices .:. Dependencies .:. Apache Ant (http://ant.apache.org/) Sun JDK >= 5.0 (http://java.sun.com) Java Secure Channel (http://www.jcraft.com/jsch/) Jakarta Byte Code Engineering Library (http://jakarta.apache.org/bcel/) Java Getopt (http://www.urbanophile.com/arenn/hacking/download.html) For DNS service discovery: DNS-SD Java bindings (http://developer.apple.com/networking/bonjour/index.html) For importing/exporting remote interfaces: Python (http://www.python.org) pyparsing (http://pyparsing.sourceforge.net/) .:. Optional dependencies .:. For beautified CI code: Astyle (http://astyle.sourceforge.net/) For generating class diagramms: Graphviz >=1.9 (http://www.research.att.com/sw/tools/graphviz/) For running the testsuite: JUnit (http://www.junit.org) For writing Python applications: JPype (http://jpype.sourceforge.net) For using the CTL protocol sniffer Scapy (http://www.secdev.org/projects/scapy/files/scapy.py) .:. Notes .:. The Java Secure Channel library uses 'tunnelled clear text' passwords. You need to activate 'PasswordAuthentication' for this to work. Some Linux distributions, like Debian, do not have this enabled by default and you will see 'Auth fail' messages when using the CTL's SSHv2 code. Apache Ant seems to require that the environment variable JAVA_HOME is set to the path to the actual JDK or it fails with obscure error messages like '-sourcepath: No such file or directory'. ArchLinux packages for all dependencies are available here: http://www.icculus.org/~boris/projects/arch/ Prompting for the SSH password does not work when executing clients directly from the Ant buildfile. .:. Resources .:. Homepage: https://shuya.ath.cx/~neocool/code/CTL/ Mirror: http://www.icculus.org/~boris/projects/CTL/ -- Boris Buegling