ledger-core
src
wallet
common
AbstractWalletFactory.hpp
1
/*
2
*
3
* AbstractWalletFactory
4
* ledger-core
5
*
6
* Created by Pierre Pollastri on 16/05/2017.
7
*
8
* The MIT License (MIT)
9
*
10
* Copyright (c) 2016 Ledger
11
*
12
* Permission is hereby granted, free of charge, to any person obtaining a copy
13
* of this software and associated documentation files (the "Software"), to deal
14
* in the Software without restriction, including without limitation the rights
15
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
16
* copies of the Software, and to permit persons to whom the Software is
17
* furnished to do so, subject to the following conditions:
18
*
19
* The above copyright notice and this permission notice shall be included in all
20
* copies or substantial portions of the Software.
21
*
22
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
23
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
24
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
25
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
26
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
27
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
28
* SOFTWARE.
29
*
30
*/
31
#ifndef LEDGER_CORE_ABSTRACTWALLETFACTORY_HPP
32
#define LEDGER_CORE_ABSTRACTWALLETFACTORY_HPP
33
34
#include <memory>
35
#include <wallet/pool/database/WalletDatabaseEntry.hpp>
36
#include "AbstractWallet.hpp"
37
38
namespace
ledger
{
39
namespace
core {
40
class
AbstractWalletFactory
{
41
public
:
42
AbstractWalletFactory
(
const
api::Currency
& currency,
const
std::shared_ptr<WalletPool>& pool);
43
virtual
std::shared_ptr<AbstractWallet> build(
const
WalletDatabaseEntry
& entry) = 0;
44
const
api::Currency
& getCurrency()
const
;
45
virtual
~
AbstractWalletFactory
() {};
46
47
protected
:
48
std::shared_ptr<WalletPool> getPool()
const
;
49
50
private
:
51
api::Currency
_currency;
52
std::weak_ptr<WalletPool> _pool;
53
};
54
55
template
<api::WalletType>
56
std::shared_ptr<AbstractWalletFactory> make_factory(
const
api::Currency
& currency,
const
std::shared_ptr<WalletPool>& pool);
57
}
58
}
59
60
61
#endif //LEDGER_CORE_ABSTRACTWALLETFACTORY_HPP
ledger::core::AbstractWalletFactory
Definition:
AbstractWalletFactory.hpp:40
ledger::core::WalletDatabaseEntry
Definition:
WalletDatabaseEntry.hpp:39
ledger::core::api::Currency
Definition:
Currency.hpp:23
ledger
Definition:
Account.cpp:8
Generated by
1.8.13