package Ġcom . github . will j griff . ethereum wallet . ethereum . transactions Ċ Ċ import Ġcom . github . will j griff . ethereum wallet . ethereum . address . Address Manager Ċ import Ġcom . github . will j griff . ethereum wallet . ethereum . node . New Block Header Adapter Ċ import Ġcom . github . will j griff . ethereum wallet . ethereum . transactions . model . Domain Transaction Ċ import Ġcom . github . will j griff . ethereum wallet . ethereum . transactions . storage . Transactions Storage Ċ import Ġcom . github . will j griff . ethereum wallet . utils . android Io Schedule Ċ import Ġcom . github . will j griff . ethereum wallet . utils . reset table lazy . Reset table Lazy Manager Ċ import Ġcom . github . will j griff . ethereum wallet . utils . reset table lazy . reset table Lazy Ċ import Ġio . reactivex . Observable Ċ Ċ /** Ċ Ġ* ĠCreated Ġby Ġw illiam griff ith s Ġon Ġ 1 9 / 0 4 / 2 0 1 7 . Ċ Ġ*/ Ċ class ĠTransactions Manager ( private Ġval Ġtransactions Storage : ĠTransactions Storage , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġval Ġtransactions Adapter : ĠTransactions Adapter , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġval Ġnew Block Header Adapter : ĠNew Block Header Adapter , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġval Ġaddress Manager : ĠAddress Manager ) Ġ{ ĊĊĠĠĠ Ġprivate Ġval ĠNUMBER _ OF _ BLOCKS _ TO _ SEARCH Ġ= Ġ 5 0 0 L ĊĠĠĠ Ġval Ġblocks Se ar ched Logger Ġ= ĠBlocks Se ar ched Logger ( transactions Storage ) ĊĊĠĠĠ Ġprivate Ġval Ġreset table Lazy Manager Ġ= ĠReset table Lazy Manager () ĊĠĠĠ Ġval Ġtransactions Observable : ĠObservable < Domain Transaction > Ġby Ġreset table Lazy ( reset table Lazy Manager ) Ġ{ ĊĠĠĠĠĠĠĠ Ġget Transactions () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠNote Ġthat Ġ[ Domain Transaction ]' s Ġare Ġemitted Ġin Ġthe Ġorder Ġthey Ġare Ġfound , Ġnot Ġin Ġorder Ġof Ġwhen Ġthey Ġwere Ġmade . ĊĠĠĠĠ Ġ* ĠThe Ġcaller Ġmust Ġorder Ġthe Ġtransactions Ġthemselves Ġif Ġnecessary , Ġeg Ġby Ġtime . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠTODO : ĠThis Ġshould Ġcontinue Ġuntil Ġeither Ġthe Ġtransaction Ġblock Ġto Ġsearch Ġto Ġhas Ġbeen Ġreached Ġor Ġthe Ġpage ĊĠĠĠĠ Ġ* Ġmax Ġhas Ġbeen Ġreached . ĠAlso , Ġwe Ġshould Ġprobably Ġonly Ġsearch Ġto Ġthe Ġblock Ġwhen Ġthe Ġaddress Ġwas Ġcreated . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġget Transactions (): ĠObservable < Domain Transaction > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġstored Transactions Ġ= ĠObservable . from Iterable ( transactions Storage . get Stored Transactions ()) ĊĠĠĠĠĠĠĠ Ġval Ġun stored Past Transactions Ġ= Ġget Past Blocks Transactions () ĊĠĠĠĠĠĠĠ Ġval Ġun stored Future Transactions Ġ= ĠgetCurrent Block Transactions () ĊĊĠĠĠĠĠĠĠ Ġreturn Ġstored Transactions ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. merge With ( un stored Past Transactions ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. merge With ( un stored Future Transactions ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. android Io Schedule () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. replay () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. auto Connect () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠgetCurrent Block Transactions (): ĠObservable < Domain Transaction > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġaddress Ġ= Ġaddress Manager . getActive Address () ĊĊĠĠĠĠĠĠĠ Ġreturn Ġnew Block Header Adapter ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. new Block Header Observable ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. flatMap Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtransactions Adapter . get Transactions For Address In Block ( address , Ġit . block Number , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ Ġblocks Se ar ched Logger . block Se ar ched ( it ) Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. do On Next Ġ{ Ġtransactions Storage . store Transaction ( it ) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Past Blocks Transactions (): ĠObservable < Domain Transaction > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcurrent Block Ġ= Ġtransactions Adapter . getCurrent Block () ĊĊĠĠĠĠĠĠĠ Ġreturn Ġcurrent Block ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. to Observable () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. flatMap Ġ{ Ġsearch And Store Transactions ( it ) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsearch And Store Transactions ( current Block : ĠLong ): ĠObservable < Domain Transaction > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġaddress Ġ= Ġaddress Manager . getActive Address () ĊĠĠĠĠĠĠĠ Ġval Ġblocks To Search Ġ= Ġblocks Se ar ched Logger . get Blocks To Search From Top Block ( current Block , ĠNUMBER _ OF _ BLOCKS _ TO _ SEARCH ) ĊĊĠĠĠĠĠĠĠ Ġreturn ĠObservable ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. from Iterable ( blocks To Search ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. flatMap Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtransactions Adapter . get Transactions In Block Range ( address , Ġit . upper Block , Ġit . range Exclusive (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ Ġblocks Se ar ched Logger . block Se ar ched ( it ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. do On Next Ġ{ Ġtransactions Storage . store Transaction ( it ) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġclear And Restart () Ġ{ ĊĠĠĠĠĠĠĠ Ġtransactions Storage . delete Stored Data () ĊĠĠĠĠĠĠĠ Ġblocks Se ar ched Logger . reset Block Ranges Se ar ched () ĊĠĠĠĠĠĠĠ Ġreset table Lazy Manager . reset () ĊĠĠĠ Ġ} Ċ }