C API - Set "Enable Scheduled Replication"

Hi,

I’d really, really like to know if it’s possible to enable and disable the property “Scheduled Replication is Enabled” in the database replication settings!

As yet I’ve not been able to locate the correct replication flag. I’ve identified REPLFLG_DISABLE (0x0004 or &h4) and REPLFLG_NEVER_REPLICATE (0x0100 or &h0100) from the DBREPLICAINFO but neither seem to the correct. The first is the property for “Temporarily disable replication for this replica” and the second seems to be a hidden database attribute which can be used to enforce disabled replication.

We’re trying to ensure that replication is enabled for a particular database. I’ve attached my current code that can set the REPLFLG_DISABLE flag, but as I mentioned this isn’t the right one.

I have a terrible feeling there is no flag! :frowning:

Many thanks

----------------CODE-----------------

Type TIMEDATE

Innard1 As Long

Innard2 As Long

End Type

Type DBREPLICAINFO

ID As TIMEDATE

flags As Integer

CutoffInterval As Integer

Cutoff As TIMEDATE

End Type

Declare Function W32_NSFDbOpen Lib “nnotes.dll” Alias “NSFDbOpen” ( Byval dbName As String, hDb As Long) As Integer

Declare Function W32_NSFDbClose Lib “nnotes.dll” Alias “NSFDbClose” ( Byval hDb As Long) As Integer

Declare Function W32_NSFDbReplicaInfoGet Lib “nnotes.dll” Alias “NSFDbReplicaInfoGet”(Byval hDB As Long, retReplicationInfo As DBREPLICAINFO) As Integer

Declare Function W32_NSFDbReplicaInfoSet Lib “nnotes.dll” Alias “NSFDbReplicaInfoSet”(Byval hDB As Long, retReplicationInfo As DBREPLICAINFO) As Integer

Declare Function W32_OSLockObject Lib “nnotes.dll” Alias “OSLockObject” ( Byval handle) As Long

Declare Sub OSUnlockObject Lib “NNOTES.DLL” Alias “OSUnlockObject” (Byval handle)

Declare Sub W32_OSMemFree Lib “NNOTES.DLL” Alias “OSMemFree” (Byval handle)

Class NotesReplicationSettings

Private hDb As Long

Private retReplicationInfo As DBREPLICAINFO

Private prvdb As NotesDatabase

Private flgDBExist As Integer



Sub Delete

	If hDb <> 0 Then Call W32_NSFDbClose(hDb)

End Sub



Sub New (inpNotesDatabase As NotesDatabase)

	

	Dim sDatabase As String

	Dim uaesession As New notessession

	Dim rc As Integer

	

	Me.flgDBExist = False

	

	'Get a valid NotesDatabase to the specified database

	If inpNotesDatabase Is Nothing Then

		Error 14104, "NotesUserActivity: Database Object is invalid"

		Exit Sub

	End If

	

	Set prvdb = New NotesDatabase(inpNotesDatabase.Server, inpNotesDatabase.FilePath)

	

	If (prvdb.Server = "") Or (uaesession.IsOnServer) Then

		sdatabase = prvdb.filepath

	Else

		sdatabase = prvdb.server + "!!" + prvdb.filepath

	End If

	

	'Open the target database

	rc = W32_NSFDbOpen(sDatabase,Me.hDb)

	If rc <> 0 Then

		Me.flgDBExist = False

	End If

	

	'Set the Replica information

	rc = W32_NSFDbReplicaInfoGet(Me.hDb, Me.retReplicationInfo)

	If rc <> 0 Then

		Me.flgDBExist = False

	End If

	Me.flgDBExist = True

End Sub



Public Function DBExist As Integer

	DBExist = Me.flgDBExist

End Function



Public Function Parent As NotesDatabase

	Set Parent = prvdb

End Function



Public Function SetDisableReplica(sFlag As Integer) As Integer

	Dim puActivity As Long

	

	If Not Me.flgDBExist Then

		Error 14104, "Notes DB not opened"

		SetDisableReplica = False

		Exit Function

	End If

	

	Print Me.retReplicationInfo.flags

	

	'REPLFLG_NEVER_REPLICATE		0x0100 (Temporarily disable replication)		

	Me.retReplicationInfo.flags = (Me.retReplicationInfo.flags Or Not &h4)

	

	rc = W32_NSFDbReplicaInfoSet(Me.hDb, Me.retReplicationInfo)

	If rc <> 0 Then

		Me.flgDBExist = False

	End If

	

End Function

End Class

Subject: C API - Set “Enable Scheduled Replication”

FYI. There is currently no way to do this with the API toolkits. I mentioned this to one of the API guys at IBM during LotusSphere and they said that they will add the function to the API for the next release.