
                          Apache Sandesha2/C Samples
                         ------------------------

  What Is It?
  -----------

  This package consists the samples of Apache Sandesha2/C.
  
  As a project of the Apache Software Foundation, the
  developers aim to collaboratively develop and maintain a robust,
  commercial-grade, standards-based Web services stack implementation with 
  freely available source code.

  The Latest Version
  ------------------

  You can get the latest svn checkout of Apache Sandesha2/C samples from

  https://svn.apache.org/repos/asf/webservices/sandesha/trunk/c/samples

  Installation
  ------------

  Please see the file called INSTALL.

  Licensing
  ---------

  Please see the file called LICENSE.

  Acknowledgements
  ----------------

  Apache Sandesha2/C samples rely heavily on the use of autoconf and libtool to provide
  a build environment. 
