Decrement by 1, return previous¶
Atomically decrements by one 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 decrementing part of the logic is atomic, the retrieval of the value before it is decremented is not.
// *******************************************
// synchronous methods
// *******************************************
// Backendless.Counters approach
public int Backendless.Counters.GetAndDecrement( String counterName );
public T Backendless.Counters.GetAndDecrement<T>( String counterName );
// IAtomic approach
IAtomic<T> counter = Backendless.Counters.Of<T>( String counterName );
public T counter.GetAndDecrement();
// *******************************************
// asynchronous methods
// *******************************************
// Backendless.Counters approach
public void Backendless.Counters.GetAndDecrement<T>( String counterName, AsyncCallback<T> callback );
// IAtomic approach
IAtomic<T> counter = Backendless.Counters.Of<T>( String counterName );
public void counter.GetAndDecrement( AsyncCallback<T> callback );
where:
Argument | Description |
---|---|
counterName |
name of the counter to decrement. |
T |
numeric type for the counter values. Can be an instance of byte , short , int , float , long and double . |
callback |
the callback used for asynchronous calls to indicate that the operation has either successfully completed or resulted in error. |
Example¶
AsyncCallback<int> callback = new AsyncCallback<int>(
result =>
{
System.Console.WriteLine( "[ASYNC] previous counter value is - " + result );
},
fault =>
{
System.Console.WriteLine( "Error - " + fault );
} );
Backendless.Counters.GetAndDecrement( "my counter", callback );
IAtomic<int> myCounter = Backendless.Counters.Of<int>( "my counter" );
int counter = myCounter.GetAndDecrement();
System.Console.WriteLine( "[SYNC] previous counter value through IAtomic is - " + counter );
counter = Backendless.Counters.GetAndDecrement( "my counter" );
System.Console.WriteLine( "[SYNC] previous counter value is - " + counter );
long longCounter = Backendless.Counters.GetAndDecrement<long>( "my counter" );
System.Console.WriteLine( "[SYNC] previous counter value is - " + longCounter );
Codeless Reference¶
where:
Argument | Description |
---|---|
counter name |
Name of the counter whose value must be decremented. |
return previous value |
When this box is checked, the operation returns the previous value of the counter. |
Returns the previous value of the counter, while decrementing the value by 1.
Consider the following counter:
The example below decrements the value of the "CarsParkingLot"
by 1
. This operation returns 10
, since the return previous value
box is checked. To avoid confusion, the value was decremented by 1
, even though the return value is 10
.
The result of this operation will look as shown below after the Codeless logic runs, as you can see the value of the counter was decremented by 1
.