Conditional update¶
Atomically sets the value to the given updated value if the current value == the expected value.
// *******************************************
// synchronous methods
// *******************************************
// Backendless.Counters approach
public Long Backendless.Counters.compareAndSet( String counterName,
Number expected,
Number updated );
// IAtomic approach
IAtomic<T> counter = Backendless.Counters.of( String counterName,
Class<? extends T> type );
public T counter.compareAndSet( Number expected, Number updated );
// *******************************************
// asynchronous methods
// *******************************************
// Backendless.Counters approach
public <T> T Backendless.Counters.compareAndSet( String counterName,
Number expected,
Number updated,
AsyncCallback<T> callback );
// IAtomic approach
IAtomic<T> counter = Backendless.Counters.of( String counterName,
Class<? extends T> type );
public T counter.compareAndSet( Number expected,
Number updated,
AsyncCallback<T> callback );
where:
Argument | Description |
---|---|
counterName |
name of the counter to compare. |
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<Boolean> callback = new AsyncCallback<Boolean>()
{
@Override
public void handleResponse( Boolean result )
{
Log.i( "MYAPP", "[ASYNC] value has been updated - " + result );
}
@Override
public void handleFault( BackendlessFault backendlessFault )
{
Log.e( "MYAPP", "Error - " + backendlessFault.getMessage() );
}
};
Backendless.Counters.compareAndSet( "my counter", 1000, 2000, callback );
IAtomic<Integer> myCounter = Backendless.Counters.of( "my counter", Integer.class );
boolean result = myCounter.compareAndSet( 1000, 2000 );
Log.i( "MYAPP", "[SYNC] value has been updated - " + result );
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: