home *** CD-ROM | disk | FTP | other *** search
/ Magazyn Internet 2000 May / MICD_2000_05.iso / CBuilder5 / INSTALL / DATA1.CAB / Program_Built_Files / Include / sqlres.h < prev    next >
C/C++ Source or Header  |  2000-02-01  |  12KB  |  238 lines

  1. ////////////////////////////////////////////////////////////////////////////////////////
  2. // Header file for Replication Custom Resolver C/C++ Client Component Object interfaces.
  3. // Copyright 1994-1995 Microsoft Corporation.
  4. /////////////////////////////////////////////////////////////////////////////////////////
  5.  
  6. #ifndef __SQLRES_H__
  7. #pragma option push -b -a8 -pc -A- /*P_O_Push*/
  8. #define __SQLRES_H__
  9.  
  10. typedef void FAR * HENV;
  11.  
  12. typedef enum {
  13.     REPOLEDataSource_Native     = 0x0000,    // Native SQL Server
  14.     REPOLEDataSource_ODBC         = 0x0001,    // ODBC DataSource
  15.     REPOLEDataSource_Jet         = 0x0002,    // Jet DataSource
  16.     REPOLEDataSource_OLEDB        = 0x0003
  17. } REPOLE_DATASOURCE_TYPE;
  18.  
  19. typedef enum {
  20.     REPOLESecurity_Min             = 0,                
  21.     REPOLESecurity_Normal         = 0,
  22.     REPOLESecurity_Integrated     = 1,
  23.     REPOLESecurity_Mixed         = 2,
  24.     REPOLESecurity_Max             = 2,
  25.     REPOLESecurity_Invalid        = -1
  26. } REPOLE_SECURITY_TYPE;
  27.  
  28. // NOTE:  All publisher action bitmasks are same as correspording
  29. // subscriber bitmask shifted left 16 bytes...  Please don't break this
  30. // convention for existing #defines.
  31.  
  32. typedef enum {
  33.     REPOLEChange_SubscriberInsert                        = 0x00000001,
  34.     REPOLEChange_PublisherInsert                        = 0x00010000,
  35.  
  36.      REPOLEChange_SubscriberDelete_NoConflict            = 0x00000002,
  37.      REPOLEChange_PublisherDelete_NoConflict                = 0x00020000,
  38.      REPOLEChange_SubscriberSystemDelete                    = 0x00000004,
  39.      REPOLEChange_PublisherSystemDelete                    = 0x00040000,
  40.      REPOLEChange_SubscriberDelete_Conflict                = 0x00000008,
  41.      REPOLEChange_PublisherDelete_Conflict                = 0x00080000,
  42.      REPOLEChange_SubscriberRemoveFromPartial            = 0x00000010,
  43.      REPOLEChange_PublisherRemoveFromPartial                = 0x00100000,
  44.  
  45.      REPOLEChange_SubscriberUpdate_NoConflict            = 0x00000020,
  46.      REPOLEChange_PublisherUpdate_NoConflict                = 0x00200000,
  47.      REPOLEChange_SubscriberUpdate_ConflictWithDelete    = 0x00000040,
  48.      REPOLEChange_PublisherUpdate_ConflictWithDelete        = 0x00400000,
  49.      REPOLEChange_SubscriberUpdate_ConflictColTrack        = 0x00000080,
  50.      REPOLEChange_PublisherUpdate_ConflictColTrack        = 0x00800000,
  51.      REPOLEChange_SubscriberUpdate_ConflictNoColTrack    = 0x00000100,
  52.      REPOLEChange_PublisherUpdate_ConflictNoColTrack        = 0x01000000,
  53.  
  54.  
  55.      REPOLEChange_UploadInsertFailed                        = 0x00000200,
  56.      REPOLEChange_DownloadInsertFailed                    = 0x02000000,
  57.      REPOLEChange_UploadDeleteFailed                        = 0x00000400,
  58.      REPOLEChange_DownloadDeleteFailed                    = 0x04000000,
  59.      REPOLEChange_UploadUpdateFailed                        = 0x00000800,
  60.      REPOLEChange_DownloadUpdateFailed                    = 0x08000000
  61.     
  62. } REPOLE_CHANGE_TYPE;    
  63.  
  64. #define REPOLEUpdateConflicts (REPOLEChange_SubscriberUpdate_ConflictColTrack | REPOLEChange_PublisherUpdate_ConflictColTrack \
  65.     | REPOLEChange_SubscriberUpdate_ConflictNoColTrack | REPOLEChange_PublisherUpdate_ConflictNoColTrack)
  66.  
  67. #define REPOLEAllConflicts (REPOLEChange_SubscriberDelete_Conflict | REPOLEChange_PublisherDelete_Conflict \
  68.     | REPOLEChange_SubscriberUpdate_ConflictWithDelete | REPOLEChange_PublisherUpdate_ConflictWithDelete \
  69.     | REPOLEUpdateConflicts)
  70.     
  71. #define REPOLEAllErrors (REPOLEChange_UploadInsertFailed | REPOLEChange_DownloadInsertFailed \
  72.     | REPOLEChange_UploadDeleteFailed | REPOLEChange_DownloadDeleteFailed \
  73.     | REPOLEChange_UploadUpdateFailed | REPOLEChange_DownloadUpdateFailed)
  74. #define REPOLEAllNonConflicts (REPOLEChange_SubscriberInsert | REPOLEChange_PublisherInsert \
  75.     | REPOLEChange_SubscriberDelete_NoConflict | REPOLEChange_PublisherDelete_NoConflict \
  76.     | REPOLEChange_SubscriberSystemDelete | REPOLEChange_PublisherSystemDelete \
  77.     | REPOLEChange_SubscriberRemoveFromPartial | REPOLEChange_SubscriberUpdate_NoConflict \
  78.     | REPOLEChange_PublisherUpdate_NoConflict)
  79. #define REPOLEAllChanges (REPOLEAllConflicts | REPOLEAllErrors | REPOLEAllNonConflicts)
  80.  
  81. typedef enum {
  82.     REPOLEConflict_Min                        = 1,
  83.     REPOLEConflict_UpdateConflict            = 1,
  84.     REPOLEConflict_ColumnUpdateConflict        = 2,
  85.     REPOLEConflict_UpdateDeleteWinsConflict    = 3,
  86.     REPOLEConflict_UpdateWinsDeleteConflict    = 4,
  87.      REPOLEConflict_UploadInsertFailed        = 5,
  88.      REPOLEConflict_DownloadInsertFailed        = 6,
  89.      REPOLEConflict_UploadDeleteFailed        = 7,
  90.      REPOLEConflict_DownloadDeleteFailed        = 8,
  91.      REPOLEConflict_UploadUpdateFailed        = 9,
  92.      REPOLEConflict_DownloadUpdateFailed        = 10,
  93.     REPOLEConflict_Max                        = 10
  94. } REPOLE_CONFLICT_TYPE;
  95.  
  96. typedef enum {
  97.     REPOLEColumn_NotUpdated                     = 0x0001,    // No updates to column or data values match
  98.     REPOLEColumn_UpdatedNoConflict            = 0x0002,    // Column updated at src, no column level conflict
  99.     REPOLEColumn_UpdatedWithConflict        = 0x0003,    // Column updated at src, conflicts with change at destination
  100.     REPOLEColumn_DifferNoTrack                = 0x0004    // No column tracking info, data values are different
  101. } REPOLE_COLSTATUS_TYPE;    
  102.  
  103. typedef enum {
  104.     REPOLEPriority_Source        = 0x0001,    // The source has the higher priority
  105.     REPOLEPriority_Destination     = 0x0002,    // The destination has the higher priority
  106.     REPOLEPriority_Equal        = 0x0003    // Source and destination have equal priority
  107. } REPOLE_PRIORITY_TYPE;    
  108.  
  109.  
  110. /**** Implemented by the Reconciler ***/
  111. #undef  INTERFACE
  112. #define INTERFACE IConnectionInfo
  113. DECLARE_INTERFACE_(IConnectionInfo, IUnknown)
  114. {
  115.        //*** IUnknown methods
  116.        STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID *ppvObj) PURE;
  117.        STDMETHOD_(ULONG,AddRef) (THIS)  PURE;
  118.        STDMETHOD_(ULONG,Release) (THIS) PURE;
  119.  
  120.        /* IConnectionInfo Get methods */
  121.     STDMETHOD(GetConnectName)(THIS_ LPTSTR ConnectName, DWORD cbConnectName) PURE;
  122.     STDMETHOD(GetServerName)(THIS_ LPTSTR ServerName, DWORD cbServerName) PURE;
  123.     STDMETHOD(GetHostName)(THIS_ LPTSTR HostName, DWORD cbHostName) PURE;
  124.     STDMETHOD(GetServerRole)(THIS_ LPTSTR ServerRole, DWORD cbServerRole) PURE;
  125.     STDMETHOD(GetInternetAddress)(THIS_ LPTSTR InternetAddress, DWORD cbInternetAddress) PURE;
  126.     STDMETHOD(GetInternetNetwork)(THIS_ LPTSTR InternetNetwork, DWORD cbInternetNetwork) PURE;
  127.     STDMETHOD(GetDatabase)(THIS_ LPTSTR Database, DWORD cbDatabase) PURE;
  128.     STDMETHOD(GetDatabaseStatus)(THIS_ LONG *plDatabaseStatus) PURE;
  129.     STDMETHOD(GetDatasourcePath)(THIS_ LPTSTR DatasourcePath, DWORD cbDatasourcePath) PURE;
  130.     STDMETHOD(GetDataSourceType)(THIS_ REPOLE_DATASOURCE_TYPE FAR * pRetValue) PURE;
  131.     STDMETHOD(GetSecurityMode)(THIS_ REPOLE_SECURITY_TYPE FAR * pRetValue) PURE;
  132.     STDMETHOD(GetLogin)(THIS_ LPTSTR Login, DWORD cbLogin) PURE;
  133.     STDMETHOD(GetPassword)(THIS_ LPTSTR Password, DWORD cbPassword) PURE;
  134.     STDMETHOD(GetODBCEnvironmentHandle)(THIS_ HENV * phenv) PURE;
  135.     STDMETHOD(GetLoginTimeout)(THIS_ LONG * plLoginTimeout) PURE;
  136.     STDMETHOD(GetQueryTimeout)(THIS_ LONG * plQueryTimeout) PURE;
  137.     STDMETHOD(GetPacketSize)(THIS_ unsigned long * pusPacketSize) PURE;
  138.     STDMETHOD(GetApplicationName)(THIS_ LPTSTR ApplicationName, DWORD cbApplicationName) PURE;
  139.     STDMETHOD(GetProviderName)(THIS_ LPTSTR ProviderName, DWORD cbProviderName) PURE;
  140.     STDMETHOD(GetDatasource)(THIS_ LPTSTR Datasource, DWORD cbDatasource) PURE;
  141.     STDMETHOD(GetLocation)(THIS_ LPTSTR Location, DWORD cbLocation) PURE;
  142.     STDMETHOD(GetProviderString)(THIS_ LPTSTR ProviderString, DWORD cbProviderString) PURE;
  143.     STDMETHOD(GetCatalog)(THIS_ LPTSTR Catalog, DWORD cbCatalog) PURE;
  144.     STDMETHOD(GetDBCreatedThisSession)(THIS_ BOOL *pbDBCreatedThisSession) PURE;
  145.  
  146.        /* IConnectionInfo Set methods (not accessible to third part resolver) */
  147.     STDMETHOD(SetConnectName)(THIS_ LPCTSTR ConnectName) PURE;
  148.     STDMETHOD(SetServerName)(THIS_ LPCTSTR ServerName) PURE;
  149.     STDMETHOD(SetHostName)(THIS_ LPCTSTR HostName) PURE;
  150.     STDMETHOD(SetServerRole)(THIS_ LPCTSTR ServerRole) PURE;
  151.     STDMETHOD(SetInternetAddress)(THIS_ LPCTSTR InternetAddress) PURE;
  152.     STDMETHOD(SetInternetNetwork)(THIS_ LPCTSTR InternetNetwork) PURE;
  153.     STDMETHOD(SetDatabase)(THIS_ LPCTSTR Database) PURE;
  154.     STDMETHOD(SetDatabaseStatus)(THIS_ LONG lDatabaseStatus) PURE;
  155.     STDMETHOD(SetDatasourcePath)(THIS_ LPCTSTR DatasourcePath) PURE;
  156.     STDMETHOD(SetDataSourceType)(THIS_ REPOLE_DATASOURCE_TYPE DataSourceType) PURE;
  157.     STDMETHOD(SetSecurityMode)(THIS_ REPOLE_SECURITY_TYPE SecurityMode) PURE;
  158.     STDMETHOD(SetLogin)(THIS_ LPCTSTR Login) PURE;
  159.     STDMETHOD(SetPassword)(THIS_ LPCTSTR Password) PURE;
  160.     STDMETHOD(SetODBCEnvironmentHandle)(THIS_ HENV henv) PURE;
  161.     STDMETHOD(SetLoginTimeout)(THIS_ LONG lLoginTimeout) PURE;
  162.     STDMETHOD(SetQueryTimeout)(THIS_ LONG lQueryTimeout) PURE;
  163.     STDMETHOD(SetPacketSize)(THIS_ unsigned long usPacketSize) PURE;
  164.     STDMETHOD(SetApplicationName)(THIS_ LPCTSTR ApplicationName) PURE;
  165.     STDMETHOD(SetProviderName)(THIS_ LPCTSTR ProviderName) PURE;
  166.     STDMETHOD(SetDatasource)(THIS_ LPCTSTR Datasource) PURE;
  167.     STDMETHOD(SetLocation)(THIS_ LPCTSTR Location) PURE;
  168.     STDMETHOD(SetProviderString)(THIS_ LPCTSTR ProviderString) PURE;
  169.     STDMETHOD(SetCatalog)(THIS_ LPCTSTR Catalog) PURE;
  170.     STDMETHOD(SetDBCreatedThisSession)(THIS_ BOOL bDBCreatedThisSession) PURE;
  171.     STDMETHOD(SetBcpBatchSize)(THIS_ LONG lBcpBatchSize) PURE;
  172.     STDMETHOD(GetBcpBatchSize)(THIS_ LONG * plBcpBatchSize) PURE;
  173. };
  174.  
  175.  
  176. /**** Implemented by the Reconciler ***/
  177. #undef  INTERFACE
  178. #define INTERFACE IReplRowChange
  179. DECLARE_INTERFACE_(IReplRowChange, IUnknown)
  180. {
  181.        //*** IUnknown methods
  182.        STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID *ppvObj) PURE;
  183.        STDMETHOD_(ULONG,AddRef) (THIS)  PURE;
  184.        STDMETHOD_(ULONG,Release) (THIS) PURE;
  185.  
  186.        /* IReplRowChange methods */
  187.     STDMETHOD(GetTableName)(THIS_ LPTSTR pTableName, DWORD cbTableName) PURE;
  188.     STDMETHOD(GetRowIdentifier)(THIS_ LPGUID pRowGuid) PURE;
  189.     STDMETHOD(GetResolverProcedureName)(LPTSTR pResolverProcedureName, DWORD cbResolverProcedureName) PURE;
  190.     STDMETHOD(GetNumColumns)(THIS_ LPDWORD pdwColumnCount) PURE;
  191.     STDMETHOD(GetChangeType)(THIS_ REPOLE_CHANGE_TYPE * pChangeType) PURE;
  192.     STDMETHOD(GetColumnStatus)(THIS_ DWORD ColumnId, REPOLE_COLSTATUS_TYPE FAR *pColStatus) PURE;
  193.     STDMETHOD(GetColumnName)(THIS_ DWORD ColumnId, LPTSTR pColumnName, DWORD cbColumnName) PURE;
  194.     STDMETHOD(GetColumnDatatype)(DWORD ColumnId, LPLONG plDataType) PURE;
  195.     STDMETHOD(GetSourceColumnValue)(THIS_ DWORD ColumnId, LPVOID pvBuffer, DWORD cbBufferMax, LPDWORD pcbBufferActual) PURE;
  196.     STDMETHOD(GetDestinationColumnValue)(DWORD ColumnId, LPVOID pvBuffer, DWORD cbBufferMax, LPDWORD pcbBufferActual) PURE;
  197.     STDMETHOD(GetPriorityWinner)(THIS_ REPOLE_PRIORITY_TYPE FAR * pPriorityWinner) PURE;
  198.     STDMETHOD(GetSourceConnectionInfo)(THIS_ IConnectionInfo ** ppSourceConnectionInfo, LPBOOL pfIsPublisher) PURE;
  199.     STDMETHOD(GetDestinationConnectionInfo)(THIS_ IConnectionInfo ** ppDestinationConnectionInfo, LPBOOL pfIsPublisher) PURE;
  200.     STDMETHOD(DeleteRow)(THIS) PURE;
  201.     STDMETHOD(CopyRowFromSource)(THIS) PURE;
  202.     STDMETHOD(CopyColumnFromSource)(THIS_ DWORD ColumnId) PURE;
  203.     STDMETHOD(SetColumn)(THIS_ DWORD ColumnId, LPVOID pvBuffer, DWORD cbBuffer) PURE;
  204.     STDMETHOD(UpdateRow)(THIS) PURE;
  205.     STDMETHOD(InsertRow)(THIS) PURE;
  206.     STDMETHOD(LogConflict)(THIS_ BOOL bLogSourceConflict, REPOLE_CONFLICT_TYPE ConflictType, BOOL bOnlyLogIfUpdater, LPTSTR pszConflictMessage = NULL) PURE;
  207.     STDMETHOD(LogError)(THIS_ REPOLE_CHANGE_TYPE ChangeType, LPTSTR pszErrorMessage = NULL) PURE;
  208.     STDMETHOD(GetErrorInfo)(THIS_ DWORD *pErrCode, LPTSTR pErrText) PURE;
  209.     STDMETHOD(DoDummyUpdate)(THIS_ BOOL fUpLineage, BOOL fAtPublisher) PURE;
  210.     STDMETHOD(GetTableOwnerName)(THIS_ LPTSTR pOwnerName, DWORD cbOwnerName) PURE;
  211.     STDMETHOD(GetRowGuidColName)(THIS_ LPTSTR pRowGuidColName, DWORD cbRowGuidColName) PURE;
  212. };
  213.  
  214.  
  215.  
  216. /**** Default implemention by the Reconciler, can be provided by the ISV ***/
  217. #undef  INTERFACE
  218. #define INTERFACE ICustomResolver
  219. DECLARE_INTERFACE_(ICustomResolver, IUnknown)
  220. {
  221.        //*** IUnknown methods
  222.        STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID *ppvObj) PURE;
  223.        STDMETHOD_(ULONG,AddRef) (THIS)  PURE;
  224.        STDMETHOD_(ULONG,Release) (THIS) PURE;
  225.  
  226.        /* ICustomResolver methods */
  227.     STDMETHOD(Reconcile)(THIS_
  228.                         IReplRowChange *pRowChange,
  229.                         DWORD dwFlags,
  230.                         PVOID pvReserved) PURE;
  231.     STDMETHOD(GetHandledStates) (THIS_
  232.                         DWORD    *pResolverBm) PURE;
  233. };
  234.  
  235. #pragma option pop /*P_O_Pop*/
  236. #endif   /* ! __SQLRES_H__ */
  237.  
  238.