FileRegion FileRegion FileRegion FileRegion Class

Definition

Represents a region of a file to be archived. This class cannot be inherited.

public ref class FileRegion sealed
public sealed class FileRegion
type FileRegion = class
Public NotInheritable Class FileRegion
Inheritance
FileRegionFileRegionFileRegionFileRegion

Examples

The following example demonstrates how to archive a log store to XML using the LogStore and FileRegion classes.

class LogBackup
{
    static void ArchiveToXML(LogStore logStore, string fileName)
    {
        

        LogArchiveSnapshot snapshot = logStore.CreateLogArchiveSnapshot();
        {
            XmlTextWriter writer = new XmlTextWriter(fileName, System.Text.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", System.Convert.ToBase64String(data));
                }

                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;
                long length;
                long offset;
                path = reader.ReadElementString("path");
                length = System.Int64.Parse(reader.ReadElementString("length"));
                offset = System.Int64.Parse(reader.ReadElementString("offset"));
                string dataString = reader.ReadElementString("data");
                byte[] data = System.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, System.Text.Encoding.ASCII)
			writer.WriteStartElement("logArchive")

        For Each region As FileRegion In snapshot.ArchiveRegions
            With writer
                .WriteStartElement("fileRegion")
                .WriteElementString("path", region.Path)
                .WriteElementString("length", region.FileLength.ToString())
                .WriteElementString("offset", region.Offset.ToString())
            End With

            Using dataStream As Stream = region.GetStream()
                Dim data(dataStream.Length - 1) As Byte
                dataStream.Read(data, 0, data.Length)

                writer.WriteElementString("data", System.Convert.ToBase64String(data))
            End Using

            writer.WriteEndElement()
        Next region

			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 As String
				Dim length As Long
				Dim offset As Long
				path = reader.ReadElementString("path")
				length = System.Int64.Parse(reader.ReadElementString("length"))
				offset = System.Int64.Parse(reader.ReadElementString("offset"))
                Dim dataString = reader.ReadElementString("data")
                Dim data() = System.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

Remarks

A LogArchiveSnapshot object contains the information necessary to generate a consistent backup of the data in a LogStore. The actual data is contained in the enumerable collection of FileRegion objects returned by the ArchiveRegions property. Each FileRegion instance represents a sequence of bytes in a file that must be archived.

Properties

FileLength FileLength FileLength FileLength

Gets the length of the file in bytes.

Offset Offset Offset Offset

Gets the offset into the file where the data begins.

Path Path Path Path

Gets the fully qualified location of the file containing this region.

Methods

Equals(Object) Equals(Object) Equals(Object) Equals(Object)

Determines whether the specified object is equal to the current object.

(Inherited from Object)
GetHashCode() GetHashCode() GetHashCode() GetHashCode()

Serves as the default hash function.

(Inherited from Object)
GetStream() GetStream() GetStream() GetStream()

Returns a stream that can be used to read the data to be archived.

GetType() GetType() GetType() GetType()

Gets the Type of the current instance.

(Inherited from Object)
MemberwiseClone() MemberwiseClone() MemberwiseClone() MemberwiseClone()

Creates a shallow copy of the current Object.

(Inherited from Object)
ToString() ToString() ToString() ToString()

Returns a string that represents the current object.

(Inherited from Object)

Applies to