home *** CD-ROM | disk | FTP | other *** search
/ Power GUI Programming with VisualAge C++ / powergui.iso / trialva / ibmcppw / include / somoa.idl < prev    next >
Encoding:
Text File  |  1996-02-21  |  6.4 KB  |  189 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. //   IDL interface spec for SOM Object Adapter (derived from BOA)
  15. //
  16. //   This is DSOM's primary Object Adapter.  It implements the BOA interface.
  17.  
  18.  
  19. #ifndef somoa_idl
  20. #define somoa_idl
  21.  
  22. #include <somdtype.idl>
  23. #include <boa.idl>
  24.  
  25.  
  26. interface SOMOA : BOA
  27. {
  28.  
  29.   ORBStatus execute_next_request(in Flags waitFlag);
  30.  
  31.   // This method receives a single request message, executes it, and
  32.   // sends the result to the calling client.  If waitFlag is SOMD_WAIT,
  33.   // the call will block if there is no message pending.  If waitFlag
  34.   // is SOMD_NO_WAIT, the call will immediately return "SOMDERROR_NoMessages"
  35.   // if there is no message pending.
  36.   //
  37.   // ("SOMDERROR_NoMessage" is only returned as a status code, not as an
  38.   // exception structure.)
  39.  
  40.   ORBStatus execute_request_loop(in Flags waitFlag);
  41.  
  42.   // Repeatedly calls execute_next_request.  If waitFlag is SOMD_WAIT,
  43.   // the call will continue to wait for messages when there is no message
  44.   // pending.  If waitFlag is SOMD_NO_WAIT, the call will process any
  45.   // messages that are present, and return "SOMD_NoMessages" as soon as there 
  46.   // are no more messages pending.
  47.   //
  48.   // ("SOMDERROR_NoMessage" is only returned as a status code, not as an
  49.   // exception structure.)
  50.  
  51.   void change_id(in SOMDObject objref, in ReferenceData id);
  52.  
  53.   // This method changes the ReferenceData associated with the object
  54.   // identified by "objref".  The ReferenceData previously stored in the
  55.   // SOMOA's reference data table is replaced with the value of "id".
  56.   // The new id value cannot be larger than the maximum size of the
  57.   // original ReferenceData (usually specified as 1024 bytes).
  58.  
  59.   SOMDObject create_constant(in ReferenceData id, in InterfaceDef intf,
  60.                              in ImplementationDef impl);
  61.  
  62.   // This method is a variant of the "create" method.  Like "create", it
  63.   // creates an object reference for an object (with the specified interface)
  64.   // and associates the supplied ReferenceData with the object reference.
  65.   // The ReferenceData can later be retrieved using the "get_id" method.
  66.   // Unlike "create", this method creates a "contant" reference whose id 
  67.   // value cannot be changed.  (See "change_id" below.)  This is because
  68.   // the id is part of the object reference state, versus stored in the 
  69.   // SOMOA reference data table.
  70.   //
  71.   // This method would be used whenever the application prefers not to
  72.   // maintain an object's ReferenceData in the SOMOA reference data table. 
  73.  
  74.   SOMDObject create_SOM_ref(in SOMObject somobj, in ImplementationDef impl);
  75.  
  76.   // This methods creates a simple DSOM reference (SOMDObject) for a local 
  77.   // SOM object.  The reference is "special" in that there is no explicit
  78.   // ReferenceData associated with the object.  Also, the reference is
  79.   // only valid while the SOM object exists.
  80.   //
  81.   // The SOMObject can be retrieved via the get_SOM_object method.
  82.   // The SOMDObject::is_SOM_ref method can be used to tell if the
  83.   // reference was created using create_SOM_ref or not.
  84.  
  85.   SOMObject get_SOM_object(in SOMDObject somref);
  86.  
  87.   // This method returns the SOM object associated with a SOMDObject
  88.   // reference created by the create_SOM_ref method.
  89.  
  90.   void activate_impl_failed(in ImplementationDef impl, in ORBStatus rc);
  91.  
  92.   // Indicates there was an error when activating this implementation.
  93.   // Called by a server program.  ORBStatus code is returned to the client
  94.   // in an exception.
  95.  
  96.   void interrupt_server();
  97.  
  98.   // Wakes up a server waiting for a request message.
  99.  
  100. #ifdef __SOMIDL__
  101.  
  102.   implementation
  103.   {
  104.     releaseorder: execute_next_request, execute_request_loop,
  105.           create_constant, change_id,
  106.                   create_SOM_ref, get_SOM_object,
  107.           activate_impl_failed, interrupt_server;
  108.  
  109.     callstyle = idl;
  110.     dllname = "somd.dll";
  111.     majorversion = 2;
  112.     minorversion = 1;
  113.  
  114.     somInit: override;
  115.     somUninit: override;
  116.     create: override;
  117.     dispose: override;
  118.     change_implementation: override;
  119.     get_id: override;
  120.     get_principal: override;
  121.     set_exception: override;
  122.     impl_is_ready: override;
  123.     deactivate_impl: override;
  124.     obj_is_ready: override;
  125.     deactivate_obj: override;
  126.  
  127.     #define COMMON_H_PASSTHRU \
  128.       "" \
  129.       "#define SOMD_WAIT     1" \
  130.       "#define SOMD_NO_WAIT  0" \
  131.       "#define SOMD_IMPL_NOT_INITIALIZED          0" \
  132.       "#define SOMD_IMPL_NOT_ACTIVE               1" \
  133.       "#define SOMD_IMPL_ACTIVE                   2" \
  134.       ""
  135.  
  136.     passthru C_h_after  = COMMON_H_PASSTHRU
  137.       "#ifdef SOM_STRICT_IDL"
  138. #if defined (_WIN16)
  139.       "#define SOMD_SOMOAObject (*SOMD_SOMOAObjectResolve())"
  140.       "SOMEXTERN SOMOA * SOMLINK SOMD_SOMOAObjectResolve(void);"
  141. #elif defined (_WIN32)
  142.       "SOMEXTERN WIN32_DLLIMPORT SOMOA SOMDLINK SOMD_SOMOAObject;"
  143. #else
  144.       "SOMEXTERN SOMOA   SOMDLINK SOMD_SOMOAObject;"
  145. #endif
  146.       "#else"
  147. #if defined (_WIN16)
  148.       "#define SOMD_SOMOAObject (*SOMD_SOMOAObjectResolve())"
  149.       "SOMEXTERN SOMOA ** SOMLINK SOMD_SOMOAObjectResolve(void);"
  150. #elif defined (_WIN32)
  151.       "SOMEXTERN WIN32_DLLIMPORT SOMOA * SOMDLINK SOMD_SOMOAObject;"
  152. #else
  153.       "SOMEXTERN SOMOA *  SOMDLINK SOMD_SOMOAObject;" 
  154. #endif
  155.       "#endif"
  156.       "";
  157.  
  158.     passthru C_xh_after = COMMON_H_PASSTHRU
  159.       "class SOMOA;"
  160. #if defined (_WIN16)
  161.       "#define SOMD_SOMOAObject (*SOMD_SOMOAObjectResolve())"
  162.       "SOMEXTERN SOMOA ** SOMLINK SOMD_SOMOAObjectResolve(void);"
  163. #elif defined (_WIN32)
  164.       "SOMEXTERN WIN32_DLLIMPORT SOMOA * SOMDLINK SOMD_SOMOAObject;"
  165. #else
  166.       "SOMEXTERN SOMOA * SOMDLINK SOMD_SOMOAObject;"
  167. #endif
  168.       "";
  169.  
  170.     passthru C_hh_after = COMMON_H_PASSTHRU
  171.       "class SOMOA;"
  172. #if defined (_WIN16)
  173.       "#define SOMD_SOMOAObject (*SOMD_SOMOAObjectResolve())"
  174.       "SOMEXTERN SOMOA ** SOMLINK SOMD_SOMOAObjectResolve(void);"
  175. #elif defined (_WIN32)
  176.       "SOMEXTERN WIN32_DLLIMPORT SOMOA * SOMDLINK SOMD_SOMOAObject;"
  177. #else
  178.       "SOMEXTERN SOMOA * SOMDLINK SOMD_SOMOAObject;"
  179. #endif
  180.       "";
  181.  
  182.   };
  183.  
  184. #endif /* __SOMIDL__ */
  185.  
  186. };
  187.  
  188. #endif  /* somoa_idl */
  189.