HyperCast SOURCES Readme

June 2006

1. Overview of modules

The CVS sources of HyperCast include the following modules.
  1. hypercast. Contains HyperCast protocols and overlay socket.  This module is needed for all other modules.
  2. lotos. Contains the Lotos(Logical Topology Simulator) simulation package.
  3. RunControl. Contains applications for monitoring and controlling experiments of HyperCast networks.
  4. Pastry. Contains source code that allows to run the Pastry distributed hash table protocol in HyperCast.  The source code consists of FreePastry code from Rice University and wrapper code that provides the interfaces expected by HyperCast.

This file describes the hypercast module.

2. Open Source License

HyperCast is being made available under the terms version 2.1  of the GNU Lesser General Public License ("LGPL").
FreePastry files contained in the Pastry module are  disseminated with a BSD like  open source license. For details see http://freepastry.org/ for details.

3. Files in hypercast module

Other files

Makefile 

This is a GNU Makefile that contains instructions for compiling all or parts of the sources, generating Javadoc, \ files, building the target "/lib/hypercast.jar", and generating a ZIP archive with binaries and other files.

XML files:

hypercast.xml  

HyperCast configuration file.  This file needs to be customized  when running programs with overlay sockets, as described in HyperCast-BINARIES-Readme.html and the Chapters on the API (available from the Design Docs link at www.hypercast.org).  

Readme files:

/HyperCast-SOURCES-Readme.html   - this file
/HyperCast-
BINARIES-Readme.html  - Readme file for hypercast binaries

Certificate:

testcert.cer  - A self-signed digital certificate for security settings
.keystore     - Java Keystore file that contains private key for public key in testcert.cer

Note: These files are used for the security protocols of HyperCast.They contain a self-signed certificate and a private key for the certificate. 
These files need to be replaced by locally created files. Instructions are provided in the Chapter on Security (available from the Design Docs link at www.hypercast.org).  

Directories:

lib
Directory with external *.jar files needed for HyperCast.
After compiling HyperCast, the JARFILE hypercast.jar will be put in this directory.
 

lib/bcprov-jdk14-122.jar
Implementation of cryptographic algorithms (www.bouncycastle.org)

lib/xalan.jar
XSLT processor for XML documents (xml.apache.org/xalan-j/)

lib/crimson.jar
XML classes needed for JDK 1.5  and later (not needed for JDK 1.4)

/bin
Contains a few scripts
conf.sh, conf.bat - starts the HyperCast configuration editor
version.sh,  gui.bat  - displays the version of HyperCast

 /src 
Source files
/src/hypercast  - contains common source files for overlay socket
/src/hypercast/DT - DT protocol files

/src/hypercast/HC - HC protocol files
/src/hypercast/SPT - SPT protocol files
/src/hypercast/NONE - files for the NONE protocol
/src/MonitorandControl - files of the monitor protocol
/src/hypercast/adapters - contains code for adapters
/src/hypercast/nodeloaders - files for creating overlay nodes
/src/hypercast/events - files that define HyperCast events
/src/hypercast/util - XSD Schema file and misc. utility files

4. Version Identifiers

The following files contain the version identifiers. 

/src/hypercast/util/Version.java
/src/hypercast/util/hypercast.xsd
/src/hypercast/util/hypercast_private.xsd

Before creating a new version of HyperCast,  the version identifier in these files should be updated. Running the Version.class file displays the version identifier stored in Version. java.

Releases posted at SourceForge should follow the convention that a  release has a tag which identifies the developer who created  the release and the date of the creation of the release.
However, the version numbering of HyperCast is not strictly enforced. Each developer (including the developers that maintain the Sourceforge.net repository)  is responsible for maintaining a meaningful or consistent versioning scheme. 

5. Compiling HyperCast (without Makefile)

This version of HyperCast compiles with Java SDK version 1.4 or later. HyperCast also compiles with earlier versions of the Java SDK (Note that different external jar files may be needed.).  HyperCast has been used and compiled for SDK that compile for the Pocket PC platform. Refer to additional documentation from the www.hypercast.org website. Compiling HyperCast with an IDE is straightforward. With Eclipse, the sources can be downloaded from the CVS repository.

6. Compiling HyperCast (with Makefile)

The following instructions describe how to use the Makefile for compiling the code and  creating ZIP files with binaries.  This Makefile in the module is a GNU makefile. (On some systems, you need to run "gmake"). The makefile should run under Unix and under Windows/Cygwin.

All class files are placed in the /bin directory. All Javadoc files are placed in the /javadoc directory. 

Remarks:

  1.  The Makefile creates a VERSIONTAG which is used to create ZIP files. By default, the VERSIONTAG consists of a username and a date.  Edit the Makefile to change the VERSIONTAG.
  2. Many configuration defaults are extracted from the XSD schema file hypercast.xsd and placed in the source file  
        /src/hypercast/util/ConfigurationDefaults.java.
      
    The program that extracts the defaults is:
        /src/hypercast/util/ExtractConfigurationDefaults.java
    Thus, whenever the XSD file has been modified, one needs to execute the  ExtractConfigurationDefaults program and generate a new file ConfigurationDefaults.


Here are the available options for the Makefile:

make, make complete

Creates configuration defaults, compiles all sources, creates lib/hypercast.jar

make hypercast 

Like `make complete', but does not create JAR file

make HC (or DT, SPT, NONE, util, events, adapters, ... ) 

Only compiles sources in specified directory.

make Pastry

Tests if /src/hypercast/Pastry directory is available (note that Pastry files are in a separate module) and compiles source files.

make javadoc

 Creates Javadoc files of all methods in /javadoc_public  directory and creates a ZIP archive.

make javadocpublic  

Creates Javadoc files of public methods in /javadoc  directory and creates a ZIP archive.

make zipbinaries

Generates a ZIP file with HyperCast binaries and VERSIONTAG in the name of the ZIP file. The zip files contains:
lib/*.jar
bin/*.sh
bin/*.bat
examples/*.java
Readme-hypercast-BINARIES
hypercast.xml
testcert.cer
.keystore

make zipsources  

Generates a ZIP file with HyperCast sources and VERSIONTAG in the name of the ZIP file. The zip files contains:
lib/*.jar
bin/*.sh
bin/*.bat
src/*
hypercast.xml
testcert.cer
.keystore
examples/*.java
Readme-hypercast-BINARIES
Readme-hypercast-SOURCES
Makefile

make clean 

Removes binary files in /bin/hypercast/* and removes javadoc files

7. Running HyperCast

Refer to the instructions in  /HyperCast-BINARIES-Readme.html or the instructions on the website www.hypercast.org.