Samchon Framework for CPP
1.0.0
|
A master of parallel system solving something. More...
#include <Master.hpp>
Public Member Functions | |
Master (int port) | |
Construct from a port number to listen. More... | |
virtual void | start () override |
Start interaction. More... | |
![]() | |
ParallelClientArray () | |
Default Constructor. More... | |
![]() | |
ParallelSystemArray () | |
Default Constructor. More... | |
void | sendSegmentData (std::shared_ptr< Invoke >, size_t) |
Send a message with segmentation size. More... | |
virtual void | sendPieceData (std::shared_ptr< Invoke >, size_t, size_t) |
Send a message with piece index and size. More... | |
![]() | |
ExternalSystemArray () | |
Default Constructor. More... | |
auto | hasRole (const std::string &) const -> bool |
Test whether has a role. More... | |
auto | getRole (const std::string &) const -> std::shared_ptr< ExternalSystemRole > |
Get a role. More... | |
virtual void | sendData (std::shared_ptr< Invoke >) override |
Sends an Invoke message to related ExternalSystem(s). More... | |
virtual void | replyData (std::shared_ptr< Invoke >) override |
Handle replied Invoke message. More... | |
virtual auto | TAG () const -> std::string override |
A tag name when represented by XML. More... | |
virtual auto | CHILD_TAG () const -> std::string override |
A tag name of children. More... | |
![]() | |
EntityGroup () | |
Default Constructor. More... | |
auto | has (const std::string &key) const -> bool |
Indicates whether a container has an object having the specified identifier. More... | |
auto | get (const std::string &key) -> value_type & |
Access the element by specified identifier(key). More... | |
auto | get (const std::string &key) const -> const value_type & |
Access the const element by specified identifier(key). More... | |
![]() | |
Entity () | |
Default Constructor. More... | |
virtual auto | key () const -> std::string |
Get a key that can identify the Entity uniquely. More... | |
![]() | |
IEntityGroup () | |
Default Constructor. More... | |
![]() | |
IProtocol () | |
Default Constructor. More... | |
![]() | |
ExternalClientArray () | |
Default Constructor. More... | |
virtual void | construct (std::shared_ptr< library::XML >) override |
Construct data of the Entity from an XML object. More... | |
virtual auto | toXML () const -> std::shared_ptr< library::XML > override |
Get an XML object represents the EntityGroup. More... | |
Protected Member Functions | |
virtual void | addClient (Socket *socket) override |
Handling connection of a physical client. More... | |
virtual void | optimize (shared_ptr< XML > xml) |
Optimize something. More... | |
virtual void | replyOptimization (shared_ptr< XML > xml)=0 |
Handle (replied) optimized value from a slave system. More... | |
![]() | |
virtual void | notifyEnd (PRMasterHistory *) |
Notify end of a master history. More... | |
![]() | |
virtual auto | createChild (std::shared_ptr< library::XML >) -> entity_type *=0 |
Factory method of a child Entity. More... | |
![]() | |
virtual auto | PORT () const -> int |
Port number of the server. More... | |
virtual auto | MY_IP () const -> std::string |
(optional) Server's IP More... | |
Protected Attributes | |
unique_ptr< ChiefDriver > | chiefDriver |
A boundary object interacting with a Cheif. More... | |
mutex | mtx |
A mutex for optimization. More... | |
size_t | optimized |
Number of slaves who'd completed an optimization. More... | |
![]() | |
std::string | myIP |
A custom ip address of my system to bind. More... | |
int | port |
A port number for accepting external clients. More... | |
A master of parallel system solving something.
Master is an abstract and example class, for providing guidance of realizing parallel processing system for users, within framework of master. The Master class represents a master of parallel processing system in the master side.
A master system (represented by Master and MasterDriver) is associated with a chief system (represented by Cheif and CheifDriver) and slave systems (Slave and SlaveDriver). The master system gets optimization order from chief system and shifts and distributes orders to its slave systems. When slave systems report optimization result, the master system aggregates those results and reports the aggregated results to chief system.
Definition at line 49 of file Master.hpp.
|
inline |
Construct from a port number to listen.
port | Port number to listen. |
Definition at line 83 of file Master.hpp.
|
inlineoverridevirtual |
Start interaction.
An abstract method starting interaction with external systems.
If external systems are servers, starts connection to them, else clients, opens a server and accepts the external systems. You can addict your own procudures of starting drivers, but if you directly override method of abstract ExternalSystemArray, be careful about virtual inheritance.
Reimplemented from samchon::protocol::ExternalClientArray.
Definition at line 93 of file Master.hpp.
Referenced by samchon::example::interaction::PackerMaster::main(), and samchon::example::interaction::TSPMaster::main().
|
inlineoverrideprotectedvirtual |
Handling connection of a physical client.
Reimplemented from samchon::protocol::ExternalClientArray.
Definition at line 130 of file Master.hpp.
|
inlineprotectedvirtual |
Optimize something.
Master gets an XML object representing parametric value and basic data used for optimzation are came from Cheif. Master constructs some object to optimize and distributes the optimization order to master's slave systems by segmentation.
xml | XML object representing parametric value and basic data used for optimization. |
Reimplemented in samchon::example::interaction::PackerMaster, and samchon::example::interaction::TSPMaster.
Definition at line 147 of file Master.hpp.
|
protectedpure virtual |
Handle (replied) optimized value from a slave system.
When gets optimization result from Slave systems, Master aggregates them and derives the best solution between those results and reports the best solution to the Cheif system.
xml | XML object representing the optimized value. |
Implemented in samchon::example::interaction::PackerMaster, and samchon::example::interaction::TSPMaster.
|
protected |
A boundary object interacting with a Cheif.
Definition at line 59 of file Master.hpp.
|
protected |
A mutex for optimization.
The mutex exists for ensuring concurrency of aggregation of optimization reported from slave systems.
Definition at line 67 of file Master.hpp.
|
protected |
Number of slaves who'd completed an optimization.
Definition at line 72 of file Master.hpp.