Show / Hide Table of Contents

Class BencodeReader

A reader that provides access to bencoded data.
Inheritance
System.Object
BencodeReader
Inherited Members
System.Object.Equals(System.Object)
System.Object.Equals(System.Object, System.Object)
System.Object.GetHashCode()
System.Object.GetType()
System.Object.MemberwiseClone()
System.Object.ReferenceEquals(System.Object, System.Object)
System.Object.ToString()
Namespace: ItsyBitsy.Bencoding
Assembly: ItsyBitsy.Bencoding.dll
Syntax
public sealed class BencodeReader

Constructors

| Improve this Doc View Source

BencodeReader(ReadOnlyMemory<Byte>)

Initializes a new instance of the BencodeReader class using the specified encoded data.
Declaration
public BencodeReader(ReadOnlyMemory<byte> source)
Parameters
Type Name Description
System.ReadOnlyMemory<System.Byte> source The memory containing encoded data.

Properties

| Improve this Doc View Source

Position

Gets or sets the position of the reader in the source memory.
Declaration
public int Position { get; set; }
Property Value
Type Description
System.Int32
Remarks
Setting the position puts the reader into a state in which it can read a value. For example, if the position of the reader is set to the position of an element in a list, the reader will be able to read only that element and not any subsequent elements. If the position of the reader is set to position of a key, the reader will be able to read the key as a value using ReadString() rather than ReadKey().
Exceptions
Type Condition
System.ArgumentOutOfRangeException value is negative.

Methods

| Improve this Doc View Source

CreateSpanReader()

Gets a BencodeSpanReader that continues from the current state of this reader.
Declaration
public BencodeSpanReader CreateSpanReader()
Returns
Type Description
BencodeSpanReader A BencodeSpanReader that continues from the current state of this reader.
Remarks
Do not operate on this reader again until after calling Dispose() on the BencodeSpanReader.
| Improve this Doc View Source

ReadDictionary(Boolean)

Reads a dictionary and returns a BencodeDictionary.
Declaration
public BencodeDictionary ReadDictionary(bool skipDuplicateKeys = false)
Parameters
Type Name Description
System.Boolean skipDuplicateKeys If true, duplicate keys are skipped rather than causing InvalidBencodeException to be thrown.
Returns
Type Description
BencodeDictionary The dictionary.
Exceptions
Type Condition
System.InvalidOperationException The reader is not in a state that allows a dictionary to be read.
InvalidBencodeException The reader encountered a duplicate key while reading the dictionary.
InvalidBencodeException The reader encountered invalid data while attempting to read a value.
UnsupportedBencodeException The reader encountered an integer that is not in the supported range.
UnsupportedBencodeException The reader encountered a string with a length that is not in the supported range.
UnsupportedBencodeException The reader encountered a key with a length that is not in the supported range.
| Improve this Doc View Source

ReadDictionaryHead()

Reads the beginning of a dictionary.
Declaration
public void ReadDictionaryHead()
Exceptions
Type Condition
System.InvalidOperationException The reader is not in a state that allows a dictionary head to be read.
InvalidBencodeException The reader encountered invalid data while attempting to read the beginning of a dictionary.
| Improve this Doc View Source

ReadDictionaryTail()

Reads the end of a dictionary.
Declaration
public void ReadDictionaryTail()
Exceptions
Type Condition
System.InvalidOperationException The reader is not in a state that allows a dictionary tail to be read.
InvalidBencodeException The reader encountered invalid data while attempting to read the end of a dictionary.
| Improve this Doc View Source

ReadInteger()

Reads an integer.
Declaration
public long ReadInteger()
Returns
Type Description
System.Int64 The integer that was read.
Exceptions
Type Condition
System.InvalidOperationException The reader is not in a state that allows an integer to be read.
InvalidBencodeException The reader encountered invalid data while attempting to read an integer.
UnsupportedBencodeException The reader encountered an integer that is not in the supported range.
| Improve this Doc View Source

ReadKey()

Reads a key.
Declaration
public ReadOnlyMemory<byte> ReadKey()
Returns
Type Description
System.ReadOnlyMemory<System.Byte> The key that was read.
Exceptions
Type Condition
System.InvalidOperationException The reader is not in a state that allows a key to be read.
InvalidBencodeException The reader encountered invalid data while attempting to read a key.
UnsupportedBencodeException The reader encountered a key with a length that is not in the supported range.
| Improve this Doc View Source

ReadKeyLength()

Determines the length of the key to be read.
Declaration
public int ReadKeyLength()
Returns
Type Description
System.Int32 The length of the key.
Remarks
ReadKeyLength() will continue to return the same result until the key is read or skipped.
Exceptions
Type Condition
System.InvalidOperationException The reader is not in a state that allows a key to be read.
InvalidBencodeException The reader encountered invalid data while attempting to read a key.
UnsupportedBencodeException The reader encountered a key with a length that is not in the supported range.
| Improve this Doc View Source

ReadList()

Reads a list and returns the positions of the elements.
Declaration
public BencodeList ReadList()
Returns
Type Description
BencodeList The list of positions of the list element values.
Exceptions
Type Condition
System.InvalidOperationException The reader is not in a state that allows a list to be read.
InvalidBencodeException The reader encountered invalid data while attempting to read a value.
UnsupportedBencodeException The reader encountered an integer that is not in the supported range.
UnsupportedBencodeException The reader encountered a string with a length that is not in the supported range.
UnsupportedBencodeException The reader encountered a key with a length that is not in the supported range.
| Improve this Doc View Source

ReadListHead()

Reads the beginning of a list.
Declaration
public void ReadListHead()
Exceptions
Type Condition
System.InvalidOperationException The reader is not in a state that allows a list head to be read.
InvalidBencodeException The reader encountered invalid data while attempting to read the beginning of a list.
| Improve this Doc View Source

ReadListTail()

Reads the end of a list.
Declaration
public void ReadListTail()
Exceptions
Type Condition
System.InvalidOperationException The reader is not in a state that allows a list tail to be read.
InvalidBencodeException The reader encountered invalid data while attempting to read the end of a list.
| Improve this Doc View Source

ReadString()

Reads a string.
Declaration
public ReadOnlyMemory<byte> ReadString()
Returns
Type Description
System.ReadOnlyMemory<System.Byte> The string that was read.
Exceptions
Type Condition
System.InvalidOperationException The reader is not in a state that allows a string to be read.
InvalidBencodeException The reader encountered invalid data while attempting to read a string.
UnsupportedBencodeException The reader encountered a string with a length that is not in the supported range.
| Improve this Doc View Source

ReadStringLength()

Determines the length of the string to be read.
Declaration
public int ReadStringLength()
Returns
Type Description
System.Int32 The length of the string.
Remarks
ReadStringLength() will continue to return the same result until the string is read or skipped.
Exceptions
Type Condition
System.InvalidOperationException The reader is not in a state that allows a string to be read.
InvalidBencodeException The reader encountered invalid data while attempting to read a string.
UnsupportedBencodeException The reader encountered a string with a length that is not in the supported range.
| Improve this Doc View Source

ReadTokenType()

Determines the type of token that the reader must read next.
Declaration
public BencodeTokenType ReadTokenType()
Returns
Type Description
BencodeTokenType The type of token that the reader must read next.
Remarks

ReadTokenType() will continue to return the same result until the token is read or skipped.

ReadTokenType() returns None if the reader has previously encountered an error or if the reader is positioned after the end of the value.

Exceptions
Type Condition
InvalidBencodeException The reader encountered invalid data while attempting to read a token discriminator.
| Improve this Doc View Source

ReadValueTo(ref BencodeSpanWriter)

Reads a value and writes it to a bencode writer.
Declaration
public void ReadValueTo(ref BencodeSpanWriter writer)
Parameters
Type Name Description
BencodeSpanWriter writer The bencode writer that the value read from the reader is written to.
Exceptions
Type Condition
System.InvalidOperationException The reader is not in a state that allows a value to be read.
InvalidBencodeException The reader encountered invalid data while attempting to read a value.
UnsupportedBencodeException The reader encountered an integer that is not in the supported range.
UnsupportedBencodeException The reader encountered a string with a length that is not in the supported range.
UnsupportedBencodeException The reader encountered a key with a length that is not in the supported range.
System.InvalidOperationException The writer is not in a state that allows a value to be written.
| Improve this Doc View Source

ReadValueTo(BencodeWriter)

Reads a value and writes it to a bencode writer.
Declaration
public void ReadValueTo(BencodeWriter writer)
Parameters
Type Name Description
BencodeWriter writer The bencode writer that the value read from the reader is written to.
Exceptions
Type Condition
System.ArgumentNullException writer is null.
System.InvalidOperationException The reader is not in a state that allows a value to be read.
InvalidBencodeException The reader encountered invalid data while attempting to read a value.
UnsupportedBencodeException The reader encountered an integer that is not in the supported range.
UnsupportedBencodeException The reader encountered a string with a length that is not in the supported range.
UnsupportedBencodeException The reader encountered a key with a length that is not in the supported range.
System.InvalidOperationException The writer is not in a state that allows a value to be written.
| Improve this Doc View Source

SkipKey()

Skips a key.
Declaration
public void SkipKey()
Exceptions
Type Condition
System.InvalidOperationException The reader is not in a state that allows a key to be skipped.
InvalidBencodeException The reader encountered invalid data while attempting to skip a key.
UnsupportedBencodeException The reader encountered a key with a length that is not in the supported range.
| Improve this Doc View Source

SkipValue()

Skips a value.
Declaration
public void SkipValue()
Exceptions
Type Condition
System.InvalidOperationException The reader is not in a state that allows a value to be skipped.
InvalidBencodeException The reader encountered invalid data while attempting to skip a value.
UnsupportedBencodeException The reader encountered an integer that is not in the supported range.
UnsupportedBencodeException The reader encountered a string with a length that is not in the supported range.

See Also

BencodeSpanReader
  • Improve this Doc
  • View Source
Back to top Generated by DocFX