keycloak
公開メンバ関数 | 静的公開メンバ関数 | 非公開メンバ関数 | 非公開変数類 | 全メンバ一覧
org.keycloak.models.sessions.infinispan.changes.MergedUpdate< S extends SessionEntity > クラステンプレート
org.keycloak.models.sessions.infinispan.changes.MergedUpdate< S extends SessionEntity > の継承関係図
Inheritance graph
org.keycloak.models.sessions.infinispan.changes.MergedUpdate< S extends SessionEntity > 連携図
Collaboration graph

公開メンバ関数

void runUpdate (S session)
 
CacheOperation getOperation (S session)
 
CrossDCMessageStatus getCrossDCMessageStatus (SessionEntityWrapper< S > sessionWrapper)
 
String toString ()
 
default long getLifespanMs ()
 

静的公開メンバ関数

static< S extends SessionEntity > MergedUpdate< S > computeUpdate (List< SessionUpdateTask< S >> childUpdates, SessionEntityWrapper< S > sessionWrapper)
 

非公開メンバ関数

 MergedUpdate (CacheOperation operation, CrossDCMessageStatus crossDCMessageStatus)
 

非公開変数類

List< SessionUpdateTask< S > > childUpdates = new LinkedList<>()
 
CacheOperation operation
 
CrossDCMessageStatus crossDCMessageStatus
 

詳解

著者
Marek Posolda

構築子と解体子

◆ MergedUpdate()

35  {
36  this.operation = operation;
38  }
CacheOperation operation
Definition: MergedUpdate.java:31
CrossDCMessageStatus crossDCMessageStatus
Definition: MergedUpdate.java:32

関数詳解

◆ computeUpdate()

static <S extends SessionEntity> MergedUpdate<S> org.keycloak.models.sessions.infinispan.changes.MergedUpdate< S extends SessionEntity >.computeUpdate ( List< SessionUpdateTask< S >>  childUpdates,
SessionEntityWrapper< S >  sessionWrapper 
)
inlinestatic
58  {
59  if (childUpdates == null || childUpdates.isEmpty()) {
60  return null;
61  }
62 
63  MergedUpdate<S> result = null;
64  S session = sessionWrapper.getEntity();
65  for (SessionUpdateTask<S> child : childUpdates) {
66  if (result == null) {
67  result = new MergedUpdate<>(child.getOperation(session), child.getCrossDCMessageStatus(sessionWrapper));
68  result.childUpdates.add(child);
69  } else {
70 
71  // Merge the operations. REMOVE is special case as other operations are not needed then.
72  CacheOperation mergedOp = result.getOperation(session).merge(child.getOperation(session), session);
73  if (mergedOp == CacheOperation.REMOVE) {
74  result = new MergedUpdate<>(child.getOperation(session), child.getCrossDCMessageStatus(sessionWrapper));
75  result.childUpdates.add(child);
76  return result;
77  }
78 
79  result.operation = mergedOp;
80 
81  // Check if we need to send message to other DCs and how critical it is
82  CrossDCMessageStatus currentDCStatus = result.getCrossDCMessageStatus(sessionWrapper);
83 
84  // Optimization. If we already have SYNC, we don't need to retrieve childDCStatus
85  if (currentDCStatus != CrossDCMessageStatus.SYNC) {
86  CrossDCMessageStatus childDCStatus = child.getCrossDCMessageStatus(sessionWrapper);
87  result.crossDCMessageStatus = currentDCStatus.merge(childDCStatus);
88  }
89 
90  // Finally add another update to the result
91  result.childUpdates.add(child);
92  }
93  }
94 
95  return result;
96  }
List< SessionUpdateTask< S > > childUpdates
Definition: MergedUpdate.java:30
S getEntity()
Definition: SessionEntityWrapper.java:95

◆ getCrossDCMessageStatus()

53  {
54  return crossDCMessageStatus;
55  }
CrossDCMessageStatus crossDCMessageStatus
Definition: MergedUpdate.java:32

◆ getLifespanMs()

default long org.keycloak.models.sessions.infinispan.changes.SessionUpdateTask< S extends SessionEntity >.getLifespanMs ( )
inlineinherited
33  {
34  return -1;
35  }

◆ getOperation()

48  {
49  return operation;
50  }
CacheOperation operation
Definition: MergedUpdate.java:31

◆ runUpdate()

void org.keycloak.models.sessions.infinispan.changes.MergedUpdate< S extends SessionEntity >.runUpdate ( session)
inline
41  {
42  for (SessionUpdateTask<S> child : childUpdates) {
43  child.runUpdate(session);
44  }
45  }
List< SessionUpdateTask< S > > childUpdates
Definition: MergedUpdate.java:30

◆ toString()

99  {
100  return "MergedUpdate" + childUpdates;
101  }
List< SessionUpdateTask< S > > childUpdates
Definition: MergedUpdate.java:30

メンバ詳解

◆ childUpdates

List<SessionUpdateTask<S> > org.keycloak.models.sessions.infinispan.changes.MergedUpdate< S extends SessionEntity >.childUpdates = new LinkedList<>()
private

◆ crossDCMessageStatus

◆ operation


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