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