home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / tolkit45.zip / os2tk45 / som / include / replicbl.h < prev    next >
C/C++ Source or Header  |  1999-02-22  |  26KB  |  656 lines

  1.  
  2. /*
  3.  * This file was generated by the SOM Compiler.
  4.  * FileName: replicbl.h.
  5.  * Generated using:
  6.  *     SOM Precompiler somipc: 2.29.1.17
  7.  *     SOM Emitter emith: 2.47
  8.  */
  9.  
  10. /*
  11.  *    COMPONENT_NAME: somr
  12.  * 
  13.  *    ORIGINS: 27
  14.  * 
  15.  * 
  16.  *    10H9767, 10H9769  (C) COPYRIGHT International Business Machines Corp. 1992,1994
  17.  *    All Rights Reserved
  18.  *    Licensed Materials - Property of IBM
  19.  *    US Government Users Restricted Rights - Use, duplication or
  20.  *    disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
  21.  * 
  22.  */
  23.  
  24.  
  25. #ifndef SOM_SOMRReplicbl_h
  26. #define SOM_SOMRReplicbl_h
  27.  
  28.  
  29. /*
  30.  * Passthru lines: File: "C.h", "before"
  31.  */
  32. #include <somrerrd.h>
  33.  
  34. #include <som.h>
  35.  
  36. /*
  37.  * -- This emitter treats Method Tokens as Thunks by default.
  38.  * -- Use the sc modifier "nothunks" to change this default
  39.  */
  40. #undef somresolve_
  41. #define somresolve_(obj,mToken) ((somMethodProc*)((void)obj, mToken))
  42.  
  43. /*
  44.  * Define the class name as an object type
  45.  */
  46. #ifndef SOMRReplicbl
  47. #define SOMRReplicbl SOMObject
  48. #endif
  49. /*
  50.  *  This class provides a link to the Replication Framework. Any class derived
  51.  *  from this class can have instances that are replicated in other address
  52.  *  spaces.  To get the ability to replicate, the derived
  53.  *  class has to abide by the following rules (these rules are binding on
  54.  *  further derivations and contained (constituent) subobjects as well):
  55.  * 
  56.  *     1. It must obtain a replica lock before updating its data and must
  57.  *        release the same after the update. (i.e., The update methods
  58.  *        must bracket their code in a (somrLock, somrReleaseNPropagateUpdate)
  59.  *        pair or a (somrLockNLogOp, somrReleaseNPropagateOperation) pair.)
  60.  *     2. If after obtaining the replica lock, if the object decides to abort
  61.  *        an update operation, it must call the appropriate abort method.
  62.  *        (somrReleaseLockNAbortOp or somrReleaseLockNAbortUpdate)
  63.  *     3. In case value logging is used, it must have an update language in which
  64.  *        changes in the state of the object can be described.
  65.  *     4. In case value logging is used, it must provide a method to receive and
  66.  *        interpret update messages propagated by other replicas. (i.e., Must implement
  67.  *        somrApplyUpdates method. When there are subobjects, this implementation
  68.  *        should call them to interpret the updates appropriate to them.)
  69.  *     5. It must have methods to get and set the complete state of the object (including
  70.  *        any subobjects). (i.e., Must provide implementations for somrGetState
  71.  *        and somrSetState.)
  72.  *     6. It should be able to receive and interpret data replication
  73.  *        directives (e.g., "LOST_CONNECTION", "BECOME_STAND_ALONE", etc. )
  74.  */
  75. #include <nameable.h>
  76. #include <linear.h>
  77.  
  78. /*
  79.  * Start of bindings for IDL types
  80.  */
  81.  
  82. #ifndef SOMClass
  83.     #define SOMClass SOMObject
  84. #endif /* SOMClass */
  85. #ifndef SOFTRepmgrAB
  86.     #define SOFTRepmgrAB SOMObject
  87. #endif /* SOFTRepmgrAB */
  88. #ifndef Set
  89.     #define Set SOMObject
  90. #endif /* Set */
  91.  
  92. /*
  93.  * End of bindings for IDL types.
  94.  */
  95.  
  96. #define SOMRReplicbl_MajorVersion 2
  97. #define SOMRReplicbl_MinorVersion 1
  98.  
  99. /*
  100.  * External name shortening if required
  101.  */
  102. #ifdef SOM_USE_SHORT_EXTERNAL_NAMES
  103. #define SOMRReplicblNewClass c
  104. #pragma linkage(c, system)
  105. #define SOMRReplicblClassData d
  106. #define SOMRReplicblCClassData x
  107. #endif /* SOM_USE_SHORT_EXTERNAL_NAMES */
  108. /*--------------Migration------------*/
  109. #define SOMRReplicbl_classObj SOMRReplicblClassData.classObject
  110. #define _SOMRReplicbl SOMRReplicbl_classObj
  111.  
  112. /*
  113.  * Declare the class creation procedure
  114.  */
  115. SOMEXTERN SOMClass * SOMLINK SOMRReplicblNewClass(integer4 somtmajorVersion,
  116.         integer4 somtminorVersion);
  117. #pragma linkage(SOMRReplicblNewClass, system)
  118.  
  119. /*
  120.  * Declare the class data structure
  121.  */
  122. SOMEXTERN struct SOMRReplicblClassDataStructure {
  123.     SOMClass *classObject;
  124.     somMToken somrLock;
  125.     somMToken somrLockNlogOp;
  126.     somMToken somrReleaseNPropagateUpdate;
  127.     somMToken somrReleaseLockNAbortUpdate;
  128.     somMToken somrReleaseNPropagateOperation;
  129.     somMToken somrReleaseLockNAbortOp;
  130.     somMToken somrSendDirective;
  131.     somMToken somrGetSavePermit;
  132.     somMToken somrRepInit;
  133.     somMToken somrRepUninit;
  134.     somMToken somrApplyUpdates;
  135.     somMToken somrDoDirective;
  136.     somMToken somrPin;
  137.     somMToken somrUnPin;
  138.     somMToken somrGetSecurityPolicy;
  139. } SOMDLINK SOMRReplicblClassData;
  140.  
  141. /*
  142.  * Declare the C specific class data structure
  143.  */
  144. SOMEXTERN struct SOMRReplicblCClassDataStructure {
  145.     somMethodTabs parentMtab;
  146.     somDToken instanceDataToken;
  147.     somMethodProc *somrLockNlogOp;
  148. } SOMDLINK SOMRReplicblCClassData;
  149.  
  150. /*
  151.  * New and Renew macros for SOMRReplicbl
  152.  */
  153. #define SOMRReplicblNew() \
  154.    ( _SOMRReplicbl ? \
  155.     _somNew(_SOMRReplicbl) \
  156.     : ( SOMRReplicblNewClass(\
  157.         SOMRReplicbl_MajorVersion, \
  158.         SOMRReplicbl_MinorVersion),\
  159.        _somNew(_SOMRReplicbl)))
  160. #define SOMRReplicblRenew(buf) \
  161.    ( _SOMRReplicbl ? \
  162.     _somRenew(_SOMRReplicbl, buf) \
  163.     : ( SOMRReplicblNewClass(\
  164.         SOMRReplicbl_MajorVersion, \
  165.         SOMRReplicbl_MinorVersion),\
  166.        _somRenew(_SOMRReplicbl, buf)))
  167.  
  168. /*
  169.  * Override method: somInit
  170.  */
  171. #define SOMRReplicbl_somInit(somSelf) \
  172.     SOMObject_somInit(somSelf)
  173.  
  174. /*
  175.  * Override method: somUninit
  176.  */
  177. #define SOMRReplicbl_somUninit(somSelf) \
  178.     SOMObject_somUninit(somSelf)
  179.  
  180. /*
  181.  * Override method: somrSetObjName
  182.  */
  183. #define SOMRReplicbl_somrSetObjName(somSelf,ev,name) \
  184.     SOMRNameable_somrSetObjName(somSelf,ev,name)
  185.  
  186. /*
  187.  * New Method: somrLock
  188.  */
  189. typedef void   SOMLINK somTP_SOMRReplicbl_somrLock(SOMRReplicbl *somSelf, Environment *ev);
  190. #pragma linkage(somTP_SOMRReplicbl_somrLock, system)
  191. typedef somTP_SOMRReplicbl_somrLock *somTD_SOMRReplicbl_somrLock;
  192. /*
  193.  *  Get a lock on this replica of the object. An exception is raised if the
  194.  *  lock is not obtained.
  195.  */
  196. #define somMD_SOMRReplicbl_somrLock "::SOMRReplicbl::somrLock"
  197. #define SOMRReplicbl_somrLock(somSelf,ev) \
  198.     (SOM_Resolve(somSelf, SOMRReplicbl, somrLock) \
  199.     (somSelf,ev))
  200. #ifndef SOMGD_somrLock
  201.     #if (defined(_somrLock) || defined(__somrLock))
  202.         #undef _somrLock
  203.         #undef __somrLock
  204.         #define SOMGD_somrLock 1
  205.     #else
  206.         #define _somrLock SOMRReplicbl_somrLock
  207.     #endif /* _somrLock */
  208. #endif /* SOMGD_somrLock */
  209.  
  210. /*
  211.  * New Method: somrLockNlogOp
  212.  */
  213. typedef void   SOMLINK somTP_SOMRReplicbl_somrLockNlogOp(SOMRReplicbl *somSelf, Environment *ev, 
  214.         string ClassName, 
  215.         string MthdName, 
  216.         va_list ap);
  217. #pragma linkage(somTP_SOMRReplicbl_somrLockNlogOp, system)
  218. typedef somTP_SOMRReplicbl_somrLockNlogOp *somTD_SOMRReplicbl_somrLockNlogOp;
  219. /*
  220.  *  Similar to somrLock, but it also logs the method (i.e., MthdName) that is
  221.  *  requesting the lock.
  222.  *  The va_list parameter is for specifying the actual arguments with which "MthdName" is
  223.  *  being called.
  224.  */
  225. #define somMD_SOMRReplicbl_somrLockNlogOp "::SOMRReplicbl::somrLockNlogOp"
  226. #define SOMRReplicbl_somrLockNlogOp(somSelf,ev,ClassName,MthdName,ap) \
  227.     (SOM_Resolve(somSelf, SOMRReplicbl, somrLockNlogOp) \
  228.     (somSelf,ev,ClassName,MthdName,ap))
  229.  
  230. /*
  231.  * legacy support for non-system-linkage vararg stub
  232.  * use -mnolegacy to avoid generating this stub.
  233.  */
  234. #ifdef SOMRReplicbl_VA_EXTERN
  235.     SOMEXTERN
  236. #else
  237.     static
  238. #endif
  239. void   va_SOMRReplicbl_somrLockNlogOp(SOMRReplicbl *somSelf, Environment *ev,
  240.         string ClassName,
  241.         string MthdName,
  242.         ...)
  243. #if (defined(SOMRReplicbl_VA_STUBS)||!defined(SOMRReplicbl_VA_EXTERN))
  244. {
  245.     va_list ap;
  246.     va_start(ap, MthdName);
  247.     SOMRReplicbl_somrLockNlogOp(somSelf,ev,ClassName,MthdName,ap);
  248.     va_end(ap);
  249. }    
  250. #else
  251.     ;
  252. #endif
  253.  
  254. /*
  255.  * normal vararg stubs
  256.  */
  257. #ifndef SOMGD_va_somrLockNlogOp
  258.    #ifdef va_somrLockNlogOp
  259.       #undef va_somrLockNlogOp
  260.       #define SOMGD_va_somrLockNlogOp 1
  261.    #else
  262.       #define va_somrLockNlogOp somva_SOMRReplicbl_somrLockNlogOp
  263.    #endif /* va_somrLockNlogOp */
  264. #endif /* SOMGD_va_somrLockNlogOp */
  265. #ifndef SOMGD_somrLockNlogOp
  266.     #if (defined(_somrLockNlogOp) || defined(__somrLockNlogOp))
  267.         #undef _somrLockNlogOp
  268.         #undef __somrLockNlogOp
  269.         #define SOMGD_somrLockNlogOp 1
  270.     #else
  271.         #define _somrLockNlogOp somva_SOMRReplicbl_somrLockNlogOp
  272.     #endif /* _somrLockNlogOp */
  273. #endif /* SOMGD_somrLockNlogOp */
  274. #ifdef SOMRReplicbl_VA_EXTERN
  275. #pragma linkage(somva_SOMRReplicbl_somrLockNlogOp, system)
  276.     SOMEXTERN
  277. #else
  278.     static
  279. #endif
  280. void  SOMLINK somva_SOMRReplicbl_somrLockNlogOp(SOMRReplicbl *somSelf, Environment *ev,
  281.         string ClassName,
  282.         string MthdName,
  283.         ...)
  284. #if (defined(SOMRReplicbl_VA_STUBS)||!defined(SOMRReplicbl_VA_EXTERN))
  285. {
  286.     va_list ap;
  287.     va_start(ap, MthdName);
  288.     SOMRReplicbl_somrLockNlogOp(somSelf,ev,ClassName,MthdName,ap);
  289.     va_end(ap);
  290. }    
  291. #else
  292.     ;
  293. #endif
  294.  
  295. /*
  296.  * New Method: somrReleaseNPropagateUpdate
  297.  */
  298. typedef void   SOMLINK somTP_SOMRReplicbl_somrReleaseNPropagateUpdate(SOMRReplicbl *somSelf, Environment *ev, 
  299.         string clsname, 
  300.         string buf, 
  301.         long len, 
  302.         long intOid);
  303. #pragma linkage(somTP_SOMRReplicbl_somrReleaseNPropagateUpdate, system)
  304. typedef somTP_SOMRReplicbl_somrReleaseNPropagateUpdate *somTD_SOMRReplicbl_somrReleaseNPropagateUpdate;
  305. /*
  306.  *  Release the lock locally and propagate the local updates to master and or
  307.  *  other shadows by calling the local replica manager. This propagates
  308.  *  "value log" of state changes. The parameter intOid is used to indicate
  309.  *  a subobject id to which this update is to be applied. If there are no
  310.  *  subobjects, this argument is to be set to 0.
  311.  */
  312. #define somMD_SOMRReplicbl_somrReleaseNPropagateUpdate "::SOMRReplicbl::somrReleaseNPropagateUpdate"
  313. #define SOMRReplicbl_somrReleaseNPropagateUpdate(somSelf,ev,clsname,buf,len,intOid) \
  314.     (SOM_Resolve(somSelf, SOMRReplicbl, somrReleaseNPropagateUpdate) \
  315.     (somSelf,ev,clsname,buf,len,intOid))
  316. #ifndef SOMGD_somrReleaseNPropagateUpdate
  317.     #if (defined(_somrReleaseNPropagateUpdate) || defined(__somrReleaseNPropagateUpdate))
  318.         #undef _somrReleaseNPropagateUpdate
  319.         #undef __somrReleaseNPropagateUpdate
  320.         #define SOMGD_somrReleaseNPropagateUpdate 1
  321.     #else
  322.         #define _somrReleaseNPropagateUpdate SOMRReplicbl_somrReleaseNPropagateUpdate
  323.     #endif /* _somrReleaseNPropagateUpdate */
  324. #endif /* SOMGD_somrReleaseNPropagateUpdate */
  325.  
  326. /*
  327.  * New Method: somrReleaseLockNAbortUpdate
  328.  */
  329. typedef void   SOMLINK somTP_SOMRReplicbl_somrReleaseLockNAbortUpdate(SOMRReplicbl *somSelf, Environment *ev);
  330. #pragma linkage(somTP_SOMRReplicbl_somrReleaseLockNAbortUpdate, system)
  331. typedef somTP_SOMRReplicbl_somrReleaseLockNAbortUpdate *somTD_SOMRReplicbl_somrReleaseLockNAbortUpdate;
  332. /*
  333.  *  Lets the data replication framework know that the user decided to abort
  334.  *  the operation he/she began by calling somrLock. Once a lock is
  335.  *  obtained, either this method or somrReleaseNPropagateUpdate must
  336.  *  be called.
  337.  */
  338. #define somMD_SOMRReplicbl_somrReleaseLockNAbortUpdate "::SOMRReplicbl::somrReleaseLockNAbortUpdate"
  339. #define SOMRReplicbl_somrReleaseLockNAbortUpdate(somSelf,ev) \
  340.     (SOM_Resolve(somSelf, SOMRReplicbl, somrReleaseLockNAbortUpdate) \
  341.     (somSelf,ev))
  342. #ifndef SOMGD_somrReleaseLockNAbortUpdate
  343.     #if (defined(_somrReleaseLockNAbortUpdate) || defined(__somrReleaseLockNAbortUpdate))
  344.         #undef _somrReleaseLockNAbortUpdate
  345.         #undef __somrReleaseLockNAbortUpdate
  346.         #define SOMGD_somrReleaseLockNAbortUpdate 1
  347.     #else
  348.         #define _somrReleaseLockNAbortUpdate SOMRReplicbl_somrReleaseLockNAbortUpdate
  349.     #endif /* _somrReleaseLockNAbortUpdate */
  350. #endif /* SOMGD_somrReleaseLockNAbortUpdate */
  351.  
  352. /*
  353.  * New Method: somrReleaseNPropagateOperation
  354.  */
  355. typedef void   SOMLINK somTP_SOMRReplicbl_somrReleaseNPropagateOperation(SOMRReplicbl *somSelf, Environment *ev);
  356. #pragma linkage(somTP_SOMRReplicbl_somrReleaseNPropagateOperation, system)
  357. typedef somTP_SOMRReplicbl_somrReleaseNPropagateOperation *somTD_SOMRReplicbl_somrReleaseNPropagateOperation;
  358. /*
  359.  *  Similar to Propagate update, except now propagate the "operation log"
  360.  *  instead of the value log  prepared by the subclass implementation.
  361.  */
  362. #define somMD_SOMRReplicbl_somrReleaseNPropagateOperation "::SOMRReplicbl::somrReleaseNPropagateOperation"
  363. #define SOMRReplicbl_somrReleaseNPropagateOperation(somSelf,ev) \
  364.     (SOM_Resolve(somSelf, SOMRReplicbl, somrReleaseNPropagateOperation) \
  365.     (somSelf,ev))
  366. #ifndef SOMGD_somrReleaseNPropagateOperation
  367.     #if (defined(_somrReleaseNPropagateOperation) || defined(__somrReleaseNPropagateOperation))
  368.         #undef _somrReleaseNPropagateOperation
  369.         #undef __somrReleaseNPropagateOperation
  370.         #define SOMGD_somrReleaseNPropagateOperation 1
  371.     #else
  372.         #define _somrReleaseNPropagateOperation SOMRReplicbl_somrReleaseNPropagateOperation
  373.     #endif /* _somrReleaseNPropagateOperation */
  374. #endif /* SOMGD_somrReleaseNPropagateOperation */
  375.  
  376. /*
  377.  * New Method: somrReleaseLockNAbortOp
  378.  */
  379. typedef void   SOMLINK somTP_SOMRReplicbl_somrReleaseLockNAbortOp(SOMRReplicbl *somSelf, Environment *ev);
  380. #pragma linkage(somTP_SOMRReplicbl_somrReleaseLockNAbortOp, system)
  381. typedef somTP_SOMRReplicbl_somrReleaseLockNAbortOp *somTD_SOMRReplicbl_somrReleaseLockNAbortOp;
  382. /*
  383.  *  Lets the data replication framework know that the user decided to abort
  384.  *  the operation that he/she began by calling somrLockNLogOp. Once a lock
  385.  *  is obtained, either this method or somrReleaseNPropagateOperation must
  386.  *  be called
  387.  */
  388. #define somMD_SOMRReplicbl_somrReleaseLockNAbortOp "::SOMRReplicbl::somrReleaseLockNAbortOp"
  389. #define SOMRReplicbl_somrReleaseLockNAbortOp(somSelf,ev) \
  390.     (SOM_Resolve(somSelf, SOMRReplicbl, somrReleaseLockNAbortOp) \
  391.     (somSelf,ev))
  392. #ifndef SOMGD_somrReleaseLockNAbortOp
  393.     #if (defined(_somrReleaseLockNAbortOp) || defined(__somrReleaseLockNAbortOp))
  394.         #undef _somrReleaseLockNAbortOp
  395.         #undef __somrReleaseLockNAbortOp
  396.         #define SOMGD_somrReleaseLockNAbortOp 1
  397.     #else
  398.         #define _somrReleaseLockNAbortOp SOMRReplicbl_somrReleaseLockNAbortOp
  399.     #endif /* _somrReleaseLockNAbortOp */
  400. #endif /* SOMGD_somrReleaseLockNAbortOp */
  401.  
  402. /*
  403.  * New Method: somrRepInit
  404.  */
  405. typedef long   SOMLINK somTP_SOMRReplicbl_somrRepInit(SOMRReplicbl *somSelf, Environment *ev, 
  406.         char lType, 
  407.         char mode);
  408. #pragma linkage(somTP_SOMRReplicbl_somrRepInit, system)
  409. typedef somTP_SOMRReplicbl_somrRepInit *somTD_SOMRReplicbl_somrRepInit;
  410. /*
  411.  *  Makes the object ready for replication. A derived object
  412.  *  MUST call this method for activating replica control.  The parameter
  413.  *  lType indicates the type of logging used: 'v' for value logging and 'o'
  414.  *  for operation logging.  The parameter mode indicates whether the
  415.  *  object is opened for reading("r") or writing ("w").
  416.  * 
  417.  *  If no errors occur, a return value of 1 indicates that this is the first
  418.  *  replica to be activated (i.e., the Master), and 0 indicates it is a shadow.
  419.  * 
  420.  *  If an error occurs, an exception is raised, and the return value is
  421.  *  indeterminate (and should be ignored).
  422.  * 
  423.  *  If the object is already initialized, no action is taken, and a return
  424.  *  code of 0 is returned.
  425.  */
  426. #define somMD_SOMRReplicbl_somrRepInit "::SOMRReplicbl::somrRepInit"
  427. #define SOMRReplicbl_somrRepInit(somSelf,ev,lType,mode) \
  428.     (SOM_Resolve(somSelf, SOMRReplicbl, somrRepInit) \
  429.     (somSelf,ev,lType,mode))
  430. #ifndef SOMGD_somrRepInit
  431.     #if (defined(_somrRepInit) || defined(__somrRepInit))
  432.         #undef _somrRepInit
  433.         #undef __somrRepInit
  434.         #define SOMGD_somrRepInit 1
  435.     #else
  436.         #define _somrRepInit SOMRReplicbl_somrRepInit
  437.     #endif /* _somrRepInit */
  438. #endif /* SOMGD_somrRepInit */
  439.  
  440. /*
  441.  * New Method: somrRepUninit
  442.  */
  443. typedef void   SOMLINK somTP_SOMRReplicbl_somrRepUninit(SOMRReplicbl *somSelf, Environment *ev);
  444. #pragma linkage(somTP_SOMRReplicbl_somrRepUninit, system)
  445. typedef somTP_SOMRReplicbl_somrRepUninit *somTD_SOMRReplicbl_somrRepUninit;
  446. /*
  447.  *  Destroys the set up for replication.
  448.  *  If the object is not initialized for replication, no action is taken.
  449.  */
  450. #define somMD_SOMRReplicbl_somrRepUninit "::SOMRReplicbl::somrRepUninit"
  451. #define SOMRReplicbl_somrRepUninit(somSelf,ev) \
  452.     (SOM_Resolve(somSelf, SOMRReplicbl, somrRepUninit) \
  453.     (somSelf,ev))
  454. #ifndef SOMGD_somrRepUninit
  455.     #if (defined(_somrRepUninit) || defined(__somrRepUninit))
  456.         #undef _somrRepUninit
  457.         #undef __somrRepUninit
  458.         #define SOMGD_somrRepUninit 1
  459.     #else
  460.         #define _somrRepUninit SOMRReplicbl_somrRepUninit
  461.     #endif /* _somrRepUninit */
  462. #endif /* SOMGD_somrRepUninit */
  463.  
  464. /*
  465.  * New Method: somrApplyUpdates
  466.  */
  467. typedef void   SOMLINK somTP_SOMRReplicbl_somrApplyUpdates(SOMRReplicbl *somSelf, Environment *ev, 
  468.         string buf, 
  469.         long len, 
  470.         long ObjIntId);
  471. #pragma linkage(somTP_SOMRReplicbl_somrApplyUpdates, system)
  472. typedef somTP_SOMRReplicbl_somrApplyUpdates *somTD_SOMRReplicbl_somrApplyUpdates;
  473. /*
  474.  *  This method interprets the buffer received as an update to its state.
  475.  *  The format of this update is exactly the same as the one used by the
  476.  *  subclass implementor for the update buffer passed to ReleaseNPropagateUpdate
  477.  *  method. The ObjIntId parameter indicates the internal subobject id to which
  478.  *  this update should be applied. If it is 0, then the update is to be applied
  479.  *  to self.
  480.  */
  481. #define somMD_SOMRReplicbl_somrApplyUpdates "::SOMRReplicbl::somrApplyUpdates"
  482. #define SOMRReplicbl_somrApplyUpdates(somSelf,ev,buf,len,ObjIntId) \
  483.     (SOM_Resolve(somSelf, SOMRReplicbl, somrApplyUpdates) \
  484.     (somSelf,ev,buf,len,ObjIntId))
  485. #ifndef SOMGD_somrApplyUpdates
  486.     #if (defined(_somrApplyUpdates) || defined(__somrApplyUpdates))
  487.         #undef _somrApplyUpdates
  488.         #undef __somrApplyUpdates
  489.         #define SOMGD_somrApplyUpdates 1
  490.     #else
  491.         #define _somrApplyUpdates SOMRReplicbl_somrApplyUpdates
  492.     #endif /* _somrApplyUpdates */
  493. #endif /* SOMGD_somrApplyUpdates */
  494.  
  495. /*
  496.  * New Method: somrDoDirective
  497.  */
  498. typedef void   SOMLINK somTP_SOMRReplicbl_somrDoDirective(SOMRReplicbl *somSelf, Environment *ev, 
  499.         string str);
  500. #pragma linkage(somTP_SOMRReplicbl_somrDoDirective, system)
  501. typedef somTP_SOMRReplicbl_somrDoDirective *somTD_SOMRReplicbl_somrDoDirective;
  502. /*
  503.  *  The string gives a directive to the object to implement. The directive usually
  504.  *  indications a condition that warrants user intervention/awareness.
  505.  */
  506. #define somMD_SOMRReplicbl_somrDoDirective "::SOMRReplicbl::somrDoDirective"
  507. #define SOMRReplicbl_somrDoDirective(somSelf,ev,str) \
  508.     (SOM_Resolve(somSelf, SOMRReplicbl, somrDoDirective) \
  509.     (somSelf,ev,str))
  510. #ifndef SOMGD_somrDoDirective
  511.     #if (defined(_somrDoDirective) || defined(__somrDoDirective))
  512.         #undef _somrDoDirective
  513.         #undef __somrDoDirective
  514.         #define SOMGD_somrDoDirective 1
  515.     #else
  516.         #define _somrDoDirective SOMRReplicbl_somrDoDirective
  517.     #endif /* _somrDoDirective */
  518. #endif /* SOMGD_somrDoDirective */
  519.  
  520. /*
  521.  * New Method: somrPin
  522.  */
  523. typedef void   SOMLINK somTP_SOMRReplicbl_somrPin(SOMRReplicbl *somSelf, Environment *ev);
  524. #pragma linkage(somTP_SOMRReplicbl_somrPin, system)
  525. typedef somTP_SOMRReplicbl_somrPin *somTD_SOMRReplicbl_somrPin;
  526. /*
  527.  *  Makes the replica lock obtained by this replica stay with it until a call
  528.  *  to UnPin is made.  That is, it makes the replica lock un-preemptible.
  529.  *  Raises an Exception if the lock is denied (SOMR_DENIED).
  530.  */
  531. #define somMD_SOMRReplicbl_somrPin "::SOMRReplicbl::somrPin"
  532. #define SOMRReplicbl_somrPin(somSelf,ev) \
  533.     (SOM_Resolve(somSelf, SOMRReplicbl, somrPin) \
  534.     (somSelf,ev))
  535. #ifndef SOMGD_somrPin
  536.     #if (defined(_somrPin) || defined(__somrPin))
  537.         #undef _somrPin
  538.         #undef __somrPin
  539.         #define SOMGD_somrPin 1
  540.     #else
  541.         #define _somrPin SOMRReplicbl_somrPin
  542.     #endif /* _somrPin */
  543. #endif /* SOMGD_somrPin */
  544.  
  545. /*
  546.  * New Method: somrUnPin
  547.  */
  548. typedef void   SOMLINK somTP_SOMRReplicbl_somrUnPin(SOMRReplicbl *somSelf, Environment *ev);
  549. #pragma linkage(somTP_SOMRReplicbl_somrUnPin, system)
  550. typedef somTP_SOMRReplicbl_somrUnPin *somTD_SOMRReplicbl_somrUnPin;
  551. /*
  552.  *  Declares the replica lock preemptible. That is, other shadows can grab the
  553.  *  replica lock from this shadow.
  554.  */
  555. #define somMD_SOMRReplicbl_somrUnPin "::SOMRReplicbl::somrUnPin"
  556. #define SOMRReplicbl_somrUnPin(somSelf,ev) \
  557.     (SOM_Resolve(somSelf, SOMRReplicbl, somrUnPin) \
  558.     (somSelf,ev))
  559. #ifndef SOMGD_somrUnPin
  560.     #if (defined(_somrUnPin) || defined(__somrUnPin))
  561.         #undef _somrUnPin
  562.         #undef __somrUnPin
  563.         #define SOMGD_somrUnPin 1
  564.     #else
  565.         #define _somrUnPin SOMRReplicbl_somrUnPin
  566.     #endif /* _somrUnPin */
  567. #endif /* SOMGD_somrUnPin */
  568.  
  569. /*
  570.  * New Method: somrGetSecurityPolicy
  571.  */
  572. typedef long   SOMLINK somTP_SOMRReplicbl_somrGetSecurityPolicy(SOMRReplicbl *somSelf, Environment *ev);
  573. #pragma linkage(somTP_SOMRReplicbl_somrGetSecurityPolicy, system)
  574. typedef somTP_SOMRReplicbl_somrGetSecurityPolicy *somTD_SOMRReplicbl_somrGetSecurityPolicy;
  575. /*
  576.  *   Returns the security policy for replicated objects that are either
  577.  *   non-persistent or persistent but haven't been created yet.
  578.  *   Caveat: Meaningful only on AIX. Ignored for OS/2.
  579.  */
  580. #define somMD_SOMRReplicbl_somrGetSecurityPolicy "::SOMRReplicbl::somrGetSecurityPolicy"
  581. #define SOMRReplicbl_somrGetSecurityPolicy(somSelf,ev) \
  582.     (SOM_Resolve(somSelf, SOMRReplicbl, somrGetSecurityPolicy) \
  583.     (somSelf,ev))
  584. #ifndef SOMGD_somrGetSecurityPolicy
  585.     #if (defined(_somrGetSecurityPolicy) || defined(__somrGetSecurityPolicy))
  586.         #undef _somrGetSecurityPolicy
  587.         #undef __somrGetSecurityPolicy
  588.         #define SOMGD_somrGetSecurityPolicy 1
  589.     #else
  590.         #define _somrGetSecurityPolicy SOMRReplicbl_somrGetSecurityPolicy
  591.     #endif /* _somrGetSecurityPolicy */
  592. #endif /* SOMGD_somrGetSecurityPolicy */
  593. #ifndef SOM_DONT_USE_INHERITED_MACROS
  594. #define SOMRReplicbl_somrGetObjName SOMRNameable_somrGetObjName
  595. #define SOMRReplicbl_somDefaultInit SOMObject_somDefaultInit
  596. #define SOMRReplicbl_somDestruct SOMObject_somDestruct
  597. #define SOMRReplicbl_somDefaultCopyInit SOMObject_somDefaultCopyInit
  598. #define SOMRReplicbl_somDefaultAssign SOMObject_somDefaultAssign
  599. #define SOMRReplicbl_somDefaultConstCopyInit SOMObject_somDefaultConstCopyInit
  600. #define SOMRReplicbl_somDefaultVCopyInit SOMObject_somDefaultVCopyInit
  601. #define SOMRReplicbl_somDefaultConstVCopyInit SOMObject_somDefaultConstVCopyInit
  602. #define SOMRReplicbl_somDefaultConstAssign SOMObject_somDefaultConstAssign
  603. #define SOMRReplicbl_somDefaultVAssign SOMObject_somDefaultVAssign
  604. #define SOMRReplicbl_somDefaultConstVAssign SOMObject_somDefaultConstVAssign
  605. #define SOMRReplicbl_somFree SOMObject_somFree
  606. #define SOMRReplicbl_somGetClass SOMObject_somGetClass
  607. #define SOMRReplicbl_somGetClassName SOMObject_somGetClassName
  608. #define SOMRReplicbl_somGetSize SOMObject_somGetSize
  609. #define SOMRReplicbl_somIsA SOMObject_somIsA
  610. #define SOMRReplicbl_somIsInstanceOf SOMObject_somIsInstanceOf
  611. #define SOMRReplicbl_somRespondsTo SOMObject_somRespondsTo
  612. #define SOMRReplicbl_somDispatch SOMObject_somDispatch
  613. #define SOMRReplicbl_somClassDispatch SOMObject_somClassDispatch
  614. #define SOMRReplicbl_somCastObj SOMObject_somCastObj
  615. #define SOMRReplicbl_somResetObj SOMObject_somResetObj
  616. #define SOMRReplicbl_somDispatchV SOMObject_somDispatchV
  617. #define SOMRReplicbl_somDispatchL SOMObject_somDispatchL
  618. #define SOMRReplicbl_somDispatchA SOMObject_somDispatchA
  619. #define SOMRReplicbl_somDispatchD SOMObject_somDispatchD
  620. #define SOMRReplicbl_somPrintSelf SOMObject_somPrintSelf
  621. #define SOMRReplicbl_somDumpSelf SOMObject_somDumpSelf
  622. #define SOMRReplicbl_somDumpSelfInt SOMObject_somDumpSelfInt
  623. #define SOMRReplicbl_somrGetState SOMRLinearizable_somrGetState
  624. #define SOMRReplicbl_somrSetState SOMRLinearizable_somrSetState
  625. #define SOMRReplicbl_somDefaultInit SOMObject_somDefaultInit
  626. #define SOMRReplicbl_somDestruct SOMObject_somDestruct
  627. #define SOMRReplicbl_somDefaultCopyInit SOMObject_somDefaultCopyInit
  628. #define SOMRReplicbl_somDefaultAssign SOMObject_somDefaultAssign
  629. #define SOMRReplicbl_somDefaultConstCopyInit SOMObject_somDefaultConstCopyInit
  630. #define SOMRReplicbl_somDefaultVCopyInit SOMObject_somDefaultVCopyInit
  631. #define SOMRReplicbl_somDefaultConstVCopyInit SOMObject_somDefaultConstVCopyInit
  632. #define SOMRReplicbl_somDefaultConstAssign SOMObject_somDefaultConstAssign
  633. #define SOMRReplicbl_somDefaultVAssign SOMObject_somDefaultVAssign
  634. #define SOMRReplicbl_somDefaultConstVAssign SOMObject_somDefaultConstVAssign
  635. #define SOMRReplicbl_somFree SOMObject_somFree
  636. #define SOMRReplicbl_somGetClass SOMObject_somGetClass
  637. #define SOMRReplicbl_somGetClassName SOMObject_somGetClassName
  638. #define SOMRReplicbl_somGetSize SOMObject_somGetSize
  639. #define SOMRReplicbl_somIsA SOMObject_somIsA
  640. #define SOMRReplicbl_somIsInstanceOf SOMObject_somIsInstanceOf
  641. #define SOMRReplicbl_somRespondsTo SOMObject_somRespondsTo
  642. #define SOMRReplicbl_somDispatch SOMObject_somDispatch
  643. #define SOMRReplicbl_somClassDispatch SOMObject_somClassDispatch
  644. #define SOMRReplicbl_somCastObj SOMObject_somCastObj
  645. #define SOMRReplicbl_somResetObj SOMObject_somResetObj
  646. #define SOMRReplicbl_somDispatchV SOMObject_somDispatchV
  647. #define SOMRReplicbl_somDispatchL SOMObject_somDispatchL
  648. #define SOMRReplicbl_somDispatchA SOMObject_somDispatchA
  649. #define SOMRReplicbl_somDispatchD SOMObject_somDispatchD
  650. #define SOMRReplicbl_somPrintSelf SOMObject_somPrintSelf
  651. #define SOMRReplicbl_somDumpSelf SOMObject_somDumpSelf
  652. #define SOMRReplicbl_somDumpSelfInt SOMObject_somDumpSelfInt
  653. #endif /* SOM_DONT_USE_INHERITED_MACROS */
  654.  
  655. #endif       /* SOM_SOMRReplicbl_h */
  656.