gluu
公開メンバ関数 | 非公開メンバ関数 | 非公開変数類 | 静的非公開変数類 | 全メンバ一覧
org.gluu.credmanager.misc.ExpirationMap< K, V > クラステンプレート
org.gluu.credmanager.misc.ExpirationMap< K, V > 連携図
Collaboration graph

公開メンバ関数

 ExpirationMap ()
 
 ExpirationMap (long timeWindow, int maxEntries)
 
void put (K key, V value)
 
get (K key)
 
Pair< V, Boolean > getWithExpired (K key, long instant)
 
remove (K key)
 

非公開メンバ関数

void initMap (long timeWindow, int maxEntries)
 
void reduceMap ()
 

非公開変数類

long lastCleaning
 
long timeWindow
 
int maxEntries
 
ConcurrentHashMap< K, Pair< V, Long > > map = new ConcurrentHashMap<>()
 

静的非公開変数類

static final long TIME_WINDOW_DEFAULT = 120000L
 
static final int MAX_STORED_ENTRIES = 1000
 

詳解

著者
jgomer

構築子と解体子

◆ ExpirationMap() [1/2]

27  {
29  }
static final int MAX_STORED_ENTRIES
Definition: ExpirationMap.java:20
void initMap(long timeWindow, int maxEntries)
Definition: ExpirationMap.java:54
static final long TIME_WINDOW_DEFAULT
Definition: ExpirationMap.java:19

◆ ExpirationMap() [2/2]

org.gluu.credmanager.misc.ExpirationMap< K, V >.ExpirationMap ( long  timeWindow,
int  maxEntries 
)
inline
31  {
33  }
long timeWindow
Definition: ExpirationMap.java:23
void initMap(long timeWindow, int maxEntries)
Definition: ExpirationMap.java:54
int maxEntries
Definition: ExpirationMap.java:24

関数詳解

◆ get()

V org.gluu.credmanager.misc.ExpirationMap< K, V >.get ( key)
inline
40  {
41  return map.get(key).getX();
42  }
ConcurrentHashMap< K, Pair< V, Long > > map
Definition: ExpirationMap.java:25

◆ getWithExpired()

Pair<V, Boolean> org.gluu.credmanager.misc.ExpirationMap< K, V >.getWithExpired ( key,
long  instant 
)
inline
44  {
45  Pair<V, Long> pair = map.get(key);
46  return pair == null ? null : new Pair<>(pair.getX(), instant - pair.getY() > timeWindow);
47  }
long timeWindow
Definition: ExpirationMap.java:23
ConcurrentHashMap< K, Pair< V, Long > > map
Definition: ExpirationMap.java:25

◆ initMap()

void org.gluu.credmanager.misc.ExpirationMap< K, V >.initMap ( long  timeWindow,
int  maxEntries 
)
inlineprivate
54  {
55  this.timeWindow = timeWindow;
56  this.maxEntries = maxEntries;
57  map = new ConcurrentHashMap<>();
58  lastCleaning = System.currentTimeMillis();
59  }
long lastCleaning
Definition: ExpirationMap.java:22
long timeWindow
Definition: ExpirationMap.java:23
ConcurrentHashMap< K, Pair< V, Long > > map
Definition: ExpirationMap.java:25
int maxEntries
Definition: ExpirationMap.java:24

◆ put()

void org.gluu.credmanager.misc.ExpirationMap< K, V >.put ( key,
value 
)
inline
35  {
36  map.put(key, new Pair<>(value, System.currentTimeMillis()));
37  reduceMap();
38  }
ConcurrentHashMap< K, Pair< V, Long > > map
Definition: ExpirationMap.java:25
void reduceMap()
Definition: ExpirationMap.java:61

◆ reduceMap()

void org.gluu.credmanager.misc.ExpirationMap< K, V >.reduceMap ( )
inlineprivate
61  {
62 
63  long now = System.currentTimeMillis();
64  if (now - lastCleaning > timeWindow && map.size() > maxEntries) {
65  lastCleaning = now;
66  List<K> removals = new ArrayList<>();
67 
68  for (K key : map.keySet()) {
69  if (now - map.get(key).getY() > timeWindow) {
70  removals.add(key);
71  }
72  }
73  //Apply all removals consecutively
74  for (K key : removals) {
75  map.remove(key);
76  }
77 
78  }
79  /*
80  //no parallelism in the search, grab the first key that matches the condition
81  String aKey = map.searchKeys(Long.MAX_VALUE, key -> (now - map.get(key) > TIME_WINDOW_DEFAULT) ? key : null);
82  map.remove(aKey);
83  */
84  }
long lastCleaning
Definition: ExpirationMap.java:22
long timeWindow
Definition: ExpirationMap.java:23
ConcurrentHashMap< K, Pair< V, Long > > map
Definition: ExpirationMap.java:25
int maxEntries
Definition: ExpirationMap.java:24

◆ remove()

V org.gluu.credmanager.misc.ExpirationMap< K, V >.remove ( key)
inline
49  {
50  Pair<V, Long> pair = map.remove(key);
51  return pair == null ? null : pair.getX();
52  }
ConcurrentHashMap< K, Pair< V, Long > > map
Definition: ExpirationMap.java:25

メンバ詳解

◆ lastCleaning

long org.gluu.credmanager.misc.ExpirationMap< K, V >.lastCleaning
private

◆ map

ConcurrentHashMap<K, Pair<V, Long> > org.gluu.credmanager.misc.ExpirationMap< K, V >.map = new ConcurrentHashMap<>()
private

◆ MAX_STORED_ENTRIES

final int org.gluu.credmanager.misc.ExpirationMap< K, V >.MAX_STORED_ENTRIES = 1000
staticprivate

◆ maxEntries

int org.gluu.credmanager.misc.ExpirationMap< K, V >.maxEntries
private

◆ TIME_WINDOW_DEFAULT

final long org.gluu.credmanager.misc.ExpirationMap< K, V >.TIME_WINDOW_DEFAULT = 120000L
staticprivate

◆ timeWindow

long org.gluu.credmanager.misc.ExpirationMap< K, V >.timeWindow
private

このクラス詳解は次のファイルから抽出されました: