Skip to content

Commit 6a6770c

Browse files
committed
[FAB-6019] Implement private data puller
This commit implements an object that pulls private data on demand according to a given specification that includes details like: - Collection name - TxID - Channel Change-Id: I15244736628a8cd91f77eb80a4e8083267d9dcbd Signed-off-by: yacovm <yacovm@il.ibm.com>
1 parent f3710d6 commit 6a6770c

File tree

9 files changed

+1157
-120
lines changed

9 files changed

+1157
-120
lines changed

gossip/filter/filter.go

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,3 +75,17 @@ func First(peerPool []discovery.NetworkMember, filter RoutingFilter) *comm.Remot
7575
}
7676
return nil
7777
}
78+
79+
// AnyMatch filters out peers that don't match any of the given filters
80+
func AnyMatch(peerPool []discovery.NetworkMember, filters ...RoutingFilter) []discovery.NetworkMember {
81+
var res []discovery.NetworkMember
82+
for _, peer := range peerPool {
83+
for _, matches := range filters {
84+
if matches(peer) {
85+
res = append(res, peer)
86+
break
87+
}
88+
}
89+
}
90+
return res
91+
}

gossip/filter/filter_test.go

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,27 @@ func TestCombineRoutingFilters(t *testing.T) {
3737
assert.False(t, CombineRoutingFilters(a, b)(discovery.NetworkMember{InternalEndpoint: "b"}))
3838
}
3939

40+
func TestAnyMatch(t *testing.T) {
41+
peerA := discovery.NetworkMember{Endpoint: "a"}
42+
peerB := discovery.NetworkMember{Endpoint: "b"}
43+
peerC := discovery.NetworkMember{Endpoint: "c"}
44+
peerD := discovery.NetworkMember{Endpoint: "d"}
45+
46+
peers := []discovery.NetworkMember{peerA, peerB, peerC, peerD}
47+
48+
matchB := func(nm discovery.NetworkMember) bool {
49+
return nm.Endpoint == "b"
50+
}
51+
matchC := func(nm discovery.NetworkMember) bool {
52+
return nm.Endpoint == "c"
53+
}
54+
55+
matched := AnyMatch(peers, matchB, matchC)
56+
assert.Len(t, matched, 2)
57+
assert.Contains(t, matched, peerB)
58+
assert.Contains(t, matched, peerC)
59+
}
60+
4061
func TestFirst(t *testing.T) {
4162
peerA := discovery.NetworkMember{Endpoint: "a"}
4263
peerB := discovery.NetworkMember{Endpoint: "b"}

0 commit comments

Comments
 (0)