Conditional update¶
Atomically sets the value to the given updated value if the current value equals the expected value.
- (void)compareAndSetWithCounterName:(NSString * _Nonnull)counterName expected:(NSInteger)expected updated:(NSInteger)updated responseHandler:^(NSInteger)responseHandler errorHandler:^(Fault * _Nonnull)errorHandler;
func compareAndSet(counterName: String, expected: Int, updated: Int, responseHandler: ((Int) -> Void)!, errorHandler: ((Fault) -> Void)!)
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. |
Example¶
[Backendless.shared.counters compareAndSetWithCounterName:@"MyCounter" expected:1000 updated:2000 responseHandler:^(NSInteger value) {
NSLog(@"Value has been updated: %li", value);
} errorHandler:^(Fault *fault) {
NSLog(@"Error: %@", fault.message);
}];
//
id<IAtomic> myCounter = [Backendless.shared.counters ofCounterName:@"MyCounter"];
[myCounter compareAndSetWithExpected:1000 updated:2000 responseHandler:^(NSInteger value) {
NSLog(@"Value has been updated: %li", value);
} errorHandler:^(Fault *fault) {
NSLog(@"Error: %@", fault.message);
}];
Backendless.shared.counters.compareAndSet(counterName: "MyCounter", expected: 1000, updated: 2000, responseHandler: { value in
print("Value has been updated: \(value)")
}, errorHandler: { fault in
print("Error: \(fault.message ?? "")")
})
//
let myCounter = Backendless.shared.counters.of(counterName: "MyCounter")
myCounter.compareAndSet(expected: 1000, updated: 2000, responseHandler: { value in
print("Value has been updated: \(value)")
}, errorHandler: { fault in
print("Error: \(fault.message ?? "")")
})
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: