Show / Hide Table of Contents

Class BSONArray

Array of BSONValue items. Used in binary serialization while data transfer data between client and server. It implements List like behavior based on shared array pool instead of backing List for better memory utilization. If we use a List then it will never drop in Capacity, eventually all lists in BSONArray will grow to match bigger capacity needed for often used arrays. I.e. if we transfer BSON array with size 100 once per second and use 100 BSONArray objects then:

  • with lists every time when BSONArray created (actually rented from pool) it may be a different BSONArray and it will be filled with 100 items even if all other BSON arrays we use need just 2-10 items. Now we have 100x100 = 10 000 capacity allocated and never released.
  • with array pools it will use same array from shared pool every time when BSONArray need to accept 100 items (assuming we don't have two BSON arrays of that size in parallel). All other arrays not exceed 10 items so we have just 100 + 99x10 = 1 090 capacity allocated instead of 10 000.
Inheritance
System.Object
BSONValue
BSONValue<BSONArray>
BSONArray
Implements
System.IEquatable<BSONValue>
System.Collections.Generic.IList<BSONValue>
System.Collections.Generic.ICollection<BSONValue>
System.Collections.Generic.IEnumerable<BSONValue>
System.Collections.IEnumerable
Inherited Members
BSONValue<BSONArray>.Recycle()
BSONValue<BSONArray>.ThrowMultipleRecycleError()
BSONValue.ListValue<T>()
BSONValue.NewBSONValue(BSONValueType)
BSONValue.NewViewRef(Int32)
BSONValue.NewBlobRef(Int32)
BSONValue.NewCachedDataRef(String)
BSONValue.NewTypeId(Int32)
BSONValue.NewBSONValue(Double)
BSONValue.NewBSONValue(Single)
BSONValue.NewBSONValue(Color)
BSONValue.NewBSONValue(Vector3)
BSONValue.NewBSONValue(Vector2)
BSONValue.NewBSONValue(Vector3i)
BSONValue.NewBSONValue(Vector2i)
BSONValue.NewBSONValue(Quaternion)
BSONValue.NewBSONValue(Guid)
BSONValue.NewBSONValue(LocString)
BSONValue.NewBSONValue(String)
BSONValue.NewBSONValue(Byte[], Boolean, Boolean)
BSONValue.NewBSONValue(UInt16[])
BSONValue.NewBsonValue(Int32[])
BSONValue.NewBsonValue(ICollection<UInt16>)
BSONValue.NewBsonValue(ICollection<Int32>)
BSONValue.NewBSONValue(Boolean)
BSONValue.NewBSONValue(DateTime)
BSONValue.NewBSONValue(Int32)
BSONValue.NewBSONValue(Int64)
BSONValue.NewBSONValue(UInt64)
BSONValue.NewBSONValue(Byte)
BSONValue.Cast<T>()
BSONValue.Equals(BSONValue)
BSONValue.ToString()
BSONValue.DebugToString()
BSONValue.ValueType
BSONValue.DoubleValue
BSONValue.FloatValue
BSONValue.Vector3Value
BSONValue.Vector2Value
BSONValue.Vector3iValue
BSONValue.Vector2iValue
BSONValue.Vector3iValueNullable
BSONValue.QuaternionValue
BSONValue.StringValue
BSONValue.BoolValue
BSONValue.DateTimeValue
BSONValue.ByteValue
BSONValue.Int32Value
BSONValue.Int64Value
BSONValue.UInt64Value
BSONValue.GuidValue
BSONValue.ColorValue
BSONValue.ObjectValue
BSONValue.LocStringValue
BSONValue.ViewID
BSONValue.BlobID
BSONValue.ViewTypeID
BSONValue.IsNull
BSONValue.BinaryValue
BSONValue.ByteSpanValue
BSONValue.UShortArrayValue
BSONValue.UShortSpanValue
BSONValue.IntArrayValue
BSONValue.IntSpanValue
Namespace: Eco.Shared.Serialization
Assembly: Eco.Shared.dll
Syntax
public sealed class BSONArray : BSONValue<BSONArray>, IEquatable<BSONValue>, IList<BSONValue>, ICollection<BSONValue>, IEnumerable<BSONValue>, IEnumerable

Properties

ArrayValue

Declaration
public override BSONArray ArrayValue { get; }
Property Value
Type Description
BSONArray
Overrides
BSONValue.ArrayValue

Count

Declaration
public int Count { get; }
Property Value
Type Description
System.Int32

IsReadOnly

Declaration
public bool IsReadOnly { get; }
Property Value
Type Description
System.Boolean

Item[Int32]

Declaration
public BSONValue this[int index] { get; set; }
Parameters
Type Name Description
System.Int32 index
Property Value
Type Description
BSONValue

New

Declaration
public static BSONArray New { get; }
Property Value
Type Description
BSONArray

Methods

Add(BSONValue)

Declaration
public void Add(BSONValue item)
Parameters
Type Name Description
BSONValue item

AddRange(IEnumerable<BSONValue>)

Declaration
public void AddRange(IEnumerable<BSONValue> items)
Parameters
Type Name Description
System.Collections.Generic.IEnumerable<BSONValue> items

AddSpan(ReadOnlySpan<BSONValue>)

Adds new items form span.

Declaration
public void AddSpan(ReadOnlySpan<BSONValue> span)
Parameters
Type Name Description
System.ReadOnlySpan<BSONValue> span

AsSpan()

Declaration
public ReadOnlySpan<BSONValue> AsSpan()
Returns
Type Description
System.ReadOnlySpan<BSONValue>

Clear()

Declaration
public void Clear()

ClearNoRecycle()

Clears BSONArray without recycling it's items. May be useful when array copied to another BSONArray to avoid recycling items twice.

Declaration
public void ClearNoRecycle()

Contains(BSONValue)

Declaration
public bool Contains(BSONValue item)
Parameters
Type Name Description
BSONValue item
Returns
Type Description
System.Boolean

CopyTo(BSONValue[], Int32)

Declaration
public void CopyTo(BSONValue[] array, int arrayIndex)
Parameters
Type Name Description
BSONValue[] array
System.Int32 arrayIndex

FromEnumerable(IEnumerable<LocString>)

Declaration
public static BSONArray FromEnumerable(IEnumerable<LocString> values)
Parameters
Type Name Description
System.Collections.Generic.IEnumerable<LocString> values
Returns
Type Description
BSONArray

FromEnumerable(IEnumerable<Quaternion>)

Declaration
public static BSONArray FromEnumerable(IEnumerable<Quaternion> values)
Parameters
Type Name Description
System.Collections.Generic.IEnumerable<Quaternion> values
Returns
Type Description
BSONArray

FromEnumerable(IEnumerable<Vector2i>)

Declaration
public static BSONArray FromEnumerable(IEnumerable<Vector2i> values)
Parameters
Type Name Description
System.Collections.Generic.IEnumerable<Vector2i> values
Returns
Type Description
BSONArray

FromEnumerable(IEnumerable<Vector3i>)

Declaration
public static BSONArray FromEnumerable(IEnumerable<Vector3i> values)
Parameters
Type Name Description
System.Collections.Generic.IEnumerable<Vector3i> values
Returns
Type Description
BSONArray

FromEnumerable(IEnumerable<BSONValue>)

Declaration
public static BSONArray FromEnumerable(IEnumerable<BSONValue> values)
Parameters
Type Name Description
System.Collections.Generic.IEnumerable<BSONValue> values
Returns
Type Description
BSONArray

FromEnumerable(IEnumerable<Color>)

Declaration
public static BSONArray FromEnumerable(IEnumerable<Color> values)
Parameters
Type Name Description
System.Collections.Generic.IEnumerable<Color> values
Returns
Type Description
BSONArray

FromEnumerable(IEnumerable<Boolean>)

Declaration
public static BSONArray FromEnumerable(IEnumerable<bool> values)
Parameters
Type Name Description
System.Collections.Generic.IEnumerable<System.Boolean> values
Returns
Type Description
BSONArray

FromEnumerable(IEnumerable<Byte>)

Declaration
public static BSONArray FromEnumerable(IEnumerable<byte> values)
Parameters
Type Name Description
System.Collections.Generic.IEnumerable<System.Byte> values
Returns
Type Description
BSONArray

FromEnumerable(IEnumerable<DateTime>)

Declaration
public static BSONArray FromEnumerable(IEnumerable<DateTime> values)
Parameters
Type Name Description
System.Collections.Generic.IEnumerable<System.DateTime> values
Returns
Type Description
BSONArray

FromEnumerable(IEnumerable<Double>)

Declaration
public static BSONArray FromEnumerable(IEnumerable<double> values)
Parameters
Type Name Description
System.Collections.Generic.IEnumerable<System.Double> values
Returns
Type Description
BSONArray

FromEnumerable(IEnumerable<Guid>)

Declaration
public static BSONArray FromEnumerable(IEnumerable<Guid> values)
Parameters
Type Name Description
System.Collections.Generic.IEnumerable<System.Guid> values
Returns
Type Description
BSONArray

FromEnumerable(IEnumerable<Int32>)

Declaration
public static BSONArray FromEnumerable(IEnumerable<int> values)
Parameters
Type Name Description
System.Collections.Generic.IEnumerable<System.Int32> values
Returns
Type Description
BSONArray

FromEnumerable(IEnumerable<Int64>)

Declaration
public static BSONArray FromEnumerable(IEnumerable<long> values)
Parameters
Type Name Description
System.Collections.Generic.IEnumerable<System.Int64> values
Returns
Type Description
BSONArray

FromEnumerable(IEnumerable<Single>)

Declaration
public static BSONArray FromEnumerable(IEnumerable<float> values)
Parameters
Type Name Description
System.Collections.Generic.IEnumerable<System.Single> values
Returns
Type Description
BSONArray

FromEnumerable(IEnumerable<String>)

Declaration
public static BSONArray FromEnumerable(IEnumerable<string> values)
Parameters
Type Name Description
System.Collections.Generic.IEnumerable<System.String> values
Returns
Type Description
BSONArray

GetEnumerator()

Declaration
public ArraySegment<BSONValue>.Enumerator GetEnumerator()
Returns
Type Description
System.ArraySegment.Enumerator<>

IndexOf(BSONValue)

Declaration
public int IndexOf(BSONValue item)
Parameters
Type Name Description
BSONValue item
Returns
Type Description
System.Int32

Insert(Int32, BSONValue)

Declaration
public void Insert(int index, BSONValue item)
Parameters
Type Name Description
System.Int32 index
BSONValue item

Remove(BSONValue)

Declaration
public bool Remove(BSONValue item)
Parameters
Type Name Description
BSONValue item
Returns
Type Description
System.Boolean

RemoveAt(Int32)

Declaration
public void RemoveAt(int index)
Parameters
Type Name Description
System.Int32 index

SerializeFromEnumerable<T>(IEnumerable<T>)

Declaration
public static BSONArray SerializeFromEnumerable<T>(IEnumerable<T> values)
Parameters
Type Name Description
System.Collections.Generic.IEnumerable<T> values
Returns
Type Description
BSONArray
Type Parameters
Name Description
T

ToArrayVector2i()

Declaration
public Vector2i[] ToArrayVector2i()
Returns
Type Description
Vector2i[]

ToStringIndented(Int32, HashSet<BSONValue>)

Declaration
protected override string ToStringIndented(int indentLevel, HashSet<BSONValue> visited)
Parameters
Type Name Description
System.Int32 indentLevel
System.Collections.Generic.HashSet<BSONValue> visited
Returns
Type Description
System.String
Overrides
BSONValue.ToStringIndented(Int32, HashSet<BSONValue>)

TryPerformRecycle()

Declaration
protected override bool TryPerformRecycle()
Returns
Type Description
System.Boolean
Overrides
Eco.Shared.Serialization.BSONValue<Eco.Shared.Serialization.BSONArray>.TryPerformRecycle()

Implements

System.IEquatable<>
System.Collections.Generic.IList<>
System.Collections.Generic.ICollection<>
System.Collections.Generic.IEnumerable<>
System.Collections.IEnumerable

Extension Methods

BsonValueBackgroundRecycler.RecycleInBackground(BSONValue)
SimpleBSON.WithStatsRecording(BSONValue)
CommandLine.FeedFromCommandLine(Object)
CommandLine.ToCommandLineArgs(Object, Func<Object, Boolean>)
ListExtensions.Enumerate<T>(BSONArray)
ListUtil.DepthFirstTraversal<T>(T, Func<T, IEnumerable<T>>)
EnumerableExtensions.SingleItemAsEnumerable<T>(T)
EventUtils.RaiseEvent<TEventArgs>(Object, String, TEventArgs)
PredicateUtils.MatchesAll<TEnumerable, T>(T, TEnumerable)
PredicateUtils.MatchesAll<T>(T, Func<T, Boolean>[])
PredicateUtils.MatchesAny<TEnumerable, T>(T, TEnumerable)
ReflectionUtils.PropertyValue<T>(Object, PropertyInfo)
ReflectionUtils.TryGetPropertyValueByName<T>(Object, String, out T)
ReflectionUtils.GetPropertyValueByName<T>(Object, String)
ReflectionUtils.SetPropertyByName(Object, String, Object)
ReflectionUtils.GetStructPropertyByName<T>(Object, String)
ReflectionUtils.GetStringPropertyByName(Object, String)
ReflectionUtils.ZipByProperty<T>(Object, Object, Object, Func<T, T, T>)
ViewManager.UnpackageView<T>(BSONValue)
ViewManager.UnpackageView(BSONValue)
☀
☾
In This Article
Back to top
Copyright (c) Strange Loop Games 2021
☀
☾