Class CombinedDecorator<TLinkAddress>

Namespace
Platform.Data.Doublets.Decorators
Assembly
Platform.Data.Doublets.dll

Represents a combined decorator that implements the basic logic for interacting with the links storage for links with addresses represented as ulong.

Представляет комбинированный декоратор, реализующий основную логику по взаимодействии с хранилищем связей, для связей с адресами представленными в виде ulong.

public class CombinedDecorator<TLinkAddress> : LinksDisposableDecoratorBase<TLinkAddress>, ILinks<TLinkAddress>, ILinks<TLinkAddress, LinksConstants<TLinkAddress>>, IDisposable where TLinkAddress : IUnsignedNumber<TLinkAddress>

Type Parameters

TLinkAddress
Inheritance
LinksOperatorBase<TLinkAddress>
LinksDecoratorBase<TLinkAddress>
CombinedDecorator<TLinkAddress>
Implements
ILinks<TLinkAddress>
ILinks<TLinkAddress, LinksConstants<TLinkAddress>>
Inherited Members
Extension Methods

Remarks

Возможные оптимизации: Объединение в одном поле Source и Target с уменьшением до 32 бит. + меньше объём БД - меньше производительность - больше ограничение на количество связей в БД) Ленивое хранение размеров поддеревьев (расчитываемое по мере использования БД) + меньше объём БД - больше сложность

Текущее теоретическое ограничение на индекс связи, из-за использования 5 бит в размере поддеревьев для AVL баланса и флагов нитей: 2 в степени(64 минус 5 равно 59 ) равно 576 460 752 303 423 488 Желательно реализовать поддержку переключения между деревьями и битовыми индексами (битовыми строками) - вариант матрицы (выстраеваемой лениво).

Решить отключать ли проверки при компиляции под Release. Т.е. исключения будут выбрасываться только при #if DEBUG

Constructors

Initializes a new CombinedDecorator<TLinkAddress> instance.

public CombinedDecorator(ILinks<TLinkAddress> links)

Parameters

links ILinks<TLinkAddress>

A links.

Methods

Create(IList<TLinkAddress>?, WriteHandler<TLinkAddress>?)

Creates the substitution.

public override TLinkAddress Create(IList<TLinkAddress>? substitution, WriteHandler<TLinkAddress>? handler)

Parameters

substitution IList<TLinkAddress>

The substitution.

handler WriteHandler<TLinkAddress>

Optional callback; null continues without invoking a callback.

Returns

TLinkAddress

The TLinkAddress

Delete(IList<TLinkAddress>?, WriteHandler<TLinkAddress>?)

Deletes the substitution.

public override TLinkAddress Delete(IList<TLinkAddress>? restriction, WriteHandler<TLinkAddress>? handler)

Parameters

restriction IList<TLinkAddress>

The substitution.

handler WriteHandler<TLinkAddress>

Optional callback; null continues without invoking a callback.

Returns

TLinkAddress

Update(IList<TLinkAddress>?, IList<TLinkAddress>?, WriteHandler<TLinkAddress>?)

Updates the substitution.

public override TLinkAddress Update(IList<TLinkAddress>? restriction, IList<TLinkAddress>? substitution, WriteHandler<TLinkAddress>? handler)

Parameters

restriction IList<TLinkAddress>

The substitution.

substitution IList<TLinkAddress>

The substitution.

handler WriteHandler<TLinkAddress>

Optional callback; null continues without invoking a callback.

Returns

TLinkAddress

The TLinkAddress