package Ġm ary k . datastore . ro cksdb . processors Ċ Ċ import Ġm ary k . core . models . Is Root Values DataModel Ċ import Ġm ary k . core . properties . Property Definitions Ċ import Ġm ary k . core . properties . references . Is Property Reference For Cache Ċ import Ġm ary k . core . query . changes . DataObject Version ed Change Ċ import Ġm ary k . core . query . requests . Scan Changes Request Ċ import Ġm ary k . core . query . responses . Changes Response Ċ import Ġm ary k . datastore . ro cksdb . DB Accessor Ċ import Ġm ary k . datastore . ro cksdb . Historic TableColumn F amilies Ċ import Ġm ary k . datastore . ro cksdb . R ocks DB DataStore Ċ import Ġm ary k . datastore . shared . Cache Ċ import Ġm ary k . datastore . shared . Store Action Ċ import Ġm ary k . datastore . shared . check Max Versions Ċ import Ġm ary k . ro cksdb . use Ċ Ċ internal Ġtype alias ĠScan Changes Store Action < DM , ĠP > Ġ= ĠStore Action < DM , ĠP , ĠScan Changes Request < DM , ĠP >, ĠChanges Response < DM , ĠP >> Ċ internal Ġtype alias ĠAny Scan Changes Store Action Ġ= ĠScan Changes Store Action < Is Root Values DataModel < Property Definitions >, ĠProperty Definitions > Ċ Ċ /** ĠPro cesses Ġa ĠScan Changes Request Ġin Ġa Ġ[ store Action ] Ġinto Ġa Ġ[ data Store ] Ġ*/ Ċ internal Ġfun Ġ< DM Ġ: ĠIs Root Values DataModel < P >, ĠP Ġ: ĠProperty Definitions > Ġprocess Scan Changes Request ( ĊĠĠĠ Ġstore Action : ĠScan Changes Store Action < DM , ĠP >, ĊĠĠĠ Ġdata Store : ĠR ocks DB DataStore , ĊĠĠĠ Ġcache : ĠCache Ċ ) Ġ{ ĊĠĠĠ Ġval Ġscan Request Ġ= Ġstore Action . request ĊĠĠĠ Ġval Ġobject Changes Ġ= Ġmutable ListOf < DataObject Version ed Change < DM >>() ĊĠĠĠ Ġval Ġdb Index Ġ= Ġdata Store . getData Model Id ( scan Request . data Model ) ĊĠĠĠ Ġval Ġcolumn F amilies Ġ= Ġdata Store . getColumn F amilies ( db Index ) ĊĊĠĠĠ ĠDB Accessor ( data Store ). use Ġ{ Ġdb Accessor Ġ-> ĊĠĠĠĠĠĠĠ Ġval Ġcolumn To Scan Ġ= Ġif Ġ(( scan Request . to Version Ġ!= Ġnull Ġ|| Ġscan Request . max Versions Ġ> Ġ 1 u ) Ġ&& Ġcolumn F amilies Ġis ĠH istoric TableColumn F amilies ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcolumn F amilies . h istoric . table ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġcolumn F amilies . table ĊĠĠĠĠĠĠĠ Ġval Ġiterator Ġ= Ġdb Accessor . get Iterator ( data Store . default Read Options , Ġcolumn To Scan ) ĊĊĠĠĠĠĠĠĠ Ġscan Request . check Max Versions ( data Store . keep All Versions ) ĊĊĠĠĠĠĠĠĠ Ġprocess Scan ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġscan Request , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdata Store , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdb Accessor , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcolumn F amilies , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdata Store . default Read Options ĊĠĠĠĠĠĠĠ Ġ) Ġ{ Ġkey , Ġcreation Version , Ġsorting Key Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcache Reader Ġ= Ġ{ Ġreference : ĠIs Property Reference For Cache < *, Ġ* >, Ġversion : ĠU Long , Ġvalue Reader : Ġ() Ġ-> ĠAny ? Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcache . readValue ( db Index , Ġkey , Ġreference , Ġversion , Ġvalue Reader ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġscan Request . data Model . read Transaction Into Object Changes ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġiterator , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcreation Version , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcolumn F amilies , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġkey , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġscan Request . select , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġscan Request . from Version , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġscan Request . to Version , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġscan Request . max Versions , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsorting Key , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcache Reader ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠOnly Ġadd Ġif Ġnot Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġobject Changes Ġ+= Ġit ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġiterator . close () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġstore Action . response . complete ( ĊĠĠĠĠĠĠĠ ĠChanges Response ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdata Model Ġ= Ġscan Request . data Model , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġchanges Ġ= Ġobject Changes ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ) Ċ } Ċ