Table of Contents

Interface IUpdateConstraintFactory

Namespace
PushTechnology.ClientInterface.Client.Features
Assembly
Diffusion.Client.dll

The factory for the update constraint types.

public interface IUpdateConstraintFactory

Remarks

An instance can be obtained by calling UpdateConstraints.

Properties

JSONValue

Gets the constraint that partially matches the current topic value.

IPartialJSON JSONValue { get; }

Property Value

IPartialJSON

The constraint.

Remarks

The topic must be a JSON topic (or a TIME_SERIES topic with a json event type). The IPartialJSON partially describes the structure of a IJSON value. The With<TValue>(string, UpdateConstraintOperator, TValue) or Without(string) methods must be used to fully qualify the constraint.

The constraint is unsatisfied if no topic is present at the path.

NoTopic

Gets the constraint requiring the path to have no topic.

IUpdateConstraint NoTopic { get; }

Property Value

IUpdateConstraint

The constraint.

Remarks

This is useful when setting the first value of a topic being added using AddAndSetAsync<TValue>(string, ITopicSpecification, TValue, IUpdateConstraint) without changing the value if the topic already exists. This constraint is unsatisfied if a topic is present at the path.

NoValue

Gets the constraint requiring the topic to have no value.

IUpdateConstraint NoValue { get; }

Property Value

IUpdateConstraint

The constraint.

Remarks

This constraint is unsatisfied if no topic is present at the path.

Methods

Locked(ISessionLock)

Creates a constraint requiring a lock to be held by the session.

IUpdateConstraint Locked(ISessionLock sessionLock)

Parameters

sessionLock ISessionLock

The session lock.

Returns

IUpdateConstraint

The new update constraint.

Remarks

This can be used to coordinate operations between multiple sessions.

Value<TValue>(UpdateConstraintOperator, TValue)

Creates a constraint comparing the current value of a topic to a supplied value.

IUpdateConstraint Value<TValue>(UpdateConstraintOperator updateConstraintOperator, TValue value)

Parameters

updateConstraintOperator UpdateConstraintOperator

The operator that determines the type of comparison.

value TValue

The value.

Returns

IUpdateConstraint

The constraint.

Type Parameters

TValue

The value type.

Remarks

If a System.String value is supplied and the operator is EQ or NE, the string representation of the topic will be compared to the supplied value. This can only be used with primitive topic types (or TIME_SERIES topics with a primitive event type). Other operators (other than IS) are not permitted with string values.

If a number value is supplied (System.Int32, System.Int64 or System.Double) the value will be compared with the number value of the topic. This will work with STRING, INT64 or DOUBLE topics (or TIME_SERIES topics with a primitive event type) only. STRING topics can only be compared if they contain a value that can be parsed as a number. If the value of a STRING topic cannot be parsed as a number, or the topic is of any other non-number type the constraint will be unsatisfied. Any of the operators (other than IS) can be used with such number comparisons. Decimal numbers can be compared with integral numbers so 1 is equal to 1.0, "1", or "1.0".

If the IS operator is specified the specified value will be compared to the topic value for strict binary equality. The value type can be any value type supported by IDataTypes (System.Int32 is allowed and is treated as a System.Int64) or any IBytes value and can be used to compare against any topic type.

When a STRING, INT64 or DOUBLE topic is updated to a null value, the topic is set to have no value. Use the NoValue constraint to check if the topic has no value.

This constraint is unsatisfied if no topic is present at the path.

Since 6.10.

Exceptions

ArgumentException

If the operator is not compatible with the value type or the value type is not supported.

Value<TValue>(TValue)

Creates a constraint requiring the current value of a topic to exactly match the supplied value.

IUpdateConstraint Value<TValue>(TValue value)

Parameters

value TValue

The value.

Returns

IUpdateConstraint

The new update constraint.

Type Parameters

TValue

The value type.

Remarks

This is exactly equivalent to calling Value<TValue>(UpdateConstraintOperator, TValue) specifying the IS operator.

Exceptions

ArgumentException

If the value type is not supported.