MessageVisitor.F90 Source File


This file depends on

sourcefile~~messagevisitor.f90~~EfferentGraph sourcefile~messagevisitor.f90 MessageVisitor.F90 sourcefile~abstractmessage.f90 AbstractMessage.F90 sourcefile~messagevisitor.f90->sourcefile~abstractmessage.f90 sourcefile~abstractrequesthandle.f90 AbstractRequestHandle.F90 sourcefile~messagevisitor.f90->sourcefile~abstractrequesthandle.f90 sourcefile~addreaddatacollectionmessage.f90 AddReadDataCollectionMessage.F90 sourcefile~messagevisitor.f90->sourcefile~addreaddatacollectionmessage.f90 sourcefile~addwritedatacollectionmessage.f90 AddWriteDataCollectionMessage.F90 sourcefile~messagevisitor.f90->sourcefile~addwritedatacollectionmessage.f90 sourcefile~collectiveprefetchdatamessage.f90 CollectivePrefetchDataMessage.F90 sourcefile~messagevisitor.f90->sourcefile~collectiveprefetchdatamessage.f90 sourcefile~collectiveprefetchdonemessage.f90 CollectivePrefetchDoneMessage.F90 sourcefile~messagevisitor.f90->sourcefile~collectiveprefetchdonemessage.f90 sourcefile~collectivestagedatamessage.f90 CollectiveStageDataMessage.F90 sourcefile~messagevisitor.f90->sourcefile~collectivestagedatamessage.f90 sourcefile~collectivestagedonemessage.f90 CollectiveStageDoneMessage.F90 sourcefile~messagevisitor.f90->sourcefile~collectivestagedonemessage.f90 sourcefile~donemessage.f90 DoneMessage.F90 sourcefile~messagevisitor.f90->sourcefile~donemessage.f90 sourcefile~dummymessage.f90 DummyMessage.F90 sourcefile~messagevisitor.f90->sourcefile~dummymessage.f90 sourcefile~handshakemessage.f90 HandShakeMessage.F90 sourcefile~messagevisitor.f90->sourcefile~handshakemessage.f90 sourcefile~idmessage.f90 IDMessage.F90 sourcefile~messagevisitor.f90->sourcefile~idmessage.f90 sourcefile~mapl_exceptionhandling.f90 MAPL_ExceptionHandling.F90 sourcefile~messagevisitor.f90->sourcefile~mapl_exceptionhandling.f90 sourcefile~modifymetadatamessage.f90 ModifyMetadataMessage.F90 sourcefile~messagevisitor.f90->sourcefile~modifymetadatamessage.f90 sourcefile~prefetchdatamessage.f90 PrefetchDataMessage.F90 sourcefile~messagevisitor.f90->sourcefile~prefetchdatamessage.f90 sourcefile~prefetchdonemessage.f90 PrefetchDoneMessage.F90 sourcefile~messagevisitor.f90->sourcefile~prefetchdonemessage.f90 sourcefile~replacemetadatamessage.f90 ReplaceMetadataMessage.F90 sourcefile~messagevisitor.f90->sourcefile~replacemetadatamessage.f90 sourcefile~stagedatamessage.f90 StageDataMessage.F90 sourcefile~messagevisitor.f90->sourcefile~stagedatamessage.f90 sourcefile~stagedonemessage.f90 StageDoneMessage.F90 sourcefile~messagevisitor.f90->sourcefile~stagedonemessage.f90 sourcefile~terminatemessage.f90 TerminateMessage.F90 sourcefile~messagevisitor.f90->sourcefile~terminatemessage.f90 sourcefile~abstractmessage.f90->sourcefile~mapl_exceptionhandling.f90 sourcefile~abstractdatareference.f90 AbstractDataReference.F90 sourcefile~abstractrequesthandle.f90->sourcefile~abstractdatareference.f90 sourcefile~addreaddatacollectionmessage.f90->sourcefile~abstractmessage.f90 sourcefile~addreaddatacollectionmessage.f90->sourcefile~mapl_exceptionhandling.f90 sourcefile~pfio_utilities.f90 pFIO_Utilities.F90 sourcefile~addreaddatacollectionmessage.f90->sourcefile~pfio_utilities.f90 sourcefile~addwritedatacollectionmessage.f90->sourcefile~abstractmessage.f90 sourcefile~addwritedatacollectionmessage.f90->sourcefile~mapl_exceptionhandling.f90 sourcefile~filemetadata.f90 FileMetadata.F90 sourcefile~addwritedatacollectionmessage.f90->sourcefile~filemetadata.f90 sourcefile~pfio_constants.f90 pFIO_Constants.F90 sourcefile~addwritedatacollectionmessage.f90->sourcefile~pfio_constants.f90 sourcefile~addwritedatacollectionmessage.f90->sourcefile~pfio_utilities.f90 sourcefile~collectiveprefetchdatamessage.f90->sourcefile~abstractmessage.f90 sourcefile~abstractcollectivedatamessage.f90 AbstractCollectiveDataMessage.F90 sourcefile~collectiveprefetchdatamessage.f90->sourcefile~abstractcollectivedatamessage.f90 sourcefile~collectiveprefetchdatamessage.f90->sourcefile~abstractdatareference.f90 sourcefile~keywordenforcer.f90 KeywordEnforcer.F90 sourcefile~collectiveprefetchdatamessage.f90->sourcefile~keywordenforcer.f90 sourcefile~collectiveprefetchdatamessage.f90->sourcefile~pfio_utilities.f90 sourcefile~collectiveprefetchdonemessage.f90->sourcefile~abstractmessage.f90 sourcefile~collectiveprefetchdonemessage.f90->sourcefile~mapl_exceptionhandling.f90 sourcefile~collectivestagedatamessage.f90->sourcefile~abstractmessage.f90 sourcefile~collectivestagedatamessage.f90->sourcefile~abstractcollectivedatamessage.f90 sourcefile~collectivestagedatamessage.f90->sourcefile~abstractdatareference.f90 sourcefile~collectivestagedatamessage.f90->sourcefile~keywordenforcer.f90 sourcefile~collectivestagedatamessage.f90->sourcefile~pfio_utilities.f90 sourcefile~collectivestagedonemessage.f90->sourcefile~abstractmessage.f90 sourcefile~collectivestagedonemessage.f90->sourcefile~mapl_exceptionhandling.f90 sourcefile~donemessage.f90->sourcefile~abstractmessage.f90 sourcefile~donemessage.f90->sourcefile~mapl_exceptionhandling.f90 sourcefile~dummymessage.f90->sourcefile~abstractmessage.f90 sourcefile~dummymessage.f90->sourcefile~mapl_exceptionhandling.f90 sourcefile~handshakemessage.f90->sourcefile~abstractmessage.f90 sourcefile~handshakemessage.f90->sourcefile~mapl_exceptionhandling.f90 sourcefile~idmessage.f90->sourcefile~abstractmessage.f90 sourcefile~idmessage.f90->sourcefile~mapl_exceptionhandling.f90 sourcefile~errorhandling.f90 ErrorHandling.F90 sourcefile~mapl_exceptionhandling.f90->sourcefile~errorhandling.f90 sourcefile~mapl_throw.f90 MAPL_Throw.F90 sourcefile~mapl_exceptionhandling.f90->sourcefile~mapl_throw.f90 sourcefile~modifymetadatamessage.f90->sourcefile~abstractmessage.f90 sourcefile~modifymetadatamessage.f90->sourcefile~mapl_exceptionhandling.f90 sourcefile~modifymetadatamessage.f90->sourcefile~keywordenforcer.f90 sourcefile~modifymetadatamessage.f90->sourcefile~pfio_utilities.f90 sourcefile~stringvariablemap.f90 StringVariableMap.F90 sourcefile~modifymetadatamessage.f90->sourcefile~stringvariablemap.f90 sourcefile~prefetchdatamessage.f90->sourcefile~abstractmessage.f90 sourcefile~abstractdatamessage.f90 AbstractDataMessage.F90 sourcefile~prefetchdatamessage.f90->sourcefile~abstractdatamessage.f90 sourcefile~prefetchdatamessage.f90->sourcefile~abstractdatareference.f90 sourcefile~prefetchdatamessage.f90->sourcefile~keywordenforcer.f90 sourcefile~prefetchdatamessage.f90->sourcefile~pfio_utilities.f90 sourcefile~prefetchdonemessage.f90->sourcefile~abstractmessage.f90 sourcefile~prefetchdonemessage.f90->sourcefile~mapl_exceptionhandling.f90 sourcefile~replacemetadatamessage.f90->sourcefile~abstractmessage.f90 sourcefile~replacemetadatamessage.f90->sourcefile~mapl_exceptionhandling.f90 sourcefile~replacemetadatamessage.f90->sourcefile~filemetadata.f90 sourcefile~replacemetadatamessage.f90->sourcefile~keywordenforcer.f90 sourcefile~replacemetadatamessage.f90->sourcefile~pfio_utilities.f90 sourcefile~replacemetadatamessage.f90->sourcefile~stringvariablemap.f90 sourcefile~stagedatamessage.f90->sourcefile~abstractmessage.f90 sourcefile~stagedatamessage.f90->sourcefile~abstractdatamessage.f90 sourcefile~stagedatamessage.f90->sourcefile~abstractdatareference.f90 sourcefile~stagedatamessage.f90->sourcefile~keywordenforcer.f90 sourcefile~stagedatamessage.f90->sourcefile~pfio_utilities.f90 sourcefile~stagedonemessage.f90->sourcefile~abstractmessage.f90 sourcefile~stagedonemessage.f90->sourcefile~mapl_exceptionhandling.f90 sourcefile~terminatemessage.f90->sourcefile~abstractmessage.f90 sourcefile~terminatemessage.f90->sourcefile~mapl_exceptionhandling.f90

Files dependent on this one

sourcefile~~messagevisitor.f90~~AfferentGraph sourcefile~messagevisitor.f90 MessageVisitor.F90 sourcefile~basethread.f90 BaseThread.F90 sourcefile~basethread.f90->sourcefile~messagevisitor.f90 sourcefile~clientthread.f90 ClientThread.F90 sourcefile~clientthread.f90->sourcefile~messagevisitor.f90 sourcefile~clientthread.f90->sourcefile~basethread.f90 sourcefile~mockclientthread.f90 MockClientThread.F90 sourcefile~mockclientthread.f90->sourcefile~messagevisitor.f90 sourcefile~mockclientthread.f90->sourcefile~basethread.f90 sourcefile~mockclientthread.f90->sourcefile~clientthread.f90 sourcefile~mockserverthread.f90 MockServerThread.F90 sourcefile~mockserverthread.f90->sourcefile~messagevisitor.f90 sourcefile~serverthread.f90 ServerThread.F90 sourcefile~mockserverthread.f90->sourcefile~serverthread.f90 sourcefile~serverthread.f90->sourcefile~messagevisitor.f90 sourcefile~serverthread.f90->sourcefile~basethread.f90 sourcefile~baseserver.f90 BaseServer.F90 sourcefile~baseserver.f90->sourcefile~serverthread.f90 sourcefile~clientmanager.f90 ClientManager.F90 sourcefile~clientmanager.f90->sourcefile~clientthread.f90 sourcefile~clientthreadvector.f90 ClientThreadVector.F90 sourcefile~clientthreadvector.f90->sourcefile~clientthread.f90 sourcefile~directoryservice.f90 DirectoryService.F90 sourcefile~directoryservice.f90->sourcefile~clientthread.f90 sourcefile~directoryservice.f90->sourcefile~serverthread.f90 sourcefile~fastclientthread.f90 FastClientThread.F90 sourcefile~fastclientthread.f90->sourcefile~clientthread.f90 sourcefile~maplframework.f90 MaplFramework.F90 sourcefile~maplframework.f90->sourcefile~clientthread.f90 sourcefile~mockclient.f90 MockClient.F90 sourcefile~mockclient.f90->sourcefile~clientthread.f90 sourcefile~mpiserver.f90 MpiServer.F90 sourcefile~mpiserver.f90->sourcefile~serverthread.f90 sourcefile~multicommserver.f90 MultiCommServer.F90 sourcefile~multicommserver.f90->sourcefile~serverthread.f90 sourcefile~multigroupserver.f90 MultiGroupServer.F90 sourcefile~multigroupserver.f90->sourcefile~serverthread.f90 sourcefile~multilayerserver.f90 MultiLayerServer.F90 sourcefile~multilayerserver.f90->sourcefile~serverthread.f90 sourcefile~openmpserver.f90 OpenMPServer.F90 sourcefile~openmpserver.f90->sourcefile~serverthread.f90 sourcefile~pfio.f90 pFIO.F90 sourcefile~pfio.f90->sourcefile~clientthread.f90 sourcefile~pfio.f90->sourcefile~serverthread.f90 sourcefile~serverthreadvector.f90 ServerThreadVector.F90 sourcefile~serverthreadvector.f90->sourcefile~serverthread.f90 sourcefile~simplesocket.f90 SimpleSocket.F90 sourcefile~simplesocket.f90->sourcefile~basethread.f90 sourcefile~test_client.pf Test_Client.pf sourcefile~test_client.pf->sourcefile~mockclientthread.f90 sourcefile~test_serverthread.pf Test_ServerThread.pf sourcefile~test_serverthread.pf->sourcefile~serverthread.f90 sourcefile~test_simplesocket.pf Test_SimpleSocket.pf sourcefile~test_simplesocket.pf->sourcefile~basethread.f90 sourcefile~test_simplesocket.pf->sourcefile~clientthread.f90 sourcefile~test_simplesocket.pf->sourcefile~mockserverthread.f90 sourcefile~test_simplesocket.pf->sourcefile~serverthread.f90

Source Code

#include "MAPL_ErrLog.h"
#include "unused_dummy.H"

module pFIO_MessageVisitorMod

   use MAPL_ExceptionHandling
   use pFIO_AbstractMessageMod
   use pFIO_DoneMessageMod
   use pFIO_PrefetchDoneMessageMod
   use pFIO_CollectivePrefetchDoneMessageMod
   use pFIO_StageDoneMessageMod
   use pFIO_CollectiveStageDoneMessageMod
   use pFIO_AddReadDataCollectionMessageMod
   use pFIO_AddWriteDataCollectionMessageMod
   use pFIO_IdMessageMod
   use pFIO_PrefetchDataMessageMod
   use pFIO_CollectivePrefetchDataMessageMod
   use pFIO_StageDataMessageMod
   use pFIO_CollectiveStageDataMessageMod
   use pFIO_TerminateMessageMod
   use pFIO_DummyMessageMod
   use pFIO_HandShakeMessageMod
   use pFIO_ModifyMetadataMessageMod
   use pFIO_ReplaceMetadataMessageMod
   use pFIO_AbstractRequestHandleMod
   implicit none
   private

   public :: MessageVisitor

   type, abstract, extends(SurrogateMessageVisitor) :: MessageVisitor
   contains
      procedure :: handle

      procedure :: handle_Done
      procedure :: handle_Done_prefetch
      procedure :: handle_Done_collective_prefetch
      procedure :: handle_Done_stage
      procedure :: handle_Done_collective_stage

      procedure :: handle_AddReadDataCollection
      procedure :: handle_AddWriteDataCollection
      procedure :: handle_Id
      procedure :: handle_PrefetchData
      procedure :: handle_StageData
      procedure :: handle_CollectivePrefetchData
      procedure :: handle_CollectiveStageData
      procedure :: handle_Terminate
      procedure :: handle_ModifyMetadata
      procedure :: handle_ReplaceMetadata
      procedure :: handle_HandShake

      generic :: handle_cmd => handle_Done
      generic :: handle_cmd => handle_Done_prefetch
      generic :: handle_cmd => handle_Done_collective_prefetch
      generic :: handle_cmd => handle_Done_stage
      generic :: handle_cmd => handle_Done_collective_stage
      generic :: handle_cmd => handle_AddReadDataCollection
      generic :: handle_cmd => handle_AddWriteDataCollection
      generic :: handle_cmd => handle_Id
      generic :: handle_cmd => handle_PrefetchData
      generic :: handle_cmd => handle_CollectivePrefetchData
      generic :: handle_cmd => handle_StageData
      generic :: handle_cmd => handle_CollectiveStageData
      generic :: handle_cmd => handle_Terminate
      generic :: handle_cmd => handle_ModifyMetadata
      generic :: handle_cmd => handle_ReplaceMetadata
      generic :: handle_cmd => handle_HandShake

   end type MessageVisitor

contains

   recursive subroutine handle(this, message, rc)
      class (MessageVisitor), target, intent(inout) :: this
      class (AbstractMessage), target, intent(in) :: message
      integer, optional, intent(out) :: rc
      integer :: status

      select type (cmd => message)
      type is (TerminateMessage)
        call this%handle_terminate(cmd, rc=status)
        _VERIFY(status)
      type is (DoneMessage)
        call this%handle_cmd(cmd,rc=status)
        _VERIFY(status)
      type is (PrefetchDoneMessage)
        call this%handle_cmd(cmd,rc=status)
        _VERIFY(status)
      type is (CollectivePrefetchDoneMessage)
        call this%handle_cmd(cmd,rc=status)
        _VERIFY(status)
      type is (StageDoneMessage)
         call this%handle_cmd(cmd,_RC)
       type is (CollectiveStageDoneMessage)
          call this%handle_cmd(cmd,_RC)
      type is (AddReadDataCollectionMessage)
        call this%handle_AddReadDataCollection(cmd,rc=status)
        _VERIFY(status)
      type is (AddWriteDataCollectionMessage)
        call this%handle_AddWriteDataCollection(cmd,rc=status)
        _VERIFY(status)
      type is (IdMessage)
        call this%handle_cmd(cmd,rc=status)
        _VERIFY(status)
      type is (PrefetchDataMessage)
        call this%handle_cmd(cmd,rc=status)
        _VERIFY(status)
      type is (CollectivePrefetchDataMessage)
        call this%handle_cmd(cmd,rc=status)
        _VERIFY(status)
      type is (StageDataMessage)
        call this%handle_cmd(cmd,rc=status)
        _VERIFY(status)
      type is (CollectiveStageDataMessage)
        call this%handle_cmd(cmd,rc=status)
        _VERIFY(status)
      type is (ModifyMetadataMessage)
        call this%handle_cmd(cmd,rc=status)
        _VERIFY(status)
      type is (ReplaceMetadataMessage)
        call this%handle_cmd(cmd,rc=status)
        _VERIFY(status)
      type is (HandShakeMessage)
        ! the handShake is from client to server
        call this%handle_cmd(cmd, rc=status)
        _VERIFY(status)
      type is (DummyMessage)
        ! WY notes: self hand_shake: if iserver or oserver is with app"
        ! the dummy is from server to client
        ! if the serverthread sends the dummy directly to clientthread, it will not go through here.
        _VERIFY(0)
      class default
         _FAIL( 'unsupported subclass')
      end select
      _RETURN(_SUCCESS)
   end subroutine handle

   subroutine handle_CollectivePrefetchData(this, message, rc)
      class (MessageVisitor), target, intent(inout) :: this
      type (CollectivePrefetchDataMessage), intent(in) :: message
      integer, optional, intent(out) :: rc
      _FAIL( "Warning : dummy handle_CollectivePrefetchData should not be called")
      _UNUSED_DUMMY(this)
      _UNUSED_DUMMY(message)
   end subroutine handle_CollectivePrefetchData

   subroutine handle_CollectiveStageData(this, message, rc)
      class (MessageVisitor), target, intent(inout) :: this
      type (CollectiveStageDataMessage), intent(in) :: message
      integer, optional, intent(out) :: rc
      _FAIL( "Warning : dummy handle_CollectiveStageData should not be called")
      _UNUSED_DUMMY(this)
      _UNUSED_DUMMY(message)
   end subroutine handle_CollectiveStageData

   subroutine handle_Terminate(this, message, rc)
      class (MessageVisitor), intent(inout) :: this
      type (TerminateMessage), intent(in) :: message
      integer, optional, intent(out) :: rc
      _FAIL( "Warning : dummy handle_Terminate should not be called")
      _UNUSED_DUMMY(this)
      _UNUSED_DUMMY(message)
   end subroutine handle_Terminate

   subroutine handle_Done(this, message, rc)
      class (MessageVisitor), target, intent(inout) :: this
      type (DoneMessage), intent(in) :: message
      integer, optional, intent(out) :: rc
      _FAIL( "Warning : dummy handle_Done should not be called")
      _UNUSED_DUMMY(this)
      _UNUSED_DUMMY(message)
   end subroutine handle_Done

   subroutine handle_Done_prefetch(this, message, rc)
      class (MessageVisitor), target, intent(inout) :: this
      type (PrefetchDoneMessage), intent(in) :: message
      integer, optional, intent(out) :: rc
      _FAIL( "Warning : dummy handle_Done_prefetch should not be called")
      _UNUSED_DUMMY(this)
      _UNUSED_DUMMY(message)
   end subroutine handle_Done_prefetch

   subroutine handle_Done_collective_prefetch(this, message, rc)
      class (MessageVisitor), target, intent(inout) :: this
      type (CollectivePrefetchDoneMessage), intent(in) :: message
      integer, optional, intent(out) :: rc
      _FAIL( "Warning : dummy handle_Done_collective_prefetch should not be called")
      _UNUSED_DUMMY(this)
      _UNUSED_DUMMY(message)
   end subroutine handle_Done_collective_prefetch

   subroutine handle_Done_stage(this, message, rc)
      class (MessageVisitor), target, intent(inout) :: this
      type (StageDoneMessage), intent(in) :: message
      integer, optional, intent(out) :: rc
      _FAIL( "Warning : dummy handle_Done_stage should not be called")
      _UNUSED_DUMMY(this)
      _UNUSED_DUMMY(message)
   end subroutine handle_Done_stage

   subroutine handle_Done_collective_stage(this, message, rc)
      class (MessageVisitor), target, intent(inout) :: this
      type (CollectiveStageDoneMessage), intent(in) :: message
      integer, optional, intent(out) :: rc
      _FAIL( "Warning : dummy handle_Done_collective_stage should not be called")
      _UNUSED_DUMMY(this)
      _UNUSED_DUMMY(message)
   end subroutine handle_Done_collective_stage

   subroutine handle_AddReadDataCollection(this, message, rc)
      class (MessageVisitor), target, intent(inout) :: this
      type (AddReadDataCollectionMessage), intent(in) :: message
      integer, optional, intent(out) :: rc
      _FAIL( "Warning : dummy handle_AddReadDataCollection should not be called")
      _UNUSED_DUMMY(this)
      _UNUSED_DUMMY(message)
   end subroutine handle_AddReadDataCollection

   subroutine handle_AddWriteDataCollection(this, message, rc)
      class (MessageVisitor), target, intent(inout) :: this
      type (AddWriteDataCollectionMessage), intent(in) :: message
      integer, optional, intent(out) :: rc
      _FAIL( "Warning : dummy handle_AddWriteDataCollection should not be called")
      _UNUSED_DUMMY(this)
      _UNUSED_DUMMY(message)
   end subroutine handle_AddWriteDataCollection

   subroutine handle_Id(this, message, rc)
      class (MessageVisitor), intent(inout) :: this
      type (IdMessage), intent(in) :: message
      integer, optional, intent(out) :: rc
      _FAIL( "Warning : dummy handle_ID should not be called. hint: maybe server and app are the same?")
      _UNUSED_DUMMY(this)
      _UNUSED_DUMMY(message)
   end subroutine handle_Id

   subroutine handle_PrefetchData(this, message, rc)
      class (MessageVisitor), target, intent(inout) :: this
      type (PrefetchDataMessage), intent(in) :: message
      integer, optional, intent(out) :: rc
      _FAIL( "Warning : dummy handle_PrefetchData should not be called")
      _UNUSED_DUMMY(this)
      _UNUSED_DUMMY(message)
   end subroutine handle_PrefetchData

   subroutine handle_StageData(this, message, rc)
      class (MessageVisitor), target, intent(inout) :: this
      type (StageDataMessage), intent(in) :: message
      integer, optional, intent(out) :: rc
      _FAIL( "Warning : dummy handle_StageData should not be called")
      _UNUSED_DUMMY(this)
      _UNUSED_DUMMY(message)
   end subroutine handle_StageData

   subroutine handle_ModifyMetadata(this, message, rc)
      class (MessageVisitor), target, intent(inout) :: this
      type (ModifyMetadataMessage), intent(in) :: message
      integer, optional, intent(out) :: rc
      _FAIL( "Warning : dummy handle_ModifyMetadata should not be called")
      _UNUSED_DUMMY(this)
      _UNUSED_DUMMY(message)
   end subroutine handle_ModifyMetadata

   subroutine handle_ReplaceMetadata(this, message, rc)
      class (MessageVisitor), target, intent(inout) :: this
      type (ReplaceMetadataMessage), intent(in) :: message
      integer, optional, intent(out) :: rc
      _FAIL( "Warning : dummy handle_ReplaceMetadata should not be called")
      _UNUSED_DUMMY(this)
      _UNUSED_DUMMY(message)
   end subroutine handle_ReplaceMetadata

   subroutine handle_HandShake(this, message, rc)
      class (MessageVisitor), target, intent(inout) :: this
      type (HandShakeMessage), intent(in) :: message
      integer, optional, intent(out) :: rc
      _FAIL( "Warning : dummy handle_HandShake should not be called")
      _UNUSED_DUMMY(this)
      _UNUSED_DUMMY(message)
   end subroutine handle_HandShake

end module pFIO_MessageVisitorMod