hyperledger/iroha
Iroha - A simple, decentralized ledger http://iroha.tech
json_command_factory.hpp
Go to the documentation of this file.
1 
6 #ifndef IROHA_JSON_COMMAND_FACTORY_HPP
7 #define IROHA_JSON_COMMAND_FACTORY_HPP
8 
9 #include <memory>
10 #include <typeindex>
11 #include <unordered_map>
12 #include "model/command.hpp"
13 #include "model/common.hpp"
15 
16 namespace iroha {
17  namespace model {
18  namespace converters {
20  public:
22 
23  // AddAssetQuantity
24  rapidjson::Document serializeAddAssetQuantity(
25  std::shared_ptr<Command> command);
27  const rapidjson::Value &document);
28 
29  // SubtractAssetQuantity
30  rapidjson::Document serializeSubtractAssetQuantity(
31  std::shared_ptr<Command> command);
33  const rapidjson::Value &document);
34 
35  // AddPeer
36  rapidjson::Document serializeAddPeer(std::shared_ptr<Command> command);
38  const rapidjson::Value &document);
39 
40  // AddSignatory
41  rapidjson::Document serializeAddSignatory(
42  std::shared_ptr<Command> command);
44  const rapidjson::Value &document);
45 
46  // CreateAccount
47  rapidjson::Document serializeCreateAccount(
48  std::shared_ptr<Command> command);
50  const rapidjson::Value &document);
51 
52  // SetAccountAsset
53  rapidjson::Document serializeSetAccountDetail(
54  std::shared_ptr<Command> command);
56  const rapidjson::Value &document);
57 
58  // CreateAsset
59  rapidjson::Document serializeCreateAsset(
60  std::shared_ptr<Command> command);
62  const rapidjson::Value &document);
63 
64  // CreateDomain
65  rapidjson::Document serializeCreateDomain(
66  std::shared_ptr<Command> command);
68  const rapidjson::Value &document);
69 
70  // RemoveSignatory
71  rapidjson::Document serializeRemoveSignatory(
72  std::shared_ptr<Command> command);
74  const rapidjson::Value &document);
75 
76  // SetQuorum
77  rapidjson::Document serializeSetQuorum(
78  std::shared_ptr<Command> command);
80  const rapidjson::Value &document);
81 
82  // TransferAsset
83  rapidjson::Document serializeTransferAsset(
84  std::shared_ptr<Command> command);
86  const rapidjson::Value &document);
87 
88  // AppendRole
89  rapidjson::Document serializeAppendRole(
90  std::shared_ptr<Command> command);
92  const rapidjson::Value &document);
93 
94  // DetachRole
95  rapidjson::Document serializeDetachRole(
96  std::shared_ptr<Command> command);
98  const rapidjson::Value &document);
99 
100  // CreateRole
101  rapidjson::Document serializeCreateRole(
102  std::shared_ptr<Command> command);
104  const rapidjson::Value &document);
105 
106  // GrantPermission
107  rapidjson::Document serializeGrantPermission(
108  std::shared_ptr<Command> command);
110  const rapidjson::Value &document);
111 
112  // RevokePermission
113  rapidjson::Document serializeRevokePermission(
114  std::shared_ptr<Command> command);
116  const rapidjson::Value &document);
117 
118  // Abstract
119  rapidjson::Document serializeAbstractCommand(
120  std::shared_ptr<Command> command);
122  const rapidjson::Value &document);
123 
124  private:
126 
127  using Serializer = rapidjson::Document (JsonCommandFactory::*)(
128  std::shared_ptr<Command>);
129  using Deserializer = optional_ptr<Command> (JsonCommandFactory::*)(
130  const rapidjson::Value &);
131 
132  std::unordered_map<std::type_index, Serializer> serializers_;
133  std::unordered_map<std::string, Deserializer> deserializers_;
134  };
135 
136  } // namespace converters
137  } // namespace model
138 } // namespace iroha
139 
140 #endif // IROHA_JSON_COMMAND_FACTORY_HPP
rapidjson::Document serializeGrantPermission(std::shared_ptr< Command > command)
Definition: json_command_factory.cpp:454
optional_ptr< Command > deserializeCreateDomain(const rapidjson::Value &document)
Definition: json_command_factory.cpp:279
rapidjson::Document serializeAddAssetQuantity(std::shared_ptr< Command > command)
Definition: json_command_factory.cpp:104
optional_ptr< Command > deserializeCreateAccount(const rapidjson::Value &document)
Definition: json_command_factory.cpp:199
JsonCommandFactory()
Definition: json_command_factory.cpp:51
optional_ptr< Command > deserializeTransferAsset(const rapidjson::Value &document)
Definition: json_command_factory.cpp:360
optional_ptr< model::Command > deserializeAbstractCommand(const rapidjson::Value &document)
Definition: json_command_factory.cpp:534
optional_ptr< Command > deserializeAddPeer(const rapidjson::Value &document)
Definition: json_command_factory.cpp:149
optional_ptr< Command > deserializeSetQuorum(const rapidjson::Value &document)
Definition: json_command_factory.cpp:330
rapidjson::Document serializeSubtractAssetQuantity(std::shared_ptr< Command > command)
Definition: json_command_factory.cpp:499
optional_ptr< Command > deserializeAddAssetQuantity(const rapidjson::Value &document)
Definition: json_command_factory.cpp:120
boost::optional< std::shared_ptr< T >> optional_ptr
Definition: common.hpp:16
optional_ptr< Command > deserializeDetachRole(const rapidjson::Value &document)
Definition: json_command_factory.cpp:407
rapidjson::Document serializeSetAccountDetail(std::shared_ptr< Command > command)
Definition: json_command_factory.cpp:209
optional_ptr< Command > deserializeAppendRole(const rapidjson::Value &document)
Definition: json_command_factory.cpp:385
optional_ptr< Command > deserializeSubtractAssetQuantity(const rapidjson::Value &document)
Definition: json_command_factory.cpp:518
Definition: json_command_factory.hpp:19
rapidjson::Document serializeCreateRole(std::shared_ptr< Command > command)
Definition: json_command_factory.cpp:415
optional_ptr< Command > deserializeRemoveSignatory(const rapidjson::Value &document)
Definition: json_command_factory.cpp:306
rapidjson::Document serializeCreateDomain(std::shared_ptr< Command > command)
Definition: json_command_factory.cpp:263
Definition: block_query.hpp:16
rapidjson::Document serializeAppendRole(std::shared_ptr< Command > command)
Definition: json_command_factory.cpp:371
rapidjson::Document serializeCreateAsset(std::shared_ptr< Command > command)
Definition: json_command_factory.cpp:237
rapidjson::Document serializeTransferAsset(std::shared_ptr< Command > command)
Definition: json_command_factory.cpp:339
rapidjson::Document serializeRevokePermission(std::shared_ptr< Command > command)
Definition: json_command_factory.cpp:476
optional_ptr< Command > deserializeCreateRole(const rapidjson::Value &document)
Definition: json_command_factory.cpp:436
rapidjson::Document serializeDetachRole(std::shared_ptr< Command > command)
Definition: json_command_factory.cpp:393
rapidjson::Document serializeAbstractCommand(std::shared_ptr< Command > command)
Definition: json_command_factory.cpp:527
optional_ptr< Command > deserializeCreateAsset(const rapidjson::Value &document)
Definition: json_command_factory.cpp:253
rapidjson::Document serializeCreateAccount(std::shared_ptr< Command > command)
Definition: json_command_factory.cpp:182
rapidjson::Document serializeAddSignatory(std::shared_ptr< Command > command)
Definition: json_command_factory.cpp:157
rapidjson::Document serializeSetQuorum(std::shared_ptr< Command > command)
Definition: json_command_factory.cpp:315
Definition: json_common.hpp:35
optional_ptr< Command > deserializeRevokePermission(const rapidjson::Value &document)
Definition: json_command_factory.cpp:489
rapidjson::Document serializeRemoveSignatory(std::shared_ptr< Command > command)
Definition: json_command_factory.cpp:289
optional_ptr< Command > deserializeSetAccountDetail(const rapidjson::Value &document)
Definition: json_command_factory.cpp:227
rapidjson::Document serializeAddPeer(std::shared_ptr< Command > command)
Definition: json_command_factory.cpp:129
optional_ptr< Command > deserializeGrantPermission(const rapidjson::Value &document)
Definition: json_command_factory.cpp:467
optional_ptr< Command > deserializeAddSignatory(const rapidjson::Value &document)
Definition: json_command_factory.cpp:173