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 );