home *** CD-ROM | disk | FTP | other *** search
/ io Programmo 32 / IOPROG_32.ISO / SOFT / SqlEval7 / devtools / include / repldist.h < prev    next >
Encoding:
C/C++ Source or Header  |  1998-09-03  |  13.3 KB  |  487 lines

  1. #ifndef _REPLDIST_H_
  2. #define _REPLDIST_H_
  3.  
  4. // OLEDB header
  5. #include "oledb.h"
  6.  
  7. #ifndef __IDistributionStore_FWD_DEFINED__
  8. #define __IDistributionStore_FWD_DEFINED__
  9. typedef interface IDistributionStore IDistributionStore;
  10. #endif     /* __IDistributionStore_FWD_DEFINED__ */
  11.  
  12. #ifndef __IDistributionStore_INTERFACE_DEFINED__
  13. #define __IDistributionStore_INTERFACE_DEFINED__
  14.  
  15. //    SQLDistributionStore's CLSID
  16. // {16D9A8E2-C326-11d0-94E9-00C04FC2DB9C}
  17. DEFINE_GUID(CLSID_SQLDistribution, 
  18. 0x16d9a8e2, 0xc326, 0x11d0, 0x94, 0xe9, 0x0, 0xc0, 0x4f, 0xc2, 0xdb, 0x9c);
  19.  
  20.  // {63797CA0-9684-11d0-94DD-00C04FC2DB9C}
  21. DEFINE_GUID(IID_IDistributionStore, 
  22. 0x63797ca0, 0x9684, 0x11d0, 0x94, 0xdd, 0x0, 0xc0, 0x4f, 0xc2, 0xdb, 0x9c);
  23.  
  24. // {074EACFD-A791-11d0-94E0-00C04FC2DB9C}
  25. DEFINE_GUID(IID_IDistributionLog, 
  26. 0x74eacfd, 0xa791, 0x11d0, 0x94, 0xe0, 0x0, 0xc0, 0x4f, 0xc2, 0xdb, 0x9c);
  27.  
  28. typedef DWORD DISTCMDTYPE;
  29.  
  30. class DistByteArray 
  31. {
  32. private:
  33.     BYTE rgDistByteArray[16];
  34. public:
  35.     DistByteArray(){memset(rgDistByteArray, 0, sizeof(rgDistByteArray));}
  36.     ~DistByteArray(){}
  37.  
  38.     BYTE* operator& ()
  39.     {
  40.         return rgDistByteArray;
  41.     }
  42.  
  43.     // Pre-increment
  44.     DistByteArray& operator++ ()
  45.     {
  46.         return Increment();
  47.     }
  48.  
  49.     // Post-increment
  50.     DistByteArray& operator++ (int dummy)
  51.     {
  52.         return Increment();
  53.     }
  54.  
  55.     DistByteArray& Increment()
  56.     {
  57.         for (int i=sizeof(rgDistByteArray)-1; i>=0; i--)
  58.         {
  59.             UCHAR *pByte = ((UCHAR *) rgDistByteArray + i);
  60.             if (0xFF == *pByte)
  61.             {
  62.                 *pByte = 0;
  63.                 continue;
  64.             }
  65.             else
  66.             {
  67.                 (*pByte)++;
  68.                 break;
  69.             }
  70.         }
  71.         return *this;
  72.     }
  73. };
  74.  
  75. enum DISTCMDTYPEENUM
  76.     {    
  77.     DISTCMDTYPE_SQL    = 1,
  78.     DISTCMDTYPE_SCRIPT = 2,
  79.     DISTCMDTYPE_NATIVE_BCP = 3,
  80.     DISTCMDTYPE_CHAR_BCP = 4,
  81.     DISTCMDTYPE_SQL_WORKINGDIR = 7
  82.     };
  83.  
  84. typedef struct  tagDISTCOMMANDDESC
  85.     {
  86.     INT        PublicationId;
  87.     INT        ArticleId;
  88.     INT        CommandId;
  89.     DISTCMDTYPE    CommandType;
  90.     BOOL    fPartialCommand;
  91.     LPSTR    szCommand;
  92.     BYTE*    pXactId;
  93.     BYTE*    pXactSeqno;
  94.     LPSTR    szOriginator;
  95.     LPSTR    szOriginatorDB;
  96.     }    DISTCOMMANDDESC;
  97.  
  98.  
  99. // Error source type
  100. typedef enum {
  101.     DIST_SOURCE_NULL        = 0,
  102.     DIST_SOURCE_COMMAND        = 1,
  103.     DIST_SOURCE_AGENT        = 2,
  104.     DIST_SOURCE_OS            = 3,
  105.     DIST_SOURCE_ODBC        = 4,
  106.     DIST_SOURCE_SQLSERVER    = 5
  107. } DISTERRSRCTYPE;
  108.  
  109.  
  110. typedef struct  tagDISTERRORDESC
  111.     {
  112.     DISTERRSRCTYPE        SourceType; 
  113.     CHAR                szSourceName[31]; 
  114.     CHAR                szErrorCode[31];
  115.     BSTR                bstrErrorText;
  116.     }    DISTERRORDESC;
  117.  
  118. typedef DWORD DISTLOGSTATUS;
  119.  
  120. enum DISTLOGSTATUSENUM
  121.     {    
  122.     DISTLOG_STARTUP = 1,
  123.     DISTLOG_SUCCESS = 2,
  124.     DISTLOG_INPROGRESS = 3,
  125.     DISTLOG_IDLE = 4,
  126.     DISTLOG_RETRY = 5,
  127.     DISTLOG_FAILURE = 6
  128.     };
  129.  
  130. typedef BYTE DISTAPPTYPE;
  131.  
  132. enum DISTTYPEENUM
  133.     {    
  134.     DISTTYPE_SNAPSHOT = 0,
  135.     DISTTYPE_LOGREADER = 1
  136.     };
  137.  
  138.  
  139. enum DISTPROPENUM  
  140.     {    DBPROP_INIT_PUBLISHER_NAME = 0xFF1,
  141.         DBPROP_INIT_PUBLISHER_DATASOURCE = 0xFF2,
  142.         DBPROP_INIT_XACTID_SIZE = 0xFF3,
  143.         DBPROP_INIT_XACT_SEQNO_SIZE = 0xFF4,
  144.         DBPROP_PUBLICATION_NAME = 0xFF5,
  145.         DBPROP_APPLICATION_NAME = 0xFF6,
  146.         DBPROP_APPLICATION_TYPE = 0xFF7
  147.     };
  148.  
  149. EXTERN_C const IID IID_IDistributionStore;
  150.  
  151. #if defined(__cplusplus) && !defined(CINTERFACE)
  152.     
  153.     interface IDistributionStore : public IUnknown
  154.     {
  155.     public:
  156.         virtual HRESULT STDMETHODCALLTYPE Abort( void) = 0;
  157.         virtual HRESULT STDMETHODCALLTYPE Commit( void) = 0;
  158.         virtual HRESULT STDMETHODCALLTYPE GetLastTransaction(
  159.             /* [out] */ BYTE* pXactId,
  160.             /* [out] */ BYTE* pXactSeqno) = 0;
  161.         virtual HRESULT STDMETHODCALLTYPE AddTransactionCommands( 
  162.             /* [in] */ ULONG cCommandDescs,
  163.             /* [size_is][in] */ const DISTCOMMANDDESC __RPC_FAR rgCommandDescs[  ]) = 0;
  164.         virtual HRESULT STDMETHODCALLTYPE StartTransaction( void) = 0;
  165.     };
  166.     
  167. #else     /* C style interface */
  168.  
  169.     typedef struct IDistributionStoreVtbl
  170.     {
  171.         BEGIN_INTERFACE
  172.         
  173.         HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )( 
  174.             IDistributionStore __RPC_FAR * This,
  175.             /* [in] */ REFIID riid,
  176.             /* [out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
  177.         
  178.         ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )( 
  179.             IDistributionStore __RPC_FAR * This);
  180.         
  181.         ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )( 
  182.             IDistributionStore __RPC_FAR * This);
  183.         
  184.         HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Abort )( 
  185.             IDistributionStore __RPC_FAR * This);
  186.  
  187.         HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Commit )( 
  188.             IDistributionStore __RPC_FAR * This);
  189.         
  190.         HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetLastTransaction )( 
  191.             IDistributionStore __RPC_FAR * This,
  192.             /* [out] */ BYTE* pXactId,
  193.             /* [out] */ BYTE* pXactSeqno);
  194.         
  195.         HRESULT ( STDMETHODCALLTYPE __RPC_FAR *AddTransactionCommands )( 
  196.             IDistributionStore __RPC_FAR * This,
  197.             /* [in] */ ULONG cCommandDescs,
  198.             /* [size_is][in] */ const DISTCOMMANDDESC __RPC_FAR rgCommandDescs[  ]);
  199.         
  200.         HRESULT ( STDMETHODCALLTYPE __RPC_FAR *StartTransaction )( 
  201.             IDistributionStore __RPC_FAR * This);
  202.  
  203.         END_INTERFACE
  204.     } IDistributionStoreVtbl;
  205.  
  206.     interface IDistributionStore
  207.     {
  208.         CONST_VTBL struct IDistributionStoreVtbl __RPC_FAR *lpVtbl;
  209.     };
  210.  
  211.     
  212.  
  213. #ifdef COBJMACROS
  214.  
  215. #define IDistributionStore_QueryInterface(This,riid,ppvObject)    \
  216.     (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
  217.  
  218. #define IDistributionStore_AddRef(This)    \
  219.     (This)->lpVtbl -> AddRef(This)
  220.  
  221. #define IDistributionStore_Release(This)    \
  222.     (This)->lpVtbl -> Release(This)
  223.  
  224. #define IDistributionStore_Abort(This)    \
  225.     (This)->lpVtbl -> Abort(This)
  226.  
  227. #define IDistributionStore_Commit(This)    \
  228.     (This)->lpVtbl -> Commit(This)
  229.  
  230. #define IDistributionStore_GetLastTransaction(This)    \
  231.     (This)->lpVtbl -> GetLastTransaction(This, pXactId, pXactSeqno)
  232.  
  233. #define IDistributionStore_AddTransactionCommands(This)    \
  234.     (This)->lpVtbl -> AddTransactionCommands(This, cCommandDescs, rgCommandDescs)
  235.  
  236. #define IDistributionStore_StartTransaction(This)    \
  237.     (This)->lpVtbl -> StartTransaction(This)
  238.  
  239. #endif /* COBJMACROS */
  240.  
  241.  
  242. #endif     /* C style interface */
  243.  
  244.  
  245.  
  246. HRESULT STDMETHODCALLTYPE IDistributionStore_Abort_Proxy( 
  247.     IDistributionStore __RPC_FAR * This);
  248.  
  249.  
  250. void __RPC_STUB IDistributionStore_Abort_Stub(
  251.     IRpcStubBuffer *This,
  252.     IRpcChannelBuffer *_pRpcChannelBuffer,
  253.     PRPC_MESSAGE _pRpcMessage,
  254.     DWORD *_pdwStubPhase);
  255.  
  256. HRESULT STDMETHODCALLTYPE IDistributionStore_Commit_Proxy( 
  257.     IDistributionStore __RPC_FAR * This);
  258.  
  259.  
  260. void __RPC_STUB IDistributionStore_Commit_Stub(
  261.     IRpcStubBuffer *This,
  262.     IRpcChannelBuffer *_pRpcChannelBuffer,
  263.     PRPC_MESSAGE _pRpcMessage,
  264.     DWORD *_pdwStubPhase);
  265.  
  266.  
  267. HRESULT STDMETHODCALLTYPE IDistributionStore_GetLastTransaction_Proxy( 
  268.     IDistributionStore __RPC_FAR * This,
  269.     BYTE* pXactId,
  270.     BYTE* pXactSeqno);
  271.  
  272.  
  273. void __RPC_STUB IDistributionStore_GetLastTransaction_Stub(
  274.     IRpcStubBuffer *This,
  275.     IRpcChannelBuffer *_pRpcChannelBuffer,
  276.     PRPC_MESSAGE _pRpcMessage,
  277.     DWORD *_pdwStubPhase);
  278.  
  279.  
  280. HRESULT STDMETHODCALLTYPE IDistributionStore_AddTransactionCommands_Proxy( 
  281.     IDistributionStore __RPC_FAR * This,
  282.     ULONG cCommandDescs,
  283.     const DISTCOMMANDDESC __RPC_FAR rgCommandDescs[  ]);
  284.  
  285.  
  286. void __RPC_STUB IDistributionStore_AddTransactionCommands_Stub(
  287.     IRpcStubBuffer *This,
  288.     IRpcChannelBuffer *_pRpcChannelBuffer,
  289.     PRPC_MESSAGE _pRpcMessage,
  290.     DWORD *_pdwStubPhase);
  291.  
  292.  
  293. HRESULT STDMETHODCALLTYPE IDistributionStore_StartTransaction_Proxy( 
  294.     IDistributionStore __RPC_FAR * This);
  295.  
  296.  
  297. void __RPC_STUB IDistributionStore_StartTransaction_Stub(
  298.     IRpcStubBuffer *This,
  299.     IRpcChannelBuffer *_pRpcChannelBuffer,
  300.     PRPC_MESSAGE _pRpcMessage,
  301.     DWORD *_pdwStubPhase);
  302.  
  303.  
  304. #endif     /* __IDistributionStore_INTERFACE_DEFINED__ */
  305.  
  306. #ifndef __IDistributionLog_FWD_DEFINED__
  307. #define __IDistributionLog_FWD_DEFINED__
  308. typedef interface IDistributionLog IDistributionLog;
  309. #endif     /* __IDistributionLog_FWD_DEFINED__ */
  310.  
  311. #ifndef __IDistributionLog_INTERFACE_DEFINED__
  312. #define __IDistributionLog_INTERFACE_DEFINED__
  313.  
  314. EXTERN_C const IID IID_IDistributionLog;
  315.  
  316. #if defined(__cplusplus) && !defined(CINTERFACE)
  317.     
  318.     interface IDistributionLog : public IUnknown
  319.     {
  320.     public:
  321.         virtual HRESULT STDMETHODCALLTYPE AddLog( 
  322.             /* [in] */ DWORD dwStatusId,
  323.             /* [in] */ LPSTR szComment,
  324.             /* [in] */ BYTE* pXactSeqno,
  325.             /* [in] */ ULONG ulTransactions,
  326.             /* [in] */ ULONG ulCommands,
  327.             /* [in] */ ULONG cErrorDescs,
  328.             /* [size_is][in] */ const DISTERRORDESC __RPC_FAR rgErrorDescs[  ]) = 0;
  329.     };
  330.     
  331. #else     /* C style interface */
  332.  
  333.     typedef struct IDistributionLogVtbl
  334.     {
  335.         BEGIN_INTERFACE
  336.         
  337.         HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )( 
  338.             IDistributionLog __RPC_FAR * This,
  339.             /* [in] */ REFIID riid,
  340.             /* [out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
  341.         
  342.         ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )( 
  343.             IDistributionLog __RPC_FAR * This);
  344.         
  345.            HRESULT ( STDMETHODCALLTYPE __RPC_FAR *AddLog )( 
  346.             IDistributionLog __RPC_FAR * This,
  347.             /* [in] */ DWORD dwStatusId,
  348.             /* [in] */ LPSTR szComment,
  349.             /* [in] */ BYTE* pXactSeqno,
  350.             /* [in] */ ULONG ulTransactions,
  351.             /* [in] */ ULONG ulCommands,
  352.             /* [in] */ ULONG cErrorDescs,
  353.             /* [size_is][in] */ const DISTERRORDESC __RPC_FAR rgErrorDescs[  ]);
  354.         
  355.         END_INTERFACE
  356.     } IDistributionLogVtbl;
  357.  
  358.     interface IDistributionLog
  359.     {
  360.         CONST_VTBL struct IDistributionLogVtbl __RPC_FAR *lpVtbl;
  361.     };
  362.  
  363.     
  364.  
  365. #ifdef COBJMACROS
  366.  
  367. #define IDistributionLog_QueryInterface(This,riid,ppvObject)    \
  368.     (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
  369.  
  370. #define IDistributionLog_AddRef(This)    \
  371.     (This)->lpVtbl -> AddRef(This)
  372.  
  373. #define IDistributionLog_Release(This)    \
  374.     (This)->lpVtbl -> Release(This)
  375.  
  376. #define IDistributionLog_AddLog(This)    \
  377.     (This)->lpVtbl -> AddLog(This, dwStatusId, szComment, pXactSeqno, cTransactions, cCommands, cErrorDescs, rgErrorDescs)
  378.  
  379. #endif /* COBJMACROS */
  380.  
  381.  
  382. #endif     /* C style interface */
  383.  
  384.  
  385. HRESULT STDMETHODCALLTYPE IDistributionLog_AddLog_Proxy( 
  386.     IDistributionLog __RPC_FAR * This,
  387.     DWORD dwStatusId,
  388.     LPSTR szComment,
  389.     BYTE* pXactSeqno,
  390.     ULONG ulTransactions,
  391.     ULONG ulCommands,
  392.     ULONG cErrorDescs,
  393.     const DISTERRORDESC __RPC_FAR rgErrorDescs[  ]);
  394.  
  395.  
  396. void __RPC_STUB IDistributionLog_AddLog_Stub(
  397.     IRpcStubBuffer *This,
  398.     IRpcChannelBuffer *_pRpcChannelBuffer,
  399.     PRPC_MESSAGE _pRpcMessage,
  400.     DWORD *_pdwStubPhase);
  401.  
  402. #endif     /* __IDistributionLog_INTERFACE_DEFINED__ */
  403.  
  404.  
  405. #ifndef __IGetCustomErrorInfo_FWD_DEFINED__
  406. #define __IGetCustomErrorInfo_FWD_DEFINED__
  407. typedef interface IGetCustomErrorInfo IGetCustomErrorInfo ;
  408. #endif     /* __IGetCustomErrorInfo_FWD_DEFINED__ */
  409.  
  410.  
  411. #ifndef __IGetCustomErrorInfo_INTERFACE_DEFINED__
  412. #define __IGetCustomErrorInfo_INTERFACE_DEFINED__
  413.  
  414. // @msg IID_IGetCustomErrorInfo |  {D83B7C8D-F22F-11d0-9AE8-00C04FB6B6EF}
  415. // Interface ID to the IGetCustomErrorInfo interface
  416. DEFINE_GUID(IID_IGetCustomErrorInfo, 0xd83b7c8d, 0xf22f, 0x11d0, 0x9a, 0xe8, 0x0, 0xc0, 0x4f, 0xb6, 0xb6, 0xef);
  417.  
  418. // @msg CLSID_DistErrorLookup | {246CBC55-F3E8-11d0-9AEB-00C04FB6B6EF}
  419. // ID of the Distribution Error Lookup Service class
  420. DEFINE_GUID(CLSID_DistErrorLookup,0x246cbc55, 0xf3e8, 0x11d0, 0x9a, 0xeb, 0x0, 0xc0, 0x4f, 0xb6, 0xb6, 0xef);
  421.  
  422.  
  423. EXTERN_C const IID IID_IGetCustomErrorInfo;
  424.  
  425. #if defined(__cplusplus) && !defined(CINTERFACE)
  426.     
  427.     interface IGetCustomErrorInfo : public IUnknown
  428.     {
  429.     public:
  430.         virtual HRESULT STDMETHODCALLTYPE GetCustomErrorInfo(DISTERRORDESC * pDistErrorDesc) = 0;
  431.     };
  432.     
  433. #else     /* C style interface */
  434.  
  435.     typedef struct IGetCustomErrorInfoVtbl
  436.     {
  437.         BEGIN_INTERFACE
  438.         
  439.         HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )( 
  440.             IGetCustomErrorInfo __RPC_FAR * This,
  441.             /* [in] */ REFIID riid,
  442.             /* [out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
  443.         
  444.         ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )( 
  445.             IGetCustomErrorInfo __RPC_FAR * This);
  446.         
  447.         ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )( 
  448.             IGetCustomErrorInfo __RPC_FAR * This);
  449.         
  450.         HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetCustomErrorInfo )( 
  451.             IGetCustomErrorInfo __RPC_FAR * This,
  452.             /* out */ REPL_ERROR * pReplError);
  453.         
  454.         END_INTERFACE
  455.     } IGetCustomErrorInfoVtbl;
  456.  
  457.     interface IGetCustomErrorInfo
  458.     {
  459.         CONST_VTBL struct IGetCustomErrorInfoVtbl __RPC_FAR *lpVtbl;
  460.     };
  461.  
  462.     
  463.  
  464. #ifdef COBJMACROS
  465.  
  466.  
  467. #define IGetCustomErrorInfo_QueryInterface(This,riid,ppvObject)    \
  468.     (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
  469.  
  470. #define IGetCustomErrorInfo_AddRef(This)    \
  471.     (This)->lpVtbl -> AddRef(This)
  472.  
  473. #define IGetCustomErrorInfo_Release(This)    \
  474.     (This)->lpVtbl -> Release(This)
  475.  
  476. #define IGetCustomErrorInfo_GetCustomErrorInfo(This,pReplError)    \
  477.     (This)->lpVtbl -> GetCustomErrorInfo(This,pReplError)
  478.  
  479. #endif /* COBJMACROS */
  480.  
  481.  
  482. #endif     /* C style interface */
  483.  
  484. #endif     /* __IGetCustomErrorInfo_INTERFACE_DEFINED__ */
  485.  
  486. #endif // _REPLDIST_H_
  487.