Increment by 1, return previous¶
Atomically increments 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 incrementing part of the logic is atomic, the retrieval of the value before it is incremented is not.
- (void)getAndIncrementWithCounterName:(NSString * _Nonnull)counterName responseHandler:^(NSInteger)responseHandler errorHandler:^(Fault * _Nonnull)errorHandler;
func getAndIncrement(counterName: String, responseHandler: ((Int) -> Void)!, errorHandler: ((Fault) -> Void)!)
where:
Argument | Description |
---|---|
counterName |
name of the counter to increment. |
Example¶
[Backendless.shared.counters getAndIncrementWithCounterName:@"MyCounter" responseHandler:^(NSInteger value) {
NSLog(@"Previous value = %li", value);
} errorHandler:^(Fault *fault) {
NSLog(@"Error: %@", fault.message);
}];
//
id<IAtomic> myCounter = [Backendless.shared.counters ofCounterName:@"MyCounter"];
[myCounter getAndIncrementWithResponseHandler:^(NSInteger value) {
NSLog(@"Previous value = %li", value);
} errorHandler:^(Fault *fault) {
NSLog(@"Error: %@", fault.message);
}];
Backendless.shared.counters.getAndIncrement(counterName: "MyCounter", responseHandler: { value in
print("Previous value = \(value)")
}, errorHandler: { fault in
print("Error: \(fault.message ?? "")")
})
//
let myCounter = Backendless.shared.counters.of(counterName: "MyCounter")
myCounter.getAndIncrement(responseHandler: { value in
print("Previous value = \(value)")
}, errorHandler: { fault in
print("Error: \(fault.message ?? "")")
})
Codeless Reference¶
where:
Argument | Description |
---|---|
counter name |
Name of the counter whose value must be incremented. |
increment by |
Specify the number to increment the value by. |
return previous value |
When this box is checked, the operation returns the previous value of the counter. |
Returns the previous value of the counter.
Consider the following counter:
The example below increments the value of the "CarsParkingLot"
by 1
. This operation returns 0
, since the return previous value
box is checked. To avoid confusion, the value was incremented by 1
, even though the return value is 0
.
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 incremented by 1
.