Line data Source code
1 : /**
2 : * Copyright Soramitsu Co., Ltd. 2018 All Rights Reserved.
3 : * http://soramitsu.co.jp
4 : *
5 : * Licensed under the Apache License, Version 2.0 (the "License");
6 : * you may not use this file except in compliance with the License.
7 : * You may obtain a copy of the License at
8 : *
9 : * http://www.apache.org/licenses/LICENSE-2.0
10 : *
11 : * Unless required by applicable law or agreed to in writing, software
12 : * distributed under the License is distributed on an "AS IS" BASIS,
13 : * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 : * See the License for the specific language governing permissions and
15 : * limitations under the License.
16 : */
17 :
18 : #ifndef IROHA_SHARED_MODEL_DOMAIN_HPP
19 : #define IROHA_SHARED_MODEL_DOMAIN_HPP
20 :
21 : #include "interfaces/base/model_primitive.hpp"
22 : #include "interfaces/common_objects/types.hpp"
23 : #include "utils/string_builder.hpp"
24 :
25 : namespace shared_model {
26 : namespace interface {
27 :
28 : /**
29 : * Domain object represents administrative unit within the system
30 : */
31 : class Domain : public ModelPrimitive<Domain> {
32 : public:
33 : /**
34 : * @return Identity of domain
35 : */
36 : virtual const types::DomainIdType &domainId() const = 0;
37 :
38 : /**
39 : * @return Default role of domain
40 : */
41 : virtual const types::RoleIdType &defaultRole() const = 0;
42 : /**
43 : * Stringify the data.
44 : * @return the content of asset.
45 : */
46 : std::string toString() const override {
47 0 : return detail::PrettyStringBuilder()
48 0 : .init("Domain")
49 0 : .append("domainId", domainId())
50 0 : .append("defaultRole", defaultRole())
51 0 : .finalize();
52 0 : }
53 :
54 : /**
55 : * Checks equality of objects inside
56 : * @param rhs - other wrapped value
57 : * @return true, if wrapped objects are same
58 : */
59 : bool operator==(const ModelType &rhs) const override {
60 1 : return domainId() == rhs.domainId()
61 1 : and defaultRole() == rhs.defaultRole();
62 : }
63 : };
64 : } // namespace interface
65 : } // namespace shared_model
66 :
67 : #endif // IROHA_SHARED_MODEL_DOMAIN_HPP
|