Samchon Framework for CPP  1.0.0
ExternalSystemRole.hpp
1 #pragma once
2 #include <samchon/API.hpp>
3 
4 #include <samchon/protocol/Entity.hpp>
5 #include <samchon/protocol/IProtocol.hpp>
6 
7 namespace samchon
8 {
9 namespace templates
10 {
11 namespace external
12 {
13  class ExternalSystem;
14 
50  : public virtual protocol::Entity<std::string>,
51  public virtual protocol::IProtocol
52  {
53  private:
54  typedef Entity<std::string> super;
55 
56  ExternalSystem *system;
57 
58  protected:
66  std::string name;
67 
68  public:
69  /* ---------------------------------------------------------
70  CONSTRUCTORS
71  --------------------------------------------------------- */
78  {
79  this->system = system;
80  };
81 
85  virtual ~ExternalSystemRole() = default;
86 
87  virtual void construct(std::shared_ptr<library::XML> xml)
88  {
89  name = xml->getProperty("name");
90  };
91 
92  /* ---------------------------------------------------------
93  ACCESSORS
94  --------------------------------------------------------- */
98  virtual auto key() const -> std::string
99  {
100  return name;
101  };
102 
106  auto getSystem() const -> ExternalSystem*
107  {
108  return system;
109  };
110 
114  auto getName() const -> std::string
115  {
116  return name;
117  };
118 
119  /* ---------------------------------------------------------
120  MESSAGE CHAIN
121  --------------------------------------------------------- */
129  virtual void sendData(std::shared_ptr<protocol::Invoke> invoke) override
130  {
131  ((IProtocol*)system)->sendData(invoke);
132  };
133 
143  virtual void replyData(std::shared_ptr<protocol::Invoke> invoke) = 0;
144 
145  /* ---------------------------------------------------------
146  EXPORTERS
147  --------------------------------------------------------- */
148  virtual auto TAG() const -> std::string
149  {
150  return "role";
151  };
152 
153  virtual auto toXML() const -> std::shared_ptr<library::XML> override
154  {
155  std::shared_ptr<library::XML> xml = super::toXML();
156  xml->setProperty("name", name);
157 
158  return xml;
159  };
160  };
161 };
162 };
163 };
An entity, a standard data class.
Definition: Entity.hpp:115
virtual void replyData(std::shared_ptr< protocol::Invoke > invoke)=0
virtual void sendData(std::shared_ptr< protocol::Invoke > invoke) override