Class PDC

  • All Implemented Interfaces:
    Lifecycle

    public class PDC
    extends Protocol
    Persistent Discovery Cache. Caches mapping between logical and physical addresses on disk, merges them with the results of the get physical address(es) events. This is done by intercepting the get and set physical address(es) event. Needs to be placed between the transport and the discovery protocol. The disk cache stores each mapping in a separate file, named by the logical address.
    Since:
    3.3
    Author:
    Bela Ban
    • Field Detail

      • cache_dir

        protected java.lang.String cache_dir
      • root_dir

        protected java.io.File root_dir
      • filter

        protected java.io.FilenameFilter filter
    • Constructor Detail

      • PDC

        public PDC()
    • Method Detail

      • printCache

        public java.lang.String printCache()
      • init

        public void init()
                  throws java.lang.Exception
        Description copied from class: Protocol
        Called after a protocol has been created and before the protocol is started. Attributes are already set. Other protocols are not yet connected and events cannot yet be sent.
        Specified by:
        init in interface Lifecycle
        Overrides:
        init in class Protocol
        Throws:
        java.lang.Exception - Thrown if protocol cannot be initialized successfully. This will cause the ProtocolStack to fail, so the the channel constructor will throw an exception
      • down

        public java.lang.Object down​(Event evt)
        Description copied from class: Protocol
        An event is to be sent down the stack. A protocol may want to examine its type and perform some action on it, depending on the event's type. If the event is a message MSG, then the protocol may need to add a header to it (or do nothing at all) before sending it down the stack using down_prot.down().
        Overrides:
        down in class Protocol
      • createDiskCacheFile

        protected void createDiskCacheFile()
                                    throws java.io.IOException
        Throws:
        java.io.IOException
      • readCacheFromDisk

        protected void readCacheFromDisk()
        Reads all mappings from disk
      • writeToTempFile

        protected java.io.File writeToTempFile​(java.io.File dir,
                                               Address logical_addr,
                                               Address physical_addr,
                                               java.lang.String logical_name)
                                        throws java.lang.Exception
        Writes the data to a temporary file.
        The file is stored in the same directory as the other cluster files but is given the .tmp suffix
        Parameters:
        dir - The disk cache root dir
        logical_addr - The logical address
        physical_addr - The physical address
        Returns:
        Throws:
        java.lang.Exception
      • removeNodeFromDisk

        protected void removeNodeFromDisk​(Address logical_addr)
      • addressAsString

        protected static java.lang.String addressAsString​(Address address)
      • deleteFile

        protected boolean deleteFile​(java.io.File file)
        Attempts to delete the provided file.
        Logging is performed on the result
        Parameters:
        file -
        Returns: