A command-line client for interacting with "book" and "member" servers via XMLRPC calls. Servers were created by other students.

README 3.9KB

   /================================================================\
   |                   d8b              d8888      d8888   .d8888b.  |
   |                   Y8P             d8P888     d8P888  d88P  Y88b |
   |                                  d8P 888    d8P 888  888    888 |
   |  .d8888b .d8888b  888 .d8888b   d8P  888   d8P  888  888    888 |
   | d88P"    88K      888 88K      d88   888  d88   888  888    888 |
   | 888      "Y8888b. 888 "Y8888b. 8888888888 8888888888 888    888 |
   | Y88b.         X88 888      X88       888        888  Y88b  d88P |
   |  "Y8888P  88888P' 888  88888P'       888        888   "Y8888P"  |
   \================================================================/

Filename: README
Author: Matt Kava
Class: CSIS 440, Spring 2010
Asmt: Asmt FINAL :: XMLRPC Bookstore

 * Table of Contents
    * Purpose / Description
    * File List
    * Compiling/Making
    * How to execute each binary
    * Known Bugs / Caveats
    * Additional Information / Comments

 * Purpose / Description
    Note: This assignment uses xmlrpc-c and xmlrpc-c-config.
    
    - This package is an implementation of XMLRPC-C in C++.
    - Objects (MemberType and BookType) are marshalled/unmarshalled.
    - Book and member servers are called for storage of both objects.
    - This is recreation of a CSIS 152 assignment (bookstore) utilizing
      XMLRPC for cross-language interaction. Primary focused langauges:
      C++ and Python.

 * File List
    = README                - This file
    = Makefile              - Makefile that compiles each binary
    = BookType.h            - BookType header
    = BookType.cpp          - BookType implementation
    = MemberType.h          - MemberType header
    = MemberType.cpp        - MemberType implemention
    = menu.h                - Menu class header
    = menu.o                - Menu class object code (needed)
    = BookstoreCaller.h     - XMLRPC-C Bookstore Caller header
    = BookstoreCaller.cpp   - XMLRPC-C Bookstore Caller implementation
                  This handles calling the servers and their
                  return results.
    = xmlrpc_client.cpp     - XMLRPC-C Client for Bookstore
                  The heavy-lifter of the Bookstore that
                  utilizes each object and the Menu
    = xmlrpc_server.cpp     - Dumby XMLRPC-C server (non-working)
                  Originally created to test XMLRPC-C for client
                  Is not in a working state for this package,
                  but a barebones example of a possible
                  XMLRPC-C server.

 * Compiling/Making
    = Simply run 'make' in the same directory as the Makefile and both
      the client binary will be compiled with the default
      name, as shown below.
    
    = Default binary names using Makefile
        + xmlrpc_client.cpp -> client
    
    = The Makefile provides functionality to remove all binaries and object
      (.o) files.


 * How to execute each binary
    = Client
        + Takes 4 parameters.
            - Member Server Hostname 
                -- Hostname (IP or fully-qualified domain) that server is on
        - Member Server Port 
            -- Port the member server is running on.
        - Book Server Hostname 
            -- Hostname (IP or fully-qualified domain) that server is on
        - Book Server Port 
            -- Port the book server is running on.

 * Known Bugs / Caveats
    = Caveat - Book Server (Joe Anderson's) is a tad slow, so it appears to lock-up
      on query, but it is fine.
    = Bug - Connection issues are not caught by the client and this causes the client to
      halt ungracefully.

 * Additional Information / Comments
    = c++ and c++2 mean entirely different C++ XMLRPC-C wrappers when using
      xmlrpc-c-config utility. Can save days of annoyance.

    = XMLRPC-C is a pain in C/C++

    = http://xmlrpc-c.sourceforge.net/doc/

    = Makefile allows for creation of individual binaries by using the
      default binary name, as provided above.

    = Hardware/OS: All of this was coded on a dual-core processer box (x86),
      running Fedora 12 using the kernel version 2.6.32.10-90.fc12.i686.PAE
      from Mar 23, 2010.


    EOF.
 =============================================================================