Class: UpdateStream

diffusion.topicUpdate. UpdateStream


new UpdateStream()

An update stream provides a method for updating a specific topic.

An update stream is associated with a specific topic. The type of the topic must match the type of values passed to the update stream. It can be created with an optional constraint. The existence of the topic, its type and the constraint are validated lazily by the first set or validate operation. Subsequent operations issued before the first operation completes will be deferred until the completion of the first operation.

An update stream can be used to send any number of updates. It sends a sequence of updates for a specific topic to the server. If supported by the data type, updates will be sent to the server as a stream of binary deltas. An update stream does not prevent other sessions from updating the topic. If exclusive access is required update streams should be used with session locks as constraints.

Once validated an update stream can be invalidated. An invalidated update stream rejects the operations applied to it. The update stream will be invalidated if:

  • the topic is removed
  • another update stream is created for the same topic
  • the topic is updated to a new value by anything other than the stream
  • the session does not have the update permission
  • an operation fails because of cluster repartitioning
Since:
  • 6.2

Methods


get()

Return the latest value of the topic set using this update stream.

The returned value reflects the last value that has been set, before it is sent to the server.

If the server rejects a set operation, the topic value will not change and this update stream will be invalidated.

This method will throw an Error if called before the first call to #set

Returns:

the cached value of the topic

Type
any

set(value)

Sets the topic to a specified value.

null or undefined can only be passed to the value parameter when updating string, int64 or double topics.

When a topic of type string, int64 or double is set to null or undefined, the topic will be updated to have no value. If a previous value was present subscribers will receive a notification that the new value is undefined. New subscribers will not receive a value notification.

Parameters:
Name Type Description
value any

the value. Update streams for string, int64, and double topics accept null or undefined, as described above. Using null with other topic types is an error and will result in an Error.

Returns:

a Result that completes when a response is received from the server.

If the task fails, the Result will resolve with an Error.


validate()

Validates the update stream.

Update streams are validated lazily when setting the value. This method allows the stream to be validated before a value needs to be set.

If the update stream has not been validated yet, calling this method checks the topic exists, the topic type is correct, the constraint is satisfied and the session has permission to update the topic. Once it has been validated calling this method checks the topic has not been removed, no other stream has been created for the topic, the value of the topic has not been changed by anything else and the session still has permission to update the topic. If validation fails, the Result will resolve with an Error.

If this method fails all subsequent calls to #set or #validate will resolve with an Error.

Returns:

a Result that completes when a response is received from the server.

Type
Result.<diffusion.topicUpdate.TopicCreationResult>