SourceFiles.org - Use the Source, Luke
Home | Register | News | Forums | Guide | MyLinks | Bookmark

Sponsored Links

Latest News
  General News
  Reviews
  Press Releases
  Software
  Hardware
  Security
  Tutorials
  Off Topic


Back to files

This is the README file for MPSIDL; the project homepage is

http://mpsidl.sourceforge.net/

Other interesting URLs are

        http://sourceforge.net/projects/mpsidl/
        http://homepages.kcbbs.gen.nz/~tonyg/mps/ (old, old, old pages!)

Contents:
  • Building MPSIDL
  • Running MPSIDL
  • Technical Details
    • "URL" format
    • Documentation - doxygen
  • Portability
  • Contacts

BUILDING MPSIDL

Once you have your hands on a tarball or fresh CVS checkout **and** the "ref.h" file (required for reference counting GC) somewhere in your "include" path (eg. /usr/local/include, or the directory where "configure" is), type:

        $ ./autocvs             (only required for CVS checkouts)
        $ ./configure

At the "configure" stage, if "javac" is in your path, the Java code included will be built. Note that Java 1.2 or better is required to build some of the software in the "tools" directory (because of the use of Swing components), but Java 1.1 should be sufficient to build "mps.jar" (which is sufficient to get MPS running with Java). You can disable Java compilation explicitly by supplying "--disable-java" to "configure" (or by changing your PATH to exclude "javac").

If you want to build with SIMPL (http://www.holoweb.net/~simpl/) support, make sure that $SIMPL_HOME is set as per the SIMPL installation instructions BEFORE you run configure!

The next step is to compile the libraries and tools:

$ make

Finally, you can optionally say

$ make install

(To build SIMPL support,

        $ cd libmps/cpp/simpl
        $ make

and copy the libmpstransport_simpl.a file into the installation lib directory by hand before proceeding with building the sample programs.)

To build the sample programs (all very boring, I assure you):

        $ cd test
        $ make

RUNNING MPSIDL

You will need a running naming server to do most things. The included naming server is called "mps_naming", and lives in libmps/cpp/nameserver.

The naming server runs on port 9091 by default. To run on a different port, or bind to a different IP address:

$ mps_naming <portnumber> <hostname>

Once a naming server is running, you need to point your clients and servers at it. Clients and servers should default to checking localhost on port 9091 for the naming server - this is up to each individual program, however, and is not enforced by the library, except within for the C++ function MPS::getNamingService() if no argument is provided.

Programs should support the environment variable MPS_NAMESERVER - if set, this variable should contain an mps-style "URL" pointing at the naming server to use. MPS::getNamingService() looks at MPS_NAMESERVER before assuming "mps:inet:localhost:9091:1", when no argument is provided. An example code fragment follows:

char *nsname = getenv("MPS_NAMESERVER"); if (nsname == NULL)
nsname = "mps:inet:localhost:9091:1"; ref<MPS::NamingService> ns = MPS::NamingService::_attach(nsname);

or simply:

ref<MPS::NamingService> ns = MPS::getNamingService();

Note the use of the default, "mps:inet:localhost:9091:1". See the section on "URL" format below.


TECHNICAL DETAILS

"URL" format

The "URL"s that MPSIDL uses are in the form:

mps:<transport>:<param>:<param>:...

Where the second colon and any following colon-separated parameters may be optional or required depending on the transport specified. For instance, the "inet" transport requires three <param>s - the IP address of the server, the port number, and the "OID" (Object Identifier). Other transports may use entirely different addressing schemes, so long as they match the general form given above (and so long as they fit well with the class MPS::Address).

As an example,

mps:inet:localhost:9091:1

refers to the object with OID 1, listening for connections on a TCP/IP socket available on the local interface at port 9091 (with all the usual semantics for connecting to TCP/IP addresses taken as read).

Documentation - doxygen

This project uses "doxygen", a fine product written by Dimitri van Heesch, for API documentation. The doxygen homepage is:

http://www.stack.nl/~dimitri/doxygen/index.html

You can download doxygen (it's GPL'ed) from that URL.


PORTABILITY

MPSIDL has run successfully on at least:

  • RedHat Linux 6.1, 6.2 and 7.0 using GCC 2.95.2
  • Sparc Solaris 2.6, 7 and 8 using GCC 2.95.2
  • HPUX 10.20 on HPPA, using GCC 2.95.2
  • JDK 1.1.7B for Linux, Solaris or HPUX
  • IBM JDK 1.3 for Linux

Older GCC compilers than 2.95.2 are unlikely to work, due to C++ template bugs.

A selection of clients and servers on each platform has been run against clients and servers on the other platforms to make sure that they really can talk to each other.

So far, so good. If anyone notices a problem that causes one system to be incompatible with the others, I'd like to know as soon as possible. Ideally, we maintain perfect cross-platform interoperability...


CONTACTS

You can contact me, Tony Garnock-Jones, the project maintainer, at tonyg@kcbbs.gen.nz (my personal email address, so be careful with it!)

Project URLs include:

        http://mpsidl.sourceforge.net/
        http://sourceforge.net/projects/mpsidl/
        http://homepages.kcbbs.gen.nz/~tonyg/mps/ (old, old, old pages!)

I usually hang out in irc.openprojects.net in #jrandom. Alternatively, my ICQ number is 25667961. Please make sure you mention "mpsidl" in the message, or I might mistake your short-message for spam of some kind :-)


Sponsored Links

Discussion Groups
  Beginners
  Distributions
  Networking / Security
  Software
  PDAs

About | FAQ | Privacy | Awards | Contact
Comments to the webmaster are welcome.
Copyright 2006 Sourcefiles.org All rights reserved.