Domino 9 und frühere Versionen > ND6: Entwicklung

ReplicationEntry

<< < (4/4)

TomLudwig:
Mir reichts. Ich geh jetzt heim. Ich denke ich muss einfach noch mal ne Nacht drüber schlafen. Ich weiß nicht an was es liegt. Ich poste noch mal meinen Code. Da ich nichts gefunden habe wo ich die Reihenfolge verändere... Bis montag...



Function GetReplHistory(db As NotesDatabase, sList() As String, lEntries&) As Integer
' This function returns the replication history for a database in the same format as you would see
' by selecting "File - Replication - History" (and clicking Server name radio button) in the Notes R5 client.
' The function has (3) parameters:
'
' 1. db (NotesDatabase) - [Input] Indicates the database you wish to open
' 2. sList (String array) - [Output] Returns array of strings that will hold the formatted history
' 3. lEntries (Long) - [Output] Returns the number of entries returned from the NSFDbGetReplHistorySummary call
   
' The function itself returns an integer. If no errors are found, it returns a 0. Otherwise, it returns the error
' code returned by the Notes API.
   Dim hDb&, hLock&, hSummary&
   Dim nLoop%, cbReturn%, nPos%, nRetCode%
   Dim sPath$, sHold$, sRepTime$, sTemp$, sServer$, sFileName$
   Dim summary As REPLHIST_SUMMARY
   Dim entry() As HIST_ENTRY
   Dim nm As NotesName
   
' what to return if no errors are found
   GetReplHistory=0
   
' prepare a string for API call
   sPath$=Space(MAXPATH)
   
' create an API-friendly path to the db and open it
   OSPathNetConstruct "", db.Server, db.FilePath, sPath$
   nRetCode%=NSFDbOpen(sPath$, hDb&)
   
   If nRetCode% <> 0 Then
      GetReplHistory = nRetCode%
   Else
      
' get handle to replication history summary (sorted by server name)       
      
      nRetCode%=NSFDbGetReplHistorySummary(hDb&, 2, hSummary&, lEntries&)
      
      'nRetCode%=NSFDbGetReplHistorySummary(hDb&, 0, hSummary&, lEntries&)
      
      If nRetCode% <> 0 Then
         GetReplHistory = nRetCode%
      Else
         
' process only if there are entries in the history summary
         If lEntries& > 0 Then
            Redim entry(lEntries& - 1)
            sRepTime$=Space(MAXALPHATIMEDATE + 1)
            
' lock down the handle to the history summary so we can get at the data
            hLock&=OSLockObject(hSummary&)
            
            For nLoop%=0 To lEntries&-1
' extract replication history by looping over the array of REPLHIST_SUMMARY structs
               CopyMemory summary, hLock&, Lenb(summary)
               
' convert Notes TIMEDATE to a legible text string for replication time
               ConvertTIMEDATEToText 0, 0, summary.ReplicationTime, sRepTime$, MAXALPHATIMEDATE, cbReturn%
               entry(nLoop%).RepTime=Left$(sRepTime$, cbReturn%)
               
' get replication direction
               Select Case summary.Direction
               Case DIRECTION_NEVER
                  entry(nLoop%).Direction="Nie Empfangen"
                  
               Case DIRECTION_SEND
                  entry(nLoop%).Direction="Senden"
                  
               Case DIRECTION_RECEIVE
                  entry(nLoop%).Direction="Empfangen"
                  
               End Select
               
' advance offset to next REPLHIST_SUMMARY struct
               hLock&=hLock&+Lenb(summary)
            Next
            
' as server/filenames are not part of the REPLHIST_SUMMARY struct, but rather at the end of the
' array of these structs, we'll need to grab this info one char at a time (for each entry we find) in the
' format: CN=ServerA/O=OrgA!!myfile.nsf/0CN=ServerB/O=OrgAA!!myfile.nsf/0, etc.
            sHold$=""
            sTemp$=String$(1, 0)
            nLoop%=0
            Do While nLoop% < lEntries&
               CopyMemoryStr sTemp$, hLock&, 1
               If sTemp$ = Chr$(0) Then
' parse out server and filename
                  nPos%=Instr(1, sHold$, "!!")
                  entry(nLoop%).ServerName=Left$(sHold$, nPos%-1)
                  entry(nLoop%).FileName=Right$(sHold$, Len(sHold$)-nPos%-1)
                  sHold$=""
                  nLoop%=nLoop% + 1
               Else
' build the string one char at a time
                  sHold$=sHold$ & sTemp$
               End If
               
' advance the offset
               hLock& = hLock& + 1
            Loop
            
' release the lock on the history summary handle once we're done with it
            OSUnlockObject(hSummary&)
            
            Redim sList(lEntries&-1)
            For nLoop%=0 To lEntries&-1
' populate the array of entries to return to the caller
               Set nm=New NotesName(entry(nLoop%).ServerName)
               sList(nLoop%)=Trim$(entry(nLoop%).RepTime & "°~°" & entry(nLoop%).Direction & "°~°" & nm.Abbreviated & "°~°" & entry(nLoop%).FileName)               
            Next
            
         End If
         
      End If
      
' free any open handles to the history summary and/or the db
      If hSummary& <> 0 Then OSMemFree hSummary&
      If hDb& <> 0 Then NSFDbClose hDb&
   End If
End Function







               nReturn%=GetReplHistory(check_db, sList, lEntries&)         ' Protokoll holen sortiert nach dem Servernamen               
               If nReturn% = 0 Then                                             ' Falls kein Fehler vorlag --> ins Log schreiben
                  For nCt%=0 To lEntries&-1
                     exp_entries = Evaluate(|@Explode("| & sList(nCt%) & |"; "°~°")|)      ' String auseinandern nehmen und in Felder schreiben
                     Call log_date.AppendToTextList(exp_entries(0))
                     Call log_action.AppendToTextList(exp_entries(1))
                     Call log_server.AppendToTextList(exp_entries(2))
                     Call log_file.AppendToTextList(exp_entries(3))
                  Next      

Navigation

[0] Themen-Index

[*] Vorherige Sete

Zur normalen Ansicht wechseln