DirectoryService Derived Type

type, public, extends(AbstractDirectoryService) :: DirectoryService


Inherits

type~~directoryservice~~InheritsGraph type~directoryservice DirectoryService c_ptr c_ptr type~directoryservice->c_ptr server_dir, client_dir type~abstractdirectoryservice AbstractDirectoryService type~directoryservice->type~abstractdirectoryservice type~mpimutex MpiMutex type~directoryservice->type~mpimutex mutex type~portinfo PortInfo type~directoryservice->type~portinfo local_ports type~protocolparser ProtocolParser type~directoryservice->type~protocolparser parser type~mpimutex->c_ptr locks_ptr type~baseserver BaseServer type~portinfo->type~baseserver server_ptr type~integermessagemap IntegerMessageMap type~protocolparser->type~integermessagemap prototypes type~abstractserver AbstractServer type~baseserver->type~abstractserver type~serverthreadvector ServerThreadVector type~baseserver->type~serverthreadvector threads type~set2~5 set2 type~integermessagemap->type~set2~5 tree StringInteger64Map StringInteger64Map type~abstractserver->StringInteger64Map prefetch_offset, stage_offset type~abstractdatareferencevector AbstractDataReferenceVector type~abstractserver->type~abstractdatareferencevector dataRefPtrs type~v_wrapper~13 v_Wrapper type~serverthreadvector->type~v_wrapper~13 elements type~ivector~4 iVector type~set2~5->type~ivector~4 parents, lefts, rights, heights type~tvector~4 tVector type~set2~5->type~tvector~4 items

Inherited by

type~~directoryservice~~InheritedByGraph type~directoryservice DirectoryService type~servermanager ServerManager type~servermanager->type~directoryservice directory_service type~extdatadriver ExtDataDriver type~extdatadriver->type~servermanager cap_server type~mapl_cap MAPL_Cap type~mapl_cap->type~servermanager cap_server

Constructor

public interface DirectoryService

  • private function new_DirectoryService(comm, unusable, rc) result(ds)

    Arguments

    Type IntentOptional Attributes Name
    integer, intent(in) :: comm
    class(KeywordEnforcer), intent(in), optional :: unusable
    integer, intent(out), optional :: rc

    Return Value type(DirectoryService)


Type-Bound Procedures

procedure, public :: connect_to_client

  • private subroutine connect_to_client(this, port_name, server, rc)

    Arguments

    Type IntentOptional Attributes Name
    class(DirectoryService), intent(inout), target :: this
    character(len=*), intent(in) :: port_name
    class(BaseServer), intent(inout), target :: server
    integer, intent(out), optional :: rc

procedure, public :: connect_to_server

  • private subroutine connect_to_server(this, port_name, client, client_comm, unusable, server_size, rc)

    Arguments

    Type IntentOptional Attributes Name
    class(DirectoryService), intent(inout), target :: this
    character(len=*), intent(in) :: port_name
    class(ClientThread), intent(inout), target :: client
    integer, intent(in) :: client_comm
    class(KeywordEnforcer), intent(in), optional :: unusable
    integer, intent(out), optional :: server_size
    integer, intent(out), optional :: rc

procedure, public :: free_directory_resources

  • private subroutine free_directory_resources(this, rc)

    Arguments

    Type IntentOptional Attributes Name
    class(DirectoryService), intent(inout) :: this
    integer, intent(out), optional :: rc

procedure, public :: get_directory

  • private function get_directory(this, win) result(dir)

    Arguments

    Type IntentOptional Attributes Name
    class(DirectoryService), intent(in) :: this
    integer, intent(in) :: win

    Return Value type(Directory)

procedure, public :: get_win

  • private function get_win(this, client_or_server) result(win)

    Arguments

    Type IntentOptional Attributes Name
    class(DirectoryService), intent(in) :: this
    character(len=*), intent(in) :: client_or_server

    Return Value integer

procedure, public :: publish

  • private subroutine publish(this, port, server, rc)

    Arguments

    Type IntentOptional Attributes Name
    class(DirectoryService), intent(inout), target :: this
    type(PortInfo), intent(in), target :: port
    class(BaseServer), intent(in) :: server
    integer, intent(out), optional :: rc

procedure, public :: put_directory

  • private subroutine put_directory(this, dir, win)

    Arguments

    Type IntentOptional Attributes Name
    class(DirectoryService), intent(in) :: this
    type(Directory), intent(in) :: dir
    integer, intent(in) :: win

procedure, public :: terminate_servers

  • private subroutine terminate_servers(this, client_comm, rc)

    Arguments

    Type IntentOptional Attributes Name
    class(DirectoryService), intent(inout) :: this
    integer, intent(in) :: client_comm
    integer, intent(out), optional :: rc

Source Code

   type,extends(AbstractDirectoryService) :: DirectoryService
      private
      integer :: comm,rank
      type (MpiMutex) :: mutex
      integer :: win_server_directory
      integer :: win_client_directory
      type(c_ptr) :: server_dir
      type(c_ptr) :: client_dir
      type (ProtocolParser) :: parser
      ! TODO: make vector
      type (PortInfo) :: local_ports(MAX_NUM_PORTS)
      integer :: n_local_ports = 0
   contains
      procedure :: connect_to_server
      procedure :: connect_to_client

      procedure :: publish
      procedure :: terminate_servers

      procedure :: get_win
      procedure :: get_directory
      procedure :: put_directory
      procedure :: free_directory_resources
   end type DirectoryService