home *** CD-ROM | disk | FTP | other *** search
/ Power GUI Programming with VisualAge C++ / powergui.iso / trialva / ibmcppw / include / somdserv.idl < prev    next >
Encoding:
Text File  |  1996-02-21  |  7.4 KB  |  194 lines

  1. //
  2. //   COMPONENT_NAME: somd
  3. //
  4. //   ORIGINS: 27
  5. //
  6. //
  7. //   10H9767, 10H9769  (C) COPYRIGHT International Business Machines Corp. 1992,1994
  8. //   All Rights Reserved
  9. //   Licensed Materials - Property of IBM
  10. //   US Government Users Restricted Rights - Use, duplication or
  11. //   disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
  12. //
  13.  
  14. //   Interface for DSOM Server Objects
  15. // 
  16. //   This class defines and implements the behavior of DSOM Server objects
  17. //   used with the DSOM Object Manager (SOMDObjectMgr).
  18. //
  19. //   Each DSOM server process is defined to have a (single instance of a) 
  20. //   SOMDServer object.  The SOMDServer object performs three kinds of 
  21. //   functions:
  22. //
  23. //       1) creation of SOM objects
  24. //       2) mapping of application-defined object ids into DSOM object
  25. //          "references" (SOMDObjects), and back again
  26. //       3) any application-specific server methods (e.g., for initialization,
  27. //          server control, etc.)
  28. //
  29. //   The SOMDServer class defines methods for the basic creation of SOM 
  30. //   objects in the server process (somdCreateObj), for deletion of SOM 
  31. //   objects (somdDeleteObj), and for finding the SOM  class object for a 
  32. //   specified class (somdGetClassObj).
  33. //   With somdGetClassObj, a client can get a proxy to a class object on the
  34. //   server, so that methods introduced in the metaclass (e.g., class-specific
  35. //   constructors, etc.) may be invoked directly.
  36. //
  37. //   This class also defines methods for the mappings to and from SOMDObjects
  38. //   and back again.  (Note: SOMDObject implements a CORBA "object reference" 
  39. //   in DSOM.  An object reference is something that is used to describe and 
  40. //   locate an actual target object.)  These methods are used by the SOM
  41. //   Object Adapter (SOMOA) when converting messages into method calls 
  42. //   and results into messages.
  43. //
  44. //   Application-specific server methods should be defined in subclasses
  45. //   of this SOMDServer subclass.
  46. //
  47. //   A particular SOMDServer subclass is specified in the ImplementationDef
  48. //   for each server process.  The SOMOA will instantiate one instance
  49. //   of the specified SOMDServer subclass during server process initialization
  50. //   (in SOMOA::impl_is_ready).
  51. //
  52.  
  53. #ifndef somdserver_idl
  54. #define somdserver_idl
  55.  
  56.  
  57. #include <somobj.idl>
  58. #include <somdtype.idl>
  59. #include <snglicls.idl>
  60.  
  61. interface SOMDObject;
  62.  
  63. interface SOMDServer : SOMObject
  64. {
  65.  
  66.   SOMDObject somdRefFromSOMObj(in SOMObject somobj);
  67.  
  68.   // This method returns a DSOM object reference for a SOM object
  69.   // instance in this server process.  SOMOA will call this method
  70.   // whenever it returns a result from a method call which includes
  71.   // a pointer to a SOMObject (versus a pointer to a SOMDObject).
  72.   // Ownership of the returned object reference is given to the
  73.   // caller EXCEPT when the somdObjReferencesCached method returns TRUE.
  74.   // When the input (somobj) is already an object reference, the default
  75.   // implementation simply returns somobj, rather than creating a new reference.
  76.   // (Subclasses might override this method to duplicate the input reference, however.)
  77.   // Hence, callers should note when the returned value is the same as
  78.   // the input (somobj) when determining whether or not to free the result.
  79.  
  80.   SOMObject  somdSOMObjFromRef(in SOMDObject objref);
  81.  
  82.   // This method maps a DSOM object reference into a SOM object.
  83.   // This can be done in whatever way is appropriate for the application.
  84.   // This method is called by SOMOA in order to translate any method call
  85.   // parameters which are object references (created from somdRefFromSOMObj
  86.   // above) into SOM objects.
  87.  
  88.   void somdDispatchMethod(in SOMObject somobj, out somToken retValue,
  89.                           in somId methodId, in va_list ap);
  90.  
  91.   // This method is called by SOMOA to dispatch a method on a SOM object.
  92.   // The intention is to give the Server object an opportunity to intercept
  93.   // method calls, if desired.  The parameters to this method are the same
  94.   // as the parameters passed to SOMObject::somDispatch.
  95.   //
  96.   // The default implementation invokes SOMObject::somDispatch on the
  97.   // specified target object, "somobj", with the supplied arguments.
  98.  
  99.   SOMObject somdCreateObj(in Identifier objclass, in string hints);
  100.  
  101.   // Creates an object of the specified class.  This method (if overridden)
  102.   // may optionally define creation "hints" which the client may specify in 
  103.   // this call. 
  104.   //
  105.   // Called indirectly by SOMDObjectMgr::somdNewObject.
  106.   //
  107.   // The default implementation calls somdGetClassObj to get the specified
  108.   // SOMClass object, and invokes "somNew".  The "hints" argument is ignored 
  109.   // in the default implementation.
  110.  
  111.   void somdDeleteObj(in SOMObject somobj);
  112.  
  113.   // Deletes a SOM object.  By default, simply calls somFree on the object.
  114.   // Can be overridden by the application.
  115.   //
  116.   // Called indirectly by SOMDObjectMgr::somdDestroyObject.
  117.  
  118.   SOMClass  somdGetClassObj(in Identifier objclass);
  119.  
  120.   // Creates/returns a class object for the specified class.
  121.   // (May result in the loading of a DLL for the class.)
  122.  
  123.   boolean   somdObjReferencesCached();
  124.  
  125.   // Whether the server retains ownership of the object references
  126.   // it creates via the somdRefFromSOMObj method.
  127.  
  128. #ifdef __SOMIDL__
  129.  
  130.   implementation
  131.   {
  132.     releaseorder: somdSOMObjFromRef, somdRefFromSOMObj,
  133.           somdCreateObj, somdDeleteObj, somdGetClassObj,
  134.                   somdDispatchMethod, somdObjReferencesCached;
  135.  
  136.     callstyle = idl;
  137.     metaclass = SOMMSingleInstance;
  138.     dllname = "somd.dll";
  139.     majorversion = 2;
  140.     minorversion = 1;
  141.  
  142.     passthru C_h_after  = ""
  143.       "#ifdef SOM_STRICT_IDL"
  144. #if defined (_WIN16)
  145.       "#define SOMD_ServerObject (*SOMD_ServerObjectResolve())"
  146.       "SOMEXTERN SOMDServer  * SOMLINK SOMD_ServerObjectResolve(void);"
  147. #elif defined (_WIN32)
  148.       "SOMEXTERN WIN32_DLLIMPORT SOMDServer  SOMDLINK SOMD_ServerObject;  /* global variable */"
  149. #else
  150.       "SOMEXTERN SOMDServer  SOMDLINK SOMD_ServerObject;  /* global variable */"
  151. #endif
  152.       "#else"
  153. #if defined (_WIN16)
  154.       "#define SOMD_ServerObject (*SOMD_ServerObjectResolve())"
  155.       "SOMEXTERN SOMDServer * * SOMLINK SOMD_ServerObjectResolve(void);"
  156. #elif defined (_WIN32)
  157.       "SOMEXTERN WIN32_DLLIMPORT SOMDServer * SOMDLINK SOMD_ServerObject;  /* global variable */"
  158. #else 
  159.       "SOMEXTERN SOMDServer * SOMDLINK SOMD_ServerObject;"
  160. #endif
  161.       "#endif /* SOM_STRICT_IDL */"
  162.       "";
  163.  
  164.     passthru C_xh_after = ""
  165.       "class SOMDServer;"
  166. #if defined (_WIN16)
  167.       "#define SOMD_ServerObject (*SOMD_ServerObjectResolve())"
  168.       "SOMEXTERN SOMDServer * * SOMLINK SOMD_ServerObjectResolve(void);"
  169. #elif defined (_WIN32)
  170.       "SOMEXTERN WIN32_DLLIMPORT SOMDServer * SOMDLINK SOMD_ServerObject;  /* global variable */"
  171. #else
  172.       "SOMEXTERN SOMDServer * SOMDLINK SOMD_ServerObject; /* global variable */"
  173. #endif
  174.       "";
  175.  
  176.     passthru C_hh_after = ""
  177.       "class SOMDServer;"
  178. #if defined (_WIN16)
  179.       "#define SOMD_ServerObject (*SOMD_ServerObjectResolve())"
  180.       "SOMEXTERN SOMDServer * * SOMLINK SOMD_ServerObjectResolve(void);"
  181. #elif defined (_WIN32)
  182.       "SOMEXTERN WIN32_DLLIMPORT SOMDServer * SOMDLINK SOMD_ServerObject;  /* global variable */"
  183. #else
  184.       "SOMEXTERN SOMDServer * SOMDLINK SOMD_ServerObject; /* global variable */"
  185. #endif
  186.       "";
  187.  
  188.   };
  189.  
  190. #endif /* __SOMIDL__ */
  191. };
  192.  
  193. #endif  /* somdserver_idl */
  194.