Samchon Framework for CPP  1.0.0
samchon::templates::parallel::ParallelSystemArrayMediator< System > Class Template Referenceabstract

#include <ParallelSystemArrayMediator.hpp>

Collaboration diagram for samchon::templates::parallel::ParallelSystemArrayMediator< System >:

Public Member Functions

 ParallelSystemArrayMediator ()
 Default Constructor. More...
 
auto getMediator () const -> MediatorSystem *
 
- Public Member Functions inherited from samchon::templates::parallel::ParallelSystemArray< System >
 ParallelSystemArray ()
 Default Constructor. More...
 
auto sendSegmentData (std::shared_ptr< protocol::Invoke > invoke, size_t size) -> size_t
 
virtual auto sendPieceData (std::shared_ptr< protocol::Invoke > invoke, size_t first, size_t last) -> size_t
 
- Public Member Functions inherited from samchon::templates::external::ExternalSystemArray< System >
 ExternalSystemArray ()
 
virtual ~ExternalSystemArray ()=default
 
auto hasRole (const std::string &key) const -> bool
 
auto getRole (const std::string &key) const -> std::shared_ptr< ExternalSystemRole >
 
virtual void sendData (std::shared_ptr< protocol::Invoke > invoke)
 
virtual void replyData (std::shared_ptr< protocol::Invoke > invoke)=0
 
virtual auto CHILD_TAG () const -> std::string override
 A tag name of children. More...
 
- Public Member Functions inherited from samchon::protocol::EntityGroup< Container, T, Key >
virtual void construct (std::shared_ptr< library::XML > xml)
 Construct data of the Entity from an XML object. More...
 
auto find (const typename child_type::key_type &key) -> typename container_type::iterator
 Get iterator to element. More...
 
auto find (const typename child_type::key_type &key) const -> typename container_type::const_iterator
 Get const iterator to element. More...
 
auto has (const typename child_type::key_type &key) const -> bool
 Indicates whether a container has an object having the specified identifier. More...
 
auto count (const typename child_type::key_type &key) const -> size_t
 Count elements with a specific key. More...
 
auto get (const typename child_type::key_type &key) -> typename container_type::value_type &
 Access the element by specified identifier(key). More...
 
auto get (const typename child_type::key_type &key) const -> const typename container_type::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...
 
- Public Member Functions inherited from samchon::protocol::Entity< Key >
virtual auto key () const -> Key
 Get a key that can identify the Entity uniquely. More...
 
- Public Member Functions inherited from samchon::protocol::IProtocol
virtual void replyData (std::shared_ptr< Invoke >)=0
 
virtual void sendData (std::shared_ptr< Invoke >)=0
 

Protected Member Functions

virtual auto createMediator () -> MediatorSystem *=0
 
virtual void startMediator ()
 
- Protected Member Functions inherited from samchon::protocol::EntityGroup< Container, T, Key >
virtual auto createChild (std::shared_ptr< library::XML >) -> child_type *=0
 Factory method of a child Entity. More...
 

Detailed Description

template<class System = ParallelSystem>
class samchon::templates::parallel::ParallelSystemArrayMediator< System >

Mediator of Parallel Processing System.

The ParallelSystemArrayMediator class be a master for its slave systems, and be a slave to its master system at the same time. This ParallelSystemArrayMediator be a master **system, containing and managing ParallelSystem objects, which represent parallel slave systems, by extending ParallelSystemArray class. Also, be a **slave system through mediator object, which is derived from the SlavSystem class.

As a master, you can specify this ParallelSystemArrayMediator class to be a master server accepting slave clients or a master client to connecting slave servers. Even both of them is possible. Extends one of them below and overrides abstract factory method(s) creating the child ParallelSystem object.

As a slave, you can specify this ParallelSystemArrayMediator to be a client slave connecting to master server or a server slave accepting master client by overriding the createMediator method. Overrides the createMediator() method and return one of them:

[Inherited] ParallelSystemArray}

Master of Parallel Processing System.

The ParallelSystemArray is an abstract class containing and managing remote parallel slave system drivers, ParallelSystem objects. Within framework of network, ParallelSystemArray represents your system, a Master of Parallel Processing System that requesting parallel process to slave systems and the children ParallelSystem objects represent the remote slave systems, who is being requested the parallel processes.

You can specify this ParallelSystemArray class to be a server accepting parallel clients or a client connecting to parallel servers. Even both of them is possible. Extends one of them below and overrides abstract factory method(s) creating the child ParallelSystem object.

When you need the parallel process, then call one of them: sendSegmentData or sendPieceData. When the parallel process has completed, ParallelSystemArray estimates each ParallelSystem's performance index basis on their execution time. Those performance indices will be reflected to the next parallel process, how much pieces to allocate to each ParallelSystem.

Class Diagram

Proxy Pattern

This class ParallelSystemArray is derived from the ExternalSystemArray class. Thus, you can take advantage of the Proxy Pattern in the ParallelSystemArray class. If a process to request is not the parallel process (to be distrubted to all slaves), but the exclusive process handled in a system, then it may better to utilizing the Proxy Pattern:

The ExternalSystemArray class can use Proxy Pattern. In framework within user, which external system is connected with this system, it's not important. Only interested in user's perspective is which can be done.

By using the logical proxy, user dont't need to know which role is belonged to which system. Just access to a role directly from ExternalSystemArray.getRole. Sends and receives Invoke message via the role.

Templates - Parallel System

Author
Jeongho Nam http://samchon.org

Definition at line 46 of file ParallelSystemArrayMediator.hpp.

Constructor & Destructor Documentation

template<class System = ParallelSystem>
samchon::templates::parallel::ParallelSystemArrayMediator< System >::ParallelSystemArrayMediator ( )
inline

Default Constructor.

Definition at line 61 of file ParallelSystemArrayMediator.hpp.

Member Function Documentation

template<class System = ParallelSystem>
virtual auto samchon::templates::parallel::ParallelSystemArrayMediator< System >::createMediator ( ) -> MediatorSystem *
protectedpure virtual

Factory method creating a MediatorSystem object.

The createMediator() is an abstract method creating the MediatorSystem object.

You know what? this ParallelSystemArrayMediator class be a master for its slave systems, and be a slave to its master system at the same time. The MediatorSystem object makes it possible; be a slave system. This createMediator determines specific type of the MediatorSystem.

Overrides the createMediator() method to create and return one of them following which protocol and which type of remote connection (server or client) will be used:

Returns
A newly created MediatorSystem object.

Referenced by samchon::templates::parallel::ParallelSystemArrayMediator< SlaveDriver >::ParallelSystemArrayMediator(), and samchon::templates::parallel::ParallelSystemArrayMediator< SlaveDriver >::startMediator().

Here is the caller graph for this function:

template<class System = ParallelSystem>
virtual void samchon::templates::parallel::ParallelSystemArrayMediator< System >::startMediator ( )
inlineprotectedvirtual

Start mediator.

If the mediator is a type of server, then opens the server accepting master client. Otherwise, the mediator is a type of client, then connects the master server.

Definition at line 97 of file ParallelSystemArrayMediator.hpp.

template<class System = ParallelSystem>
auto samchon::templates::parallel::ParallelSystemArrayMediator< System >::getMediator ( ) const -> MediatorSystem*
inline

Get MediatorSystem object.

When you need to send an Invoke message to the master system of this ParallelSystemArrayMediator, then send to the MediatorSystem through this getMediator.

getMediator()->sendData(...);
Returns
The MediatorSystem object.

Definition at line 122 of file ParallelSystemArrayMediator.hpp.

Referenced by samchon::templates::distributed::DistributedSystemArrayMediator< System >::DistributedSystemArrayMediator().

Here is the caller graph for this function:


The documentation for this class was generated from the following file: