ledger-core
RippleLikeBlockchainExplorerAccountSynchronizer.h
1 /*
2  *
3  * RippleLikeBlockchainExplorerAccountSynchronizer
4  *
5  * Created by El Khalil Bellakrid on 06/01/2019.
6  *
7  * The MIT License (MIT)
8  *
9  * Copyright (c) 2019 Ledger
10  *
11  * Permission is hereby granted, free of charge, to any person obtaining a copy
12  * of this software and associated documentation files (the "Software"), to deal
13  * in the Software without restriction, including without limitation the rights
14  * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
15  * copies of the Software, and to permit persons to whom the Software is
16  * furnished to do so, subject to the following conditions:
17  *
18  * The above copyright notice and this permission notice shall be included in all
19  * copies or substantial portions of the Software.
20  *
21  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
22  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
23  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
24  * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
25  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
26  * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
27  * SOFTWARE.
28  *
29  */
30 
31 
32 #ifndef LEDGER_CORE_RIPPLELIKEBLOCKCHAINEXPLORERACCOUNTSYNCHRONIZER_H
33 #define LEDGER_CORE_RIPPLELIKEBLOCKCHAINEXPLORERACCOUNTSYNCHRONIZER_H
34 
35 
36 #include <wallet/common/synchronizers/AbstractBlockchainExplorerAccountSynchronizer.h>
37 #include <wallet/ripple/synchronizers/RippleLikeAccountSynchronizer.h>
38 #include <wallet/ripple/keychains/RippleLikeKeychain.h>
39 #include <wallet/ripple/explorers/RippleLikeBlockchainExplorer.h>
40 #include <wallet/pool/WalletPool.hpp>
41 #include <async/DedicatedContext.hpp>
42 #include <events/ProgressNotifier.h>
43 
44 
45 namespace ledger {
46  namespace core {
47 
48  class RippleLikeAccount;
49 
50  using RippleBlockchainAccountSynchronizer = AbstractBlockchainExplorerAccountSynchronizer<RippleLikeAccount, RippleLikeAddress, RippleLikeKeychain, RippleLikeBlockchainExplorer>;
51 
54  public DedicatedContext,
55  public std::enable_shared_from_this<RippleLikeBlockchainExplorerAccountSynchronizer> {
56  public:
57 
58  RippleLikeBlockchainExplorerAccountSynchronizer(const std::shared_ptr<WalletPool> &pool,
59  const std::shared_ptr<RippleLikeBlockchainExplorer> &explorer);
60 
61  void updateCurrentBlock(
62  std::shared_ptr<AbstractBlockchainExplorerAccountSynchronizer::SynchronizationBuddy> &buddy,
63  const std::shared_ptr<api::ExecutionContext> &context) override;
64 
65  void updateTransactionsToDrop(soci::session &sql,
66  std::shared_ptr<SynchronizationBuddy> &buddy,
67  const std::string &accountUid) override;
68 
69  std::shared_ptr<ProgressNotifier<Unit>>
70  synchronize(const std::shared_ptr<RippleLikeAccount> &account) override;
71 
72  void reset(const std::shared_ptr<RippleLikeAccount> &account,
73  const std::chrono::system_clock::time_point &toDate) override;
74 
75  bool isSynchronizing() const override;
76 
77 
78  private:
79  std::shared_ptr<RippleBlockchainAccountSynchronizer> getSharedFromThis() override;
80 
81  std::shared_ptr<api::ExecutionContext> getSynchronizerContext() override;
82  };
83  }
84 }
85 
86 
87 #endif //LEDGER_CORE_RIPPLELIKEBLOCKCHAINEXPLORERACCOUNTSYNCHRONIZER_H
Definition: AbstractBlockchainExplorerAccountSynchronizer.h:87
Definition: RippleLikeBlockchainExplorerAccountSynchronizer.h:52
Definition: RippleLikeAccountSynchronizer.h:41
Definition: Account.cpp:8
Definition: DedicatedContext.hpp:39