|
16 | 16 |
|
17 | 17 | package kotlinx.coroutines.experimental.internal
|
18 | 18 |
|
19 |
| -import kotlin.jvm.* |
20 |
| - |
21 | 19 | /** @suppress **This is unstable API and it is subject to change.** */
|
22 | 20 | public expect open class LockFreeLinkedListNode() {
|
23 | 21 | public val isRemoved: Boolean
|
| 22 | + public val next: Any |
24 | 23 | public val nextNode: LockFreeLinkedListNode
|
| 24 | + public val prev: Any |
25 | 25 | public val prevNode: LockFreeLinkedListNode
|
26 | 26 | public fun addLast(node: LockFreeLinkedListNode)
|
27 | 27 | public fun addOneIfEmpty(node: LockFreeLinkedListNode): Boolean
|
@@ -57,11 +57,23 @@ public expect open class AddLastDesc<T : LockFreeLinkedListNode>(
|
57 | 57 | val queue: LockFreeLinkedListNode
|
58 | 58 | val node: T
|
59 | 59 | protected override fun onPrepare(affected: LockFreeLinkedListNode, next: LockFreeLinkedListNode): Any?
|
| 60 | + override fun finishOnSuccess(affected: LockFreeLinkedListNode, next: LockFreeLinkedListNode) |
| 61 | +} |
| 62 | + |
| 63 | +public expect open class RemoveFirstDesc<T>(queue: LockFreeLinkedListNode): AbstractAtomicDesc { |
| 64 | + val queue: LockFreeLinkedListNode |
| 65 | + public val result: T |
| 66 | + protected open fun validatePrepared(node: T): Boolean |
| 67 | + protected final override fun onPrepare(affected: LockFreeLinkedListNode, next: LockFreeLinkedListNode): Any? |
| 68 | + final override fun finishOnSuccess(affected: LockFreeLinkedListNode, next: LockFreeLinkedListNode) |
60 | 69 | }
|
61 | 70 |
|
62 | 71 | /** @suppress **This is unstable API and it is subject to change.** */
|
63 | 72 | public expect abstract class AbstractAtomicDesc : AtomicDesc {
|
64 |
| - protected abstract fun onPrepare(affected: LockFreeLinkedListNode, next: LockFreeLinkedListNode): Any? |
65 | 73 | final override fun prepare(op: AtomicOp<*>): Any?
|
66 | 74 | final override fun complete(op: AtomicOp<*>, failure: Any?)
|
| 75 | + protected open fun failure(affected: LockFreeLinkedListNode, next: Any): Any? |
| 76 | + protected open fun retry(affected: LockFreeLinkedListNode, next: Any): Boolean |
| 77 | + protected abstract fun onPrepare(affected: LockFreeLinkedListNode, next: LockFreeLinkedListNode): Any? // non-null on failure |
| 78 | + protected abstract fun finishOnSuccess(affected: LockFreeLinkedListNode, next: LockFreeLinkedListNode) |
67 | 79 | }
|
0 commit comments