busybee
busybee copied to clipboard
add a way to not run the code to create the `operation` when using the no-op impl.
We want to avoid calling thing.slowToString() in release builds.
busyBee.busyWith(thing.slowToString());
try {
thing.process();
} finally {
// Espresso will continue
busyBee.completed(thing.slowToString());
}
maybe something like:
// { thing.slowToString() } is only executed when busyBee
val thingOperationId: OperationId = busyBee.createOperationId { counter -> thing.slowToString(counter) }
busyBee.busyWith(thingOperationId);
try {
thing.process();
} finally {
// Espresso will continue
busyBee.completed(thingOperationId);
}
sealed class OperationId {
object NoOp: OperationId()
class StringOperationId(val operationId: String): OperationId()
}
the noop impl of busybee returns NoOp in release builds.