Samchon Framework for CPP
1.0.0
|
An array of parallel system drivers. More...
#include <ParallelSystemArray.hpp>
Public Member Functions | |
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... | |
virtual void | start ()=0 |
Start interaction. 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... | |
virtual void | construct (std::shared_ptr< library::XML > xml) |
Construct data of the Entity from an XML object. 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... | |
virtual auto | toXML () const -> std::shared_ptr< library::XML > |
Get an XML object represents the EntityGroup. 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... | |
Protected Member Functions | |
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... | |
Private Attributes | |
std::atomic< size_t > | uid |
Sequence of uid allocating for history. More... | |
PRMasterHistoryArray * | historyArray |
An array of history have occured. More... | |
PRMasterHistoryArray * | progressArray |
An array of history on progress. More... | |
An array of parallel system drivers.
ParallelSystemArray is an ExternalSystemArray and an abstract class containing. and managing parallel system drvers within framework of master. The ParallelSystemArray class allocates segmented processes (Invoke message containing segmentation size) following by each system's performance index.
Unlike DistributedSystemArray, ParallelSystemArray does not have such complicate relationships and logics. All segmentation sent by sendData(Invoke, size_t) requires uniform performance. ParallelSystemArray just calculates each system's performance index by elapsing time such easily.
Of course, DistributedSystemArray determines which size of segmentation allocation will be suitable for each system by the performance index
.
Each segmentation in requested process (Invoke message) is equivalent. Thus, role of ParallelSystem objects in a ParallelSystemArray are almost same and does not need to specify ExternalSystemRole on each ParallelSystem.
ExternalSystemArray is an abstract class containing and managing external system drivers.
Also, ExternalSystemArray can access to ExternalSystemRole(s) directly. With the method, you can use an ExternalSystemRole as "logical proxy" of an ExternalSystem. Of course, the ExternalSystemRole is belonged to an ExternalSystem. However, if you access an ExternalSystemRole from an ExternalSystemArray directly, not passing by a belonged ExternalSystem, and send an Invoke message even you're not knowing which ExternalSystem is related in, the ExternalSystemRole acted a role of proxy.
It's called as "Proxy pattern". With the pattern, you can only concentrate on ExternalSystemRole itself, what to do with Invoke message, irrespective of the ExternalSystemRole is belonged to which ExternalSystem.
Definition at line 50 of file ParallelSystemArray.hpp.
ParallelSystemArray::ParallelSystemArray | ( | ) |
Default Constructor.
Definition at line 18 of file ParallelSystemArray.cpp.
void ParallelSystemArray::sendSegmentData | ( | std::shared_ptr< Invoke > | , |
size_t | |||
) |
Send a message with segmentation size.
invoke | An invoke message requesting a process. |
size | Size of segmentation. |
Definition at line 37 of file ParallelSystemArray.cpp.
|
virtual |
Send a message with piece index and size.
invoke | An invoke message requesting a process. |
index | Starting index number of segmentation. |
size | Size of segmentation. |
Definition at line 42 of file ParallelSystemArray.cpp.
Referenced by samchon::example::interaction::PackerMediator::addClient(), and samchon::protocol::master::ParallelSlaveSystemMediator::replyPieceData().
|
protectedvirtual |
Notify end of a master history.
Estimates performance of each system by a master history containing their elapsed times.
The estimation is done by normalizing performances of children systems. The estimation of performance is divided by averagae elapsed time of each segmentation.
Reimplemented in samchon::protocol::master::ParallelSystemArrayMediator.
Definition at line 80 of file ParallelSystemArray.cpp.
References samchon::protocol::master::PRInvokeHistory::calcAverageElapsedTime(), samchon::protocol::master::PRMasterHistory::historyArray, samchon::protocol::master::ParallelSystem::performance, and samchon::protocol::master::PRInvokeHistory::system.
Referenced by samchon::protocol::master::ParallelSystemArrayMediator::notifyEnd().
|
private |
Sequence of uid allocating for history.
Definition at line 62 of file ParallelSystemArray.hpp.
|
private |
An array of history have occured.
Definition at line 67 of file ParallelSystemArray.hpp.
|
private |
An array of history on progress.
Definition at line 72 of file ParallelSystemArray.hpp.