LogArchiveSnapshot 클래스

정의

아카이브를 생성하는 데 사용할 수 있는 LogStore 인스턴스의 스냅샷을 나타냅니다.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
상속
LogArchiveSnapshot

예제

다음 예제에서는 LogArchiveSnapshot 클래스를 사용하여 LogStore를 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

설명

LogArchiveSnapshot 개체에는 LogStore에 일관성 있는 데이터 백업을 생성하는 데 필요한 정보가 포함되어 있습니다.A LogArchiveSnapshot object contains the information necessary to generate a consistent backup of the data in a LogStore. 실제 데이터는 FileRegion 속성에서 반환하는 ArchiveRegions 개체의 열거 가능한 컬렉션에 들어 있습니다.The actual data is contained in the enumerable collection of FileRegion objects returned by the ArchiveRegions property. FileRegion 인스턴스는 보관해야 하는 파일의 바이트 시퀀스를 나타냅니다.Each FileRegion instance represents a sequence of bytes in a file that must be archived.

ArchiveTail, BaseSequenceNumberLastSequenceNumber 속성은 정보 제공용으로만 사용됩니다.The ArchiveTail, BaseSequenceNumber, and LastSequenceNumber properties are for informational purposes only. 이러한 속성은 선택적 정보를 제공하기 위해 보관 데이터와 함께 기록될 수 있지만 데이터를 복원하는 데는 필요하지 않습니다.They can be recorded along with the archive data to provide optional information, but are not required to restore the data.

속성

ArchiveRegions

실제 보관 데이터가 포함된 FileRegion 인스턴스의 열거 가능한 컬렉션을 가져옵니다.Gets an enumerable collection of FileRegion instances containing the actual archival data.

ArchiveTail

스냅샷이 만들어졌을 때 LogStore 아카이브 테일의 시퀀스 번호를 가져옵니다.Gets the sequence number of the LogStore archive tail at the time the snapshot was taken.

BaseSequenceNumber

스냅샷이 만들어졌을 때 LogStore의 기준 시퀀스 번호를 가져옵니다.Gets the base sequence number of the LogStore at the time the snapshot was taken.

LastSequenceNumber

스냅샷이 만들어졌을 때 LogStore의 마지막 시퀀스 번호를 가져옵니다.Gets the last sequence number of the LogStore at the time the snapshot was taken.

메서드

Equals(Object)

지정된 개체가 현재 개체와 같은지 확인합니다.Determines whether the specified object is equal to the current object.

(다음에서 상속됨 Object)
GetHashCode()

기본 해시 함수로 작동합니다.Serves as the default hash function.

(다음에서 상속됨 Object)
GetType()

현재 인스턴스의 Type을 가져옵니다.Gets the Type of the current instance.

(다음에서 상속됨 Object)
MemberwiseClone()

현재 Object의 단순 복사본을 만듭니다.Creates a shallow copy of the current Object.

(다음에서 상속됨 Object)
ToString()

현재 개체를 나타내는 문자열을 반환합니다.Returns a string that represents the current object.

(다음에서 상속됨 Object)

적용 대상