LogArchiveSnapshot Classe

Definizione

Rappresenta uno snapshot dell'istanza LogStore che può essere utilizzato per generare un archivio.Represents a snapshot of the LogStore instance that can be used to generate an archive.

public ref class LogArchiveSnapshot sealed
public sealed class LogArchiveSnapshot
type LogArchiveSnapshot = class
Public NotInheritable Class LogArchiveSnapshot
Ereditarietà
LogArchiveSnapshot

Esempi

Nell'esempio seguente viene illustrato come utilizzare la classe LogArchiveSnapshot per memorizzare un LogStorein un documento XML.The following example shows how to use the LogArchiveSnapshot class to archive a LogStore to an XML document.

class LogBackup
{ 
    static void ArchiveToXML(LogStore logStore, string fileName) 
    {  
        LogArchiveSnapshot snapshot = logStore.CreateLogArchiveSnapshot();
        
        XmlTextWriter writer = new XmlTextWriter(fileName, Encoding.ASCII);
        
        writer.WriteStartElement("logArchive");
        foreach(FileRegion region in snapshot.ArchiveRegions) 
        {
            writer.WriteStartElement("fileRegion"); 
            writer.WriteElementString("path", region.Path); 
            writer.WriteElementString("length", region.FileLength.ToString()); 
            writer.WriteElementString("offset", region.Offset.ToString()); 
            using(Stream dataStream = region.GetStream()) 
            { 
                byte[] data = new byte[dataStream.Length]; 
                dataStream.Read(data, 0, data.Length); 
                writer.WriteElementString("data", Convert.ToBase64String(data)); 
            }
            writer.WriteEndElement();
        }
        writer.WriteEndElement(); 
        writer.Close(); 
        logStore.SetArchiveTail(snapshot.LastSequenceNumber); 
        
    }
    static void RestoreFromXML(string fileName) 
    { 
        using(XmlTextReader reader = new XmlTextReader(fileName)) 
        {
            reader.ReadStartElement("logArchive"); 
            while(reader.IsStartElement()) 
            { 
                string path = reader.ReadElementString("path"); 
                long length = Int64.Parse(reader.ReadElementString("length")); 
                long offset = Int64.Parse(reader.ReadElementString("offset")); 
                string dataString = reader.ReadElementString("data"); 
                byte[] data = Convert.FromBase64String(dataString); 
                FileStream fileStream;
                using(fileStream = new FileStream(path, FileMode.OpenOrCreate, FileAccess.Write)) 
                { 
                    fileStream.SetLength(length); 
                    fileStream.Position = offset; fileStream.Write(data, 0, data.Length); 
                }
            } 
        reader.ReadEndElement(); 
        } 
    } 
}
Friend Class LogBackup
    Private Shared Sub ArchiveToXML(ByVal logStore As LogStore, ByVal fileName As String)
        Dim snapshot As LogArchiveSnapshot = logStore.CreateLogArchiveSnapshot()

        Dim writer As New XmlTextWriter(fileName, Encoding.ASCII)

        writer.WriteStartElement("logArchive")
        For Each region As FileRegion In snapshot.ArchiveRegions
            writer.WriteStartElement("fileRegion")
            writer.WriteElementString("path", region.Path)
            writer.WriteElementString("length", region.FileLength.ToString())
            writer.WriteElementString("offset", region.Offset.ToString())
            Using dataStream As Stream = region.GetStream()
                Dim data(dataStream.Length - 1) As Byte
                dataStream.Read(data, 0, data.Length)
                writer.WriteElementString("data", Convert.ToBase64String(data))
            End Using
            writer.WriteEndElement()
        Next region
        writer.WriteEndElement()
        writer.Close()
        logStore.SetArchiveTail(snapshot.LastSequenceNumber)

    End Sub
    Private Shared Sub RestoreFromXML(ByVal fileName As String)
        Using reader As New XmlTextReader(fileName)
            reader.ReadStartElement("logArchive")
            Do While reader.IsStartElement()
                Dim path = reader.ReadElementString("path")
                Dim length = Int64.Parse(reader.ReadElementString("length"))
                Dim offset = Int64.Parse(reader.ReadElementString("offset"))
                Dim dataString = reader.ReadElementString("data")
                Dim data() = Convert.FromBase64String(dataString)
                Dim fileStream As FileStream
                fileStream = New FileStream(path, FileMode.OpenOrCreate, FileAccess.Write)
                Using fileStream
                    fileStream.SetLength(length)
                    fileStream.Position = offset
                    fileStream.Write(data, 0, data.Length)
                End Using
            Loop
            reader.ReadEndElement()
        End Using
    End Sub
End Class

Commenti

Un oggetto LogArchiveSnapshot contiene le informazioni necessarie per generare un backup coerente dei dati in una classe LogStore.A LogArchiveSnapshot object contains the information necessary to generate a consistent backup of the data in a LogStore. I dati effettivi sono contenuti nella raccolta enumerabile di oggetti FileRegion restituita dalla proprietà ArchiveRegions.The actual data is contained in the enumerable collection of FileRegion objects returned by the ArchiveRegions property. Ogni istanza FileRegion rappresenta una sequenza di byte in un file che deve essere archiviato.Each FileRegion instance represents a sequence of bytes in a file that must be archived.

Le proprietà ArchiveTail, BaseSequenceNumber e LastSequenceNumber sono unicamente a scopo informativo.The ArchiveTail, BaseSequenceNumber, and LastSequenceNumber properties are for informational purposes only. Possono essere registrate insieme ai dati dell'archivio per fornire informazioni facoltative, ma non sono necessarie per il ripristino dei dati.They can be recorded along with the archive data to provide optional information, but are not required to restore the data.

Proprietà

ArchiveRegions

Ottiene una raccolta enumerabile di istanze FileRegion che contiene i dati di archivio effettivi.Gets an enumerable collection of FileRegion instances containing the actual archival data.

ArchiveTail

Ottiene il numero di sequenza della coda di archiviazione LogStore nel momento in cui è stato creato lo snapshot.Gets the sequence number of the LogStore archive tail at the time the snapshot was taken.

BaseSequenceNumber

Ottiene il numero di sequenza di base di LogStore nel momento in cui è stato creato lo snapshot.Gets the base sequence number of the LogStore at the time the snapshot was taken.

LastSequenceNumber

Ottiene l'ultimo numero di sequenza di LogStore nel momento in cui è stato creato lo snapshot.Gets the last sequence number of the LogStore at the time the snapshot was taken.

Metodi

Equals(Object)

Determina se l'oggetto specificato è uguale all'oggetto corrente.Determines whether the specified object is equal to the current object.

(Ereditato da Object)
GetHashCode()

Funge da funzione hash predefinita.Serves as the default hash function.

(Ereditato da Object)
GetType()

Ottiene l'oggetto Type dell'istanza corrente.Gets the Type of the current instance.

(Ereditato da Object)
MemberwiseClone()

Crea una copia superficiale dell'oggetto Object corrente.Creates a shallow copy of the current Object.

(Ereditato da Object)
ToString()

Restituisce una stringa che rappresenta l'oggetto corrente.Returns a string that represents the current object.

(Ereditato da Object)

Si applica a