Conditional update¶
Atomically sets the value to the given updated value if the current value == the expected value.
// *******************************************
// synchronous methods
// *******************************************
// Backendless.Counters approach
public bool Backendless.Counters.CompareAndSet( String counterName, Int64 expected, Int64 updated );
// IAtomic approach
IAtomic<T> counter = Backendless.Counters.Of<T>( String counterName );
public bool counter.CompareAndSet( Int64 expected, Int64 updated );
// *******************************************
// asynchronous methods
// *******************************************
// Backendless.Counters approach
public void Backendless.Counters.CompareAndSet<T>( String counterName, Int64 expected, Int64 updated, AsyncCallback<bool> callback );
// IAtomic approach
IAtomic<T> counter = Backendless.Counters.Of<T>( String counterName );
public void counter.CompareAndSet( Int64 expected, Int64 updated, AsyncCallback<T> callback );
where:
Argument | Description |
---|---|
counterName |
name of the counter to update. |
expected |
the expected value of the counter. If the current value equals the expected value, the counter is set to the "updated " value. |
updated |
the new value to assign to the counter if the current value equals the expected value. |
callback |
the callback used for asynchronous calls to indicate that the operation has either successfully completed or resulted in error. |
Example¶
AsyncCallback<bool> callback = new AsyncCallback<bool>(
result =>
{
System.Console.WriteLine( "[ASYNC] valud has been updated? - " + result );
},
fault =>
{
System.Console.WriteLine( "Error - " + fault );
} );
Backendless.Counters.CompareAndSet( "my counter", 1000, 2000, callback );
IAtomic<int> myCounter = Backendless.Counters.Of<int>( "my counter" );
bool updateResult = myCounter.CompareAndSet( 1000, 2000 );
System.Console.WriteLine( "[SYNC] value has been updated? - " + updateResult );
updateResult = Backendless.Counters.CompareAndSet( "my counter", 2000, 3000 );
System.Console.WriteLine( "[SYNC] value has been updated? - " + updateResult );
Codeless Reference¶
where:
Argument | Description |
---|---|
counter name |
Name of the counter whose value must be set. |
expected value |
This property sets the following condition: If the expected value equals to the current value of the counter, then the operation sets a new number for the counter. Otherwise, the operation does not set the new value for the counter. |
new value |
Specify the new number for the counter. |
return current value |
When this box is checked, the operation returns the current value of the counter. |
Returns the current value of the counter.
Consider the following counter:
The example below checks if the expected value of the "CarsParkingLot"
counter equals to 20
, and if it does equal to 20
, then the operation sets a new value to 35
.
The result of this operation will look as shown below after the Codeless logic runs: