The mergespec could be of several types. For e.g. it could be http-based, i.e. the RCSPds may exchange information about the merge code in the form of a url that refers to a class file located in some http server. The class file(s) would implement the merge functionality. The mergespec could also be code-based, i.e. the RCSPds may request and receive the code itself. The mergespec could be java-based or tcl-based depending on the language used to write the merge code. It must be added that the current implementation supports java-http-based mergespec only. The following structure defines the mergespec. It can be found in Concast_v2/include/mspec.hh.

class mspec
{
private :
  int        m_len;
  //length of the mergespec

  int        m_lang;
  //language used: JAVA=1, TCL=2

  int        m_sbase;
  //mergespec source base:
  //CODE_BASED = 1
  //HTTP_BASED = 2
  //JAR_BASED  = 3

  //The following are used only for HTTP_BASED
  int        m_urllen;
  //length of url.
  char       *m_url;
  //URL of the mergespec code.

  //The following are used only for CODE_BASED
  int        m_nooffiles;
  //number of mergespec code files.
  vector<filedet *> m_files;
  //list of code files.

  //The following is used only for JAR_BASED
  int        m_nooffnames;
  //number of jar files.
  vector<fnamedet *> m_fnames;
  //jar file names.
}
 

Most of these details are hidden from the user implementing a mergespec. The user interface consists of several handy functions that can be used to write into or read from this class. See interface library for details. There are several other interface functions but these may be used by the RCSPd itself are irrelevant from the point of view of a mergespec writer.