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
|
||||
val empty = EmptyMatcher()
|
||||
|
||||
@JvmStatic
|
||||
val anyLabel = AnyLabelMatcher()
|
||||
|
||||
@JvmStatic
|
||||
fun convertToMatcher(req: BlockchainOuterClass.Selector?): LabelSelectorMatcher {
|
||||
return when {
|
||||
req == null -> AnyLabelMatcher()
|
||||
req == null -> anyLabel
|
||||
req.hasLabelSelector() -> req.labelSelector.let { selector ->
|
||||
if (StringUtils.isNotEmpty(selector.name)) {
|
||||
val values = selector.valueList
|
||||
@@ -43,7 +46,7 @@ class Selector {
|
||||
LabelMatcher(selector.name, selector.valueList)
|
||||
}
|
||||
} else {
|
||||
AnyLabelMatcher()
|
||||
anyLabel
|
||||
}
|
||||
}
|
||||
req.hasAndSelector() -> AndMatcher(
|
||||
@@ -66,7 +69,7 @@ class Selector {
|
||||
)
|
||||
req.hasNotSelector() -> NotMatcher(convertToMatcher(req.notSelector.selector))
|
||||
req.hasExistsSelector() -> ExistsMatcher(req.existsSelector.name)
|
||||
else -> AnyLabelMatcher()
|
||||
else -> anyLabel
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -158,7 +158,7 @@ open class EthereumPosMultiStream(
|
||||
}
|
||||
|
||||
override fun getHead(mather: Selector.Matcher): Head =
|
||||
if (mather == Selector.empty) {
|
||||
if (mather == Selector.empty || mather == Selector.anyLabel) {
|
||||
head
|
||||
} else {
|
||||
filteredHeads.computeIfAbsent(mather.describeInternal().intern()) { _ ->
|
||||
|
||||
Reference in New Issue
Block a user