Increment by N, return previous¶
Atomically adds the given value to the current value and returns the previous value of the counter. It is possible that multiple concurrent client requests may receive the same previous value. This occurs since only the incrementing part of the logic is atomic, the retrieval of the value before it is incremented is not.
// *******************************************
// synchronous methods
// *******************************************
// Backendless.Counters approach
public Long Backendless.Counters.getAndAdd( String counterName, Number value );
// IAtomic approach
IAtomic<T> counter = Backendless.Counters.of( String counterName, Class<? extends T> type );
public T counter.getAndAdd( Number value );
// *******************************************
// asynchronous methods
// *******************************************
// Backendless.Counters approach
public <T> T Backendless.Counters.getAndAdd( String counterName, AsyncCallback<T> callback );
// IAtomic approach
IAtomic<T> counter = Backendless.Counters.of( String counterName, Class<? extends T> type );
public T counter.getAndAdd( Number value, AsyncCallback<T> callback );
where:
Argument | Description |
---|---|
counterName |
name of the counter to update. |
value |
number to add to the current counter value |
type |
numeric type for the counter values. Can be an instance of Byte.class , Short.class , Integer.class , Float.class , Long.class and Double.class . |
callback |
the callback used for asynchronous calls to indicate that the operation has either successfully completed or resulted in error. |
Example¶
AsyncCallback<Integer> callback = new AsyncCallback<Integer>()
{
@Override
public void handleResponse( Integer value )
{
Log.i( "MYAPP", "[ASYNC] previous counter value is - " + value );
}
@Override
public void handleFault( BackendlessFault backendlessFault )
{
Log.e( "MYAPP", "Error - " + backendlessFault.getMessage() );
}
};
Backendless.Counters.getAndAdd( "my counter", 2000, callback );
IAtomic<Integer> myCounter = Backendless.Counters.of( "my counter", Integer.class );
int counterValue = myCounter.getAndAdd( 2000 );
Log.i( "MYAPP", "[SYNC] previous counter value is - " + counterValue );