home *** CD-ROM | disk | FTP | other *** search
- ////////////////////////////////////////////////////////////////////////////////////////
- // Header file for Replication Custom Resolver C/C++ Client Component Object interfaces.
- // Copyright 1994-1995 Microsoft Corporation.
- /////////////////////////////////////////////////////////////////////////////////////////
-
- #ifndef __SQLRES_H__
- #pragma option push -b -a8 -pc -A- /*P_O_Push*/
- #define __SQLRES_H__
-
- typedef void FAR * HENV;
-
- typedef enum {
- REPOLEDataSource_Native = 0x0000, // Native SQL Server
- REPOLEDataSource_ODBC = 0x0001, // ODBC DataSource
- REPOLEDataSource_Jet = 0x0002, // Jet DataSource
- REPOLEDataSource_OLEDB = 0x0003
- } REPOLE_DATASOURCE_TYPE;
-
- typedef enum {
- REPOLESecurity_Min = 0,
- REPOLESecurity_Normal = 0,
- REPOLESecurity_Integrated = 1,
- REPOLESecurity_Mixed = 2,
- REPOLESecurity_Max = 2,
- REPOLESecurity_Invalid = -1
- } REPOLE_SECURITY_TYPE;
-
- // NOTE: All publisher action bitmasks are same as correspording
- // subscriber bitmask shifted left 16 bytes... Please don't break this
- // convention for existing #defines.
-
- typedef enum {
- REPOLEChange_SubscriberInsert = 0x00000001,
- REPOLEChange_PublisherInsert = 0x00010000,
-
- REPOLEChange_SubscriberDelete_NoConflict = 0x00000002,
- REPOLEChange_PublisherDelete_NoConflict = 0x00020000,
- REPOLEChange_SubscriberSystemDelete = 0x00000004,
- REPOLEChange_PublisherSystemDelete = 0x00040000,
- REPOLEChange_SubscriberDelete_Conflict = 0x00000008,
- REPOLEChange_PublisherDelete_Conflict = 0x00080000,
- REPOLEChange_SubscriberRemoveFromPartial = 0x00000010,
- REPOLEChange_PublisherRemoveFromPartial = 0x00100000,
-
- REPOLEChange_SubscriberUpdate_NoConflict = 0x00000020,
- REPOLEChange_PublisherUpdate_NoConflict = 0x00200000,
- REPOLEChange_SubscriberUpdate_ConflictWithDelete = 0x00000040,
- REPOLEChange_PublisherUpdate_ConflictWithDelete = 0x00400000,
- REPOLEChange_SubscriberUpdate_ConflictColTrack = 0x00000080,
- REPOLEChange_PublisherUpdate_ConflictColTrack = 0x00800000,
- REPOLEChange_SubscriberUpdate_ConflictNoColTrack = 0x00000100,
- REPOLEChange_PublisherUpdate_ConflictNoColTrack = 0x01000000,
-
-
- REPOLEChange_UploadInsertFailed = 0x00000200,
- REPOLEChange_DownloadInsertFailed = 0x02000000,
- REPOLEChange_UploadDeleteFailed = 0x00000400,
- REPOLEChange_DownloadDeleteFailed = 0x04000000,
- REPOLEChange_UploadUpdateFailed = 0x00000800,
- REPOLEChange_DownloadUpdateFailed = 0x08000000
-
- } REPOLE_CHANGE_TYPE;
-
- #define REPOLEUpdateConflicts (REPOLEChange_SubscriberUpdate_ConflictColTrack | REPOLEChange_PublisherUpdate_ConflictColTrack \
- | REPOLEChange_SubscriberUpdate_ConflictNoColTrack | REPOLEChange_PublisherUpdate_ConflictNoColTrack)
-
- #define REPOLEAllConflicts (REPOLEChange_SubscriberDelete_Conflict | REPOLEChange_PublisherDelete_Conflict \
- | REPOLEChange_SubscriberUpdate_ConflictWithDelete | REPOLEChange_PublisherUpdate_ConflictWithDelete \
- | REPOLEUpdateConflicts)
-
- #define REPOLEAllErrors (REPOLEChange_UploadInsertFailed | REPOLEChange_DownloadInsertFailed \
- | REPOLEChange_UploadDeleteFailed | REPOLEChange_DownloadDeleteFailed \
- | REPOLEChange_UploadUpdateFailed | REPOLEChange_DownloadUpdateFailed)
- #define REPOLEAllNonConflicts (REPOLEChange_SubscriberInsert | REPOLEChange_PublisherInsert \
- | REPOLEChange_SubscriberDelete_NoConflict | REPOLEChange_PublisherDelete_NoConflict \
- | REPOLEChange_SubscriberSystemDelete | REPOLEChange_PublisherSystemDelete \
- | REPOLEChange_SubscriberRemoveFromPartial | REPOLEChange_SubscriberUpdate_NoConflict \
- | REPOLEChange_PublisherUpdate_NoConflict)
- #define REPOLEAllChanges (REPOLEAllConflicts | REPOLEAllErrors | REPOLEAllNonConflicts)
-
- typedef enum {
- REPOLEConflict_Min = 1,
- REPOLEConflict_UpdateConflict = 1,
- REPOLEConflict_ColumnUpdateConflict = 2,
- REPOLEConflict_UpdateDeleteWinsConflict = 3,
- REPOLEConflict_UpdateWinsDeleteConflict = 4,
- REPOLEConflict_UploadInsertFailed = 5,
- REPOLEConflict_DownloadInsertFailed = 6,
- REPOLEConflict_UploadDeleteFailed = 7,
- REPOLEConflict_DownloadDeleteFailed = 8,
- REPOLEConflict_UploadUpdateFailed = 9,
- REPOLEConflict_DownloadUpdateFailed = 10,
- REPOLEConflict_Max = 10
- } REPOLE_CONFLICT_TYPE;
-
- typedef enum {
- REPOLEColumn_NotUpdated = 0x0001, // No updates to column or data values match
- REPOLEColumn_UpdatedNoConflict = 0x0002, // Column updated at src, no column level conflict
- REPOLEColumn_UpdatedWithConflict = 0x0003, // Column updated at src, conflicts with change at destination
- REPOLEColumn_DifferNoTrack = 0x0004 // No column tracking info, data values are different
- } REPOLE_COLSTATUS_TYPE;
-
- typedef enum {
- REPOLEPriority_Source = 0x0001, // The source has the higher priority
- REPOLEPriority_Destination = 0x0002, // The destination has the higher priority
- REPOLEPriority_Equal = 0x0003 // Source and destination have equal priority
- } REPOLE_PRIORITY_TYPE;
-
-
- /**** Implemented by the Reconciler ***/
- #undef INTERFACE
- #define INTERFACE IConnectionInfo
- DECLARE_INTERFACE_(IConnectionInfo, IUnknown)
- {
- //*** IUnknown methods
- STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID *ppvObj) PURE;
- STDMETHOD_(ULONG,AddRef) (THIS) PURE;
- STDMETHOD_(ULONG,Release) (THIS) PURE;
-
- /* IConnectionInfo Get methods */
- STDMETHOD(GetConnectName)(THIS_ LPTSTR ConnectName, DWORD cbConnectName) PURE;
- STDMETHOD(GetServerName)(THIS_ LPTSTR ServerName, DWORD cbServerName) PURE;
- STDMETHOD(GetHostName)(THIS_ LPTSTR HostName, DWORD cbHostName) PURE;
- STDMETHOD(GetServerRole)(THIS_ LPTSTR ServerRole, DWORD cbServerRole) PURE;
- STDMETHOD(GetInternetAddress)(THIS_ LPTSTR InternetAddress, DWORD cbInternetAddress) PURE;
- STDMETHOD(GetInternetNetwork)(THIS_ LPTSTR InternetNetwork, DWORD cbInternetNetwork) PURE;
- STDMETHOD(GetDatabase)(THIS_ LPTSTR Database, DWORD cbDatabase) PURE;
- STDMETHOD(GetDatabaseStatus)(THIS_ LONG *plDatabaseStatus) PURE;
- STDMETHOD(GetDatasourcePath)(THIS_ LPTSTR DatasourcePath, DWORD cbDatasourcePath) PURE;
- STDMETHOD(GetDataSourceType)(THIS_ REPOLE_DATASOURCE_TYPE FAR * pRetValue) PURE;
- STDMETHOD(GetSecurityMode)(THIS_ REPOLE_SECURITY_TYPE FAR * pRetValue) PURE;
- STDMETHOD(GetLogin)(THIS_ LPTSTR Login, DWORD cbLogin) PURE;
- STDMETHOD(GetPassword)(THIS_ LPTSTR Password, DWORD cbPassword) PURE;
- STDMETHOD(GetODBCEnvironmentHandle)(THIS_ HENV * phenv) PURE;
- STDMETHOD(GetLoginTimeout)(THIS_ LONG * plLoginTimeout) PURE;
- STDMETHOD(GetQueryTimeout)(THIS_ LONG * plQueryTimeout) PURE;
- STDMETHOD(GetPacketSize)(THIS_ unsigned long * pusPacketSize) PURE;
- STDMETHOD(GetApplicationName)(THIS_ LPTSTR ApplicationName, DWORD cbApplicationName) PURE;
- STDMETHOD(GetProviderName)(THIS_ LPTSTR ProviderName, DWORD cbProviderName) PURE;
- STDMETHOD(GetDatasource)(THIS_ LPTSTR Datasource, DWORD cbDatasource) PURE;
- STDMETHOD(GetLocation)(THIS_ LPTSTR Location, DWORD cbLocation) PURE;
- STDMETHOD(GetProviderString)(THIS_ LPTSTR ProviderString, DWORD cbProviderString) PURE;
- STDMETHOD(GetCatalog)(THIS_ LPTSTR Catalog, DWORD cbCatalog) PURE;
- STDMETHOD(GetDBCreatedThisSession)(THIS_ BOOL *pbDBCreatedThisSession) PURE;
-
- /* IConnectionInfo Set methods (not accessible to third part resolver) */
- STDMETHOD(SetConnectName)(THIS_ LPCTSTR ConnectName) PURE;
- STDMETHOD(SetServerName)(THIS_ LPCTSTR ServerName) PURE;
- STDMETHOD(SetHostName)(THIS_ LPCTSTR HostName) PURE;
- STDMETHOD(SetServerRole)(THIS_ LPCTSTR ServerRole) PURE;
- STDMETHOD(SetInternetAddress)(THIS_ LPCTSTR InternetAddress) PURE;
- STDMETHOD(SetInternetNetwork)(THIS_ LPCTSTR InternetNetwork) PURE;
- STDMETHOD(SetDatabase)(THIS_ LPCTSTR Database) PURE;
- STDMETHOD(SetDatabaseStatus)(THIS_ LONG lDatabaseStatus) PURE;
- STDMETHOD(SetDatasourcePath)(THIS_ LPCTSTR DatasourcePath) PURE;
- STDMETHOD(SetDataSourceType)(THIS_ REPOLE_DATASOURCE_TYPE DataSourceType) PURE;
- STDMETHOD(SetSecurityMode)(THIS_ REPOLE_SECURITY_TYPE SecurityMode) PURE;
- STDMETHOD(SetLogin)(THIS_ LPCTSTR Login) PURE;
- STDMETHOD(SetPassword)(THIS_ LPCTSTR Password) PURE;
- STDMETHOD(SetODBCEnvironmentHandle)(THIS_ HENV henv) PURE;
- STDMETHOD(SetLoginTimeout)(THIS_ LONG lLoginTimeout) PURE;
- STDMETHOD(SetQueryTimeout)(THIS_ LONG lQueryTimeout) PURE;
- STDMETHOD(SetPacketSize)(THIS_ unsigned long usPacketSize) PURE;
- STDMETHOD(SetApplicationName)(THIS_ LPCTSTR ApplicationName) PURE;
- STDMETHOD(SetProviderName)(THIS_ LPCTSTR ProviderName) PURE;
- STDMETHOD(SetDatasource)(THIS_ LPCTSTR Datasource) PURE;
- STDMETHOD(SetLocation)(THIS_ LPCTSTR Location) PURE;
- STDMETHOD(SetProviderString)(THIS_ LPCTSTR ProviderString) PURE;
- STDMETHOD(SetCatalog)(THIS_ LPCTSTR Catalog) PURE;
- STDMETHOD(SetDBCreatedThisSession)(THIS_ BOOL bDBCreatedThisSession) PURE;
- STDMETHOD(SetBcpBatchSize)(THIS_ LONG lBcpBatchSize) PURE;
- STDMETHOD(GetBcpBatchSize)(THIS_ LONG * plBcpBatchSize) PURE;
- };
-
-
- /**** Implemented by the Reconciler ***/
- #undef INTERFACE
- #define INTERFACE IReplRowChange
- DECLARE_INTERFACE_(IReplRowChange, IUnknown)
- {
- //*** IUnknown methods
- STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID *ppvObj) PURE;
- STDMETHOD_(ULONG,AddRef) (THIS) PURE;
- STDMETHOD_(ULONG,Release) (THIS) PURE;
-
- /* IReplRowChange methods */
- STDMETHOD(GetTableName)(THIS_ LPTSTR pTableName, DWORD cbTableName) PURE;
- STDMETHOD(GetRowIdentifier)(THIS_ LPGUID pRowGuid) PURE;
- STDMETHOD(GetResolverProcedureName)(LPTSTR pResolverProcedureName, DWORD cbResolverProcedureName) PURE;
- STDMETHOD(GetNumColumns)(THIS_ LPDWORD pdwColumnCount) PURE;
- STDMETHOD(GetChangeType)(THIS_ REPOLE_CHANGE_TYPE * pChangeType) PURE;
- STDMETHOD(GetColumnStatus)(THIS_ DWORD ColumnId, REPOLE_COLSTATUS_TYPE FAR *pColStatus) PURE;
- STDMETHOD(GetColumnName)(THIS_ DWORD ColumnId, LPTSTR pColumnName, DWORD cbColumnName) PURE;
- STDMETHOD(GetColumnDatatype)(DWORD ColumnId, LPLONG plDataType) PURE;
- STDMETHOD(GetSourceColumnValue)(THIS_ DWORD ColumnId, LPVOID pvBuffer, DWORD cbBufferMax, LPDWORD pcbBufferActual) PURE;
- STDMETHOD(GetDestinationColumnValue)(DWORD ColumnId, LPVOID pvBuffer, DWORD cbBufferMax, LPDWORD pcbBufferActual) PURE;
- STDMETHOD(GetPriorityWinner)(THIS_ REPOLE_PRIORITY_TYPE FAR * pPriorityWinner) PURE;
- STDMETHOD(GetSourceConnectionInfo)(THIS_ IConnectionInfo ** ppSourceConnectionInfo, LPBOOL pfIsPublisher) PURE;
- STDMETHOD(GetDestinationConnectionInfo)(THIS_ IConnectionInfo ** ppDestinationConnectionInfo, LPBOOL pfIsPublisher) PURE;
- STDMETHOD(DeleteRow)(THIS) PURE;
- STDMETHOD(CopyRowFromSource)(THIS) PURE;
- STDMETHOD(CopyColumnFromSource)(THIS_ DWORD ColumnId) PURE;
- STDMETHOD(SetColumn)(THIS_ DWORD ColumnId, LPVOID pvBuffer, DWORD cbBuffer) PURE;
- STDMETHOD(UpdateRow)(THIS) PURE;
- STDMETHOD(InsertRow)(THIS) PURE;
- STDMETHOD(LogConflict)(THIS_ BOOL bLogSourceConflict, REPOLE_CONFLICT_TYPE ConflictType, BOOL bOnlyLogIfUpdater, LPTSTR pszConflictMessage = NULL) PURE;
- STDMETHOD(LogError)(THIS_ REPOLE_CHANGE_TYPE ChangeType, LPTSTR pszErrorMessage = NULL) PURE;
- STDMETHOD(GetErrorInfo)(THIS_ DWORD *pErrCode, LPTSTR pErrText) PURE;
- STDMETHOD(DoDummyUpdate)(THIS_ BOOL fUpLineage, BOOL fAtPublisher) PURE;
- STDMETHOD(GetTableOwnerName)(THIS_ LPTSTR pOwnerName, DWORD cbOwnerName) PURE;
- STDMETHOD(GetRowGuidColName)(THIS_ LPTSTR pRowGuidColName, DWORD cbRowGuidColName) PURE;
- };
-
-
-
- /**** Default implemention by the Reconciler, can be provided by the ISV ***/
- #undef INTERFACE
- #define INTERFACE ICustomResolver
- DECLARE_INTERFACE_(ICustomResolver, IUnknown)
- {
- //*** IUnknown methods
- STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID *ppvObj) PURE;
- STDMETHOD_(ULONG,AddRef) (THIS) PURE;
- STDMETHOD_(ULONG,Release) (THIS) PURE;
-
- /* ICustomResolver methods */
- STDMETHOD(Reconcile)(THIS_
- IReplRowChange *pRowChange,
- DWORD dwFlags,
- PVOID pvReserved) PURE;
- STDMETHOD(GetHandledStates) (THIS_
- DWORD *pResolverBm) PURE;
- };
-
- #pragma option pop /*P_O_Pop*/
- #endif /* ! __SQLRES_H__ */
-
-