mirror of
https://github.com/twitter/the-algorithm.git
synced 2024-06-01 08:48:46 +02:00
ef4c5eb65e
Please note we have force-pushed a new initial commit in order to remove some publicly-available Twitter user information. Note that this process may be required in the future.
23 lines
699 B
Scala
23 lines
699 B
Scala
package com.twitter.cr_mixer.featureswitch
|
|
|
|
import com.twitter.finagle.Filter
|
|
import javax.inject.Inject
|
|
import javax.inject.Singleton
|
|
import scala.collection.concurrent.TrieMap
|
|
import com.twitter.abdecider.Bucket
|
|
import com.twitter.finagle.Service
|
|
|
|
@Singleton
|
|
class SetImpressedBucketsLocalContextFilter @Inject() () extends Filter.TypeAgnostic {
|
|
override def toFilter[Req, Rep]: Filter[Req, Rep, Req, Rep] =
|
|
(request: Req, service: Service[Req, Rep]) => {
|
|
|
|
val concurrentTrieMap = TrieMap
|
|
.empty[Bucket, Boolean] // Trie map has no locks and O(1) inserts
|
|
CrMixerImpressedBuckets.localImpressedBucketsMap.let(concurrentTrieMap) {
|
|
service(request)
|
|
}
|
|
}
|
|
|
|
}
|