In case empty selector in SubscribeNative we should use default dynamic merged head - also valid for anyLabelSelector (#173)
This commit is contained in:
@@ -28,10 +28,13 @@ class Selector {
|
|||||||
@JvmStatic
|
@JvmStatic
|
||||||
val empty = EmptyMatcher()
|
val empty = EmptyMatcher()
|
||||||
|
|
||||||
|
@JvmStatic
|
||||||
|
val anyLabel = AnyLabelMatcher()
|
||||||
|
|
||||||
@JvmStatic
|
@JvmStatic
|
||||||
fun convertToMatcher(req: BlockchainOuterClass.Selector?): LabelSelectorMatcher {
|
fun convertToMatcher(req: BlockchainOuterClass.Selector?): LabelSelectorMatcher {
|
||||||
return when {
|
return when {
|
||||||
req == null -> AnyLabelMatcher()
|
req == null -> anyLabel
|
||||||
req.hasLabelSelector() -> req.labelSelector.let { selector ->
|
req.hasLabelSelector() -> req.labelSelector.let { selector ->
|
||||||
if (StringUtils.isNotEmpty(selector.name)) {
|
if (StringUtils.isNotEmpty(selector.name)) {
|
||||||
val values = selector.valueList
|
val values = selector.valueList
|
||||||
@@ -43,7 +46,7 @@ class Selector {
|
|||||||
LabelMatcher(selector.name, selector.valueList)
|
LabelMatcher(selector.name, selector.valueList)
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
AnyLabelMatcher()
|
anyLabel
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
req.hasAndSelector() -> AndMatcher(
|
req.hasAndSelector() -> AndMatcher(
|
||||||
@@ -66,7 +69,7 @@ class Selector {
|
|||||||
)
|
)
|
||||||
req.hasNotSelector() -> NotMatcher(convertToMatcher(req.notSelector.selector))
|
req.hasNotSelector() -> NotMatcher(convertToMatcher(req.notSelector.selector))
|
||||||
req.hasExistsSelector() -> ExistsMatcher(req.existsSelector.name)
|
req.hasExistsSelector() -> ExistsMatcher(req.existsSelector.name)
|
||||||
else -> AnyLabelMatcher()
|
else -> anyLabel
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -158,7 +158,7 @@ open class EthereumPosMultiStream(
|
|||||||
}
|
}
|
||||||
|
|
||||||
override fun getHead(mather: Selector.Matcher): Head =
|
override fun getHead(mather: Selector.Matcher): Head =
|
||||||
if (mather == Selector.empty) {
|
if (mather == Selector.empty || mather == Selector.anyLabel) {
|
||||||
head
|
head
|
||||||
} else {
|
} else {
|
||||||
filteredHeads.computeIfAbsent(mather.describeInternal().intern()) { _ ->
|
filteredHeads.computeIfAbsent(mather.describeInternal().intern()) { _ ->
|
||||||
|
|||||||
Reference in New Issue
Block a user