1- using System . Collections . Generic ;
1+ using System ;
2+ using System . Collections . Generic ;
23using System . Linq ;
34using System . Threading . Tasks ;
45
@@ -9,6 +10,7 @@ namespace BloomFilter.Redis
910 /// </summary>
1011 /// <typeparam name="T"></typeparam>
1112 /// <seealso cref="Filter{T}" />
13+ [ Obsolete ( "Use non-generic FilterRedis" ) ]
1214 public class FilterRedis < T > : Filter < T >
1315 {
1416 private readonly IRedisBitOperate _redisBitOperate ;
@@ -63,17 +65,12 @@ public override async Task<bool> AddAsync(byte[] element)
6365 return results . Any ( a => ! a ) ;
6466 }
6567
66- /// <summary>
67- /// Adds the specified elements.
68- /// </summary>
69- /// <param name="elements">The elements.</param>
70- /// <returns></returns>
71- public override IList < bool > Add ( IEnumerable < T > elements )
68+ public override IList < bool > Add ( IEnumerable < byte [ ] > elements )
7269 {
7370 var addHashs = new List < int > ( ) ;
7471 foreach ( var element in elements )
7572 {
76- addHashs . AddRange ( ComputeHash ( ToBytes ( element ) ) ) ;
73+ addHashs . AddRange ( ComputeHash ( element ) ) ;
7774 }
7875
7976 IList < bool > results = new List < bool > ( ) ;
@@ -95,12 +92,12 @@ public override IList<bool> Add(IEnumerable<T> elements)
9592 return results ;
9693 }
9794
98- public override async Task < IList < bool > > AddAsync ( IEnumerable < T > elements )
95+ public async override Task < IList < bool > > AddAsync ( IEnumerable < byte [ ] > elements )
9996 {
10097 var addHashs = new List < int > ( ) ;
10198 foreach ( var element in elements )
10299 {
103- addHashs . AddRange ( ComputeHash ( ToBytes ( element ) ) ) ;
100+ addHashs . AddRange ( ComputeHash ( element ) ) ;
104101 }
105102
106103 IList < bool > results = new List < bool > ( ) ;
@@ -122,19 +119,6 @@ public override async Task<IList<bool>> AddAsync(IEnumerable<T> elements)
122119 return results ;
123120 }
124121
125- /// <summary>
126- /// Removes all elements from the filter
127- /// </summary>
128- public override void Clear ( )
129- {
130- _redisBitOperate . Clear ( _name ) ;
131- }
132-
133- public override Task ClearAsync ( )
134- {
135- return _redisBitOperate . ClearAsync ( _name ) ;
136- }
137-
138122 /// <summary>
139123 /// Tests whether an element is present in the filter
140124 /// </summary>
@@ -158,17 +142,12 @@ public override async Task<bool> ContainsAsync(byte[] element)
158142 return results . All ( a => a ) ;
159143 }
160144
161- /// <summary>
162- /// Tests whether an elements is present in the filter
163- /// </summary>
164- /// <param name="elements"></param>
165- /// <returns></returns>
166- public override IList < bool > Contains ( IEnumerable < T > elements )
145+ public override IList < bool > Contains ( IEnumerable < byte [ ] > elements )
167146 {
168147 var addHashs = new List < int > ( ) ;
169148 foreach ( var element in elements )
170149 {
171- addHashs . AddRange ( ComputeHash ( ToBytes ( element ) ) ) ;
150+ addHashs . AddRange ( ComputeHash ( element ) ) ;
172151 }
173152
174153 IList < bool > results = new List < bool > ( ) ;
@@ -190,12 +169,12 @@ public override IList<bool> Contains(IEnumerable<T> elements)
190169 return results ;
191170 }
192171
193- public override async Task < IList < bool > > ContainsAsync ( IEnumerable < T > elements )
172+ public async override Task < IList < bool > > ContainsAsync ( IEnumerable < byte [ ] > elements )
194173 {
195174 var addHashs = new List < int > ( ) ;
196175 foreach ( var element in elements )
197176 {
198- addHashs . AddRange ( ComputeHash ( ToBytes ( element ) ) ) ;
177+ addHashs . AddRange ( ComputeHash ( element ) ) ;
199178 }
200179
201180 IList < bool > results = new List < bool > ( ) ;
@@ -217,6 +196,29 @@ public override async Task<IList<bool>> ContainsAsync(IEnumerable<T> elements)
217196 return results ;
218197 }
219198
199+ public override bool All ( IEnumerable < byte [ ] > elements )
200+ {
201+ return Contains ( elements ) . All ( e => e ) ;
202+ }
203+
204+ public async override Task < bool > AllAsync ( IEnumerable < byte [ ] > elements )
205+ {
206+ return ( await ContainsAsync ( elements ) ) . All ( e => e ) ;
207+ }
208+
209+ /// <summary>
210+ /// Removes all elements from the filter
211+ /// </summary>
212+ public override void Clear ( )
213+ {
214+ _redisBitOperate . Clear ( _name ) ;
215+ }
216+
217+ public override Task ClearAsync ( )
218+ {
219+ return _redisBitOperate . ClearAsync ( _name ) ;
220+ }
221+
220222 public override void Dispose ( )
221223 {
222224 _redisBitOperate . Dispose ( ) ;
0 commit comments