Skip to main content

Changes API: How to Subscribe to Operation Changes

The following methods allow you to subscribe to operation changes:

ForOperation

Operation changes for one operation can be observed using the ForOperationId method.

Syntax

IChangesObservable<OperationStatusChange> ForOperationId(long operationId);
Parameters
operationIdlongID of an operation for which notifications will be processed.
Return value
IChangesObservable<OperationStatusChange>Observable that allows you to add subscriptions to notifications for an operation with a given ID.

Example

IDisposable subscription = store
.Changes(dbName, nodeTag)
.ForOperationId(operationId)
.Subscribe(
change =>
{
switch (change.State.Status)
{
case OperationStatus.InProgress:
//Do Something
break;
case OperationStatus.Completed:
//Do Something
break;
case OperationStatus.Faulted:
//Do Something
break;
case OperationStatus.Canceled:
//Do Something
break;
default:
throw new ArgumentOutOfRangeException();
}
});

ForAllOperations

Operations changes for all Operations can be observed using the ForAllOperations method.

Return Value
IChangesObservable<OperationStatusChange>Observable that allows to add subscriptions to notifications for all operations.

Syntax

IChangesObservable<OperationStatusChange> ForAllOperations();

Example

IDisposable subscription = store
.Changes(dbName, nodeTag)
.ForAllOperations()
.Subscribe(change => Console.WriteLine("Operation #{1} reports progress: {0}", change.State.Progress.ToJson(), change.OperationId));

OperationChange

Properties

NameTypeDescription
StateOperationStateOperation state
OperationIdlongOperation ID

OperationState

Members

NameTypeDescription
ResultIOperationResultOperation result
ProgressIOperationProgressInstance of IOperationProgress (json representation of the progress)
StatusOperationStatusOperation status

OperationResult

Members

NameTypeDescription
MessagestringOperation message
ShouldPersistbooldetermine whether or not the result should be saved in the storage

OperationStatus

OperationStatus (enum)

NameDescription
InProgressIndicates that the operation made progress
CompletedIndicates that the operation has completed
FaultedIndicates that the operation is faulted
CanceledIndicates that the operation has been Canceled

Remarks

To get more method overloads, especially ones supporting delegates, please add the System.Reactive.Core package to your project.