Class JDBMSpace<K,​V>

  • All Implemented Interfaces:
    java.lang.Runnable, Space<K,​V>

    public class JDBMSpace<K,​V>
    extends java.util.TimerTask
    implements Space<K,​V>
    JDBM based persistent space implementation
    Since:
    1.4.7
    • Field Summary

      Fields 
      Modifier and Type Field Description
      protected boolean autoCommit  
      static long GCDELAY  
      protected jdbm.htree.HTree htree  
      protected java.lang.String name  
      protected jdbm.RecordManager recman  
      protected static jdbm.helper.Serializer refSerializer  
      protected static java.util.Map<java.lang.String,​Space> spaceRegistrar  
    • Constructor Summary

      Constructors 
      Modifier Constructor Description
      protected JDBMSpace​(java.lang.String name, java.lang.String filename)
      protected constructor.
    • Method Summary

      All Methods Static Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      void close()
      close this space - use with care
      void commit()
      force commit
      boolean existAny​(java.lang.Object[] keys)  
      boolean existAny​(java.lang.Object[] keys, long timeout)  
      void gc()
      garbage collector.
      java.lang.String getKeys()  
      static JDBMSpace getSpace()  
      static JDBMSpace getSpace​(java.lang.String name)
      creates a named JDBMSpace (filename used for storage is the same as the given name)
      static JDBMSpace getSpace​(java.lang.String name, java.lang.String filename)
      creates a named JDBMSpace
      V in​(java.lang.Object key)
      Take an entry from the space, waiting forever until one exists.
      V in​(java.lang.Object key, long timeout)
      Take an entry from the space, waiting forever until one exists.
      V inp​(java.lang.Object key)
      In probe takes an entry from the space if one exists, return null otherwise.
      void nrd​(java.lang.Object key)
      Nrd (not read) waits forever until Key is not present in space Resolution for expiring entries is implementation dependant, but a minimum one-second is suggested.
      V nrd​(java.lang.Object key, long timeout)
      Nrd (not read) waits up to timeout until Key is not present in space Resolution for expiring entries is implementation dependant, but a minimum one-second is suggested.
      void out​(K key, V value)
      Write a new entry into the Space
      void out​(K key, V value, long timeout)
      Write a new entry into the Space The entry will timeout after the specified period
      void push​(java.lang.Object key, java.lang.Object value, long timeout)
      Write a new entry into the Space at the head of a queue The entry will timeout after the specified period
      void push​(K key, V value)
      Write a new entry at the head of a queue.
      void put​(K key, V value)
      Write a single entry at the head of the queue discarding the other entries
      void put​(K key, V value, long timeout)
      Write a single entry at the head of the queue discarding the other entries, with timeout.
      V rd​(java.lang.Object key)
      Read an entry from the space, waiting forever until one exists.
      V rd​(java.lang.Object key, long timeout)
      Read an entry from the space, waiting a limited amount of time until one exists.
      V rdp​(java.lang.Object key)
      Read probe reads an entry from the space if one exists, return null otherwise.
      void rollback()
      force rollback
      void run()  
      void setAutoCommit​(boolean b)
      Use with utmost care and at your own risk.
      long size​(java.lang.Object key)  
      • Methods inherited from class java.util.TimerTask

        cancel, scheduledExecutionTime
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Constructor Detail

      • JDBMSpace

        protected JDBMSpace​(java.lang.String name,
                            java.lang.String filename)
        protected constructor.
        Parameters:
        name - Space Name
        filename - underlying JDBM filename
    • Method Detail

      • getSpace

        public static JDBMSpace getSpace()
        Returns:
        reference to default JDBMSpace
      • getSpace

        public static JDBMSpace getSpace​(java.lang.String name)
        creates a named JDBMSpace (filename used for storage is the same as the given name)
        Parameters:
        name - the Space name
        Returns:
        reference to named JDBMSpace
      • getSpace

        public static JDBMSpace getSpace​(java.lang.String name,
                                         java.lang.String filename)
        creates a named JDBMSpace
        Parameters:
        name - the Space name
        filename - the storage file name
        Returns:
        reference to named JDBMSpace
      • setAutoCommit

        public void setAutoCommit​(boolean b)
        Use with utmost care and at your own risk. If you are to perform several operations on the space you should synchronize on the space, i.e:
           synchronized (sp) {
             sp.setAutoCommit (false);
             sp.out (..., ...)
             sp.out (..., ...)
             ...
             ...
             sp.inp (...);
             sp.commit ();    // or sp.rollback ();
             sp.setAutoCommit (true);
           }
         
        Parameters:
        b - true or false
      • commit

        public void commit()
        force commit
      • rollback

        public void rollback()
        force rollback
      • close

        public void close()
        close this space - use with care
      • out

        public void out​(K key,
                        V value)
        Write a new entry into the Space
        Specified by:
        out in interface Space<K,​V>
        Parameters:
        key - Entry's key
        value - Object value
      • out

        public void out​(K key,
                        V value,
                        long timeout)
        Write a new entry into the Space The entry will timeout after the specified period
        Specified by:
        out in interface Space<K,​V>
        Parameters:
        key - Entry's key
        value - Object value
        timeout - entry timeout in millis
      • push

        public void push​(K key,
                         V value)
        Description copied from interface: Space
        Write a new entry at the head of a queue.
        Specified by:
        push in interface Space<K,​V>
        Parameters:
        key - Entry's key
        value - Object value
      • push

        public void push​(java.lang.Object key,
                         java.lang.Object value,
                         long timeout)
        Write a new entry into the Space at the head of a queue The entry will timeout after the specified period
        Specified by:
        push in interface Space<K,​V>
        Parameters:
        key - Entry's key
        value - Object value
        timeout - entry timeout in millis
      • rdp

        public V rdp​(java.lang.Object key)
        Read probe reads an entry from the space if one exists, return null otherwise.
        Specified by:
        rdp in interface Space<K,​V>
        Parameters:
        key - Entry's key
        Returns:
        value or null
      • inp

        public V inp​(java.lang.Object key)
        In probe takes an entry from the space if one exists, return null otherwise.
        Specified by:
        inp in interface Space<K,​V>
        Parameters:
        key - Entry's key
        Returns:
        value or null
      • in

        public V in​(java.lang.Object key)
        Description copied from interface: Space
        Take an entry from the space, waiting forever until one exists.
        Specified by:
        in in interface Space<K,​V>
        Parameters:
        key - Entry's key
        Returns:
        value
      • in

        public V in​(java.lang.Object key,
                    long timeout)
        Take an entry from the space, waiting forever until one exists.
        Specified by:
        in in interface Space<K,​V>
        Parameters:
        key - Entry's key
        timeout - millis to wait
        Returns:
        value
      • rd

        public V rd​(java.lang.Object key)
        Read an entry from the space, waiting forever until one exists.
        Specified by:
        rd in interface Space<K,​V>
        Parameters:
        key - Entry's key
        Returns:
        value
      • rd

        public V rd​(java.lang.Object key,
                    long timeout)
        Read an entry from the space, waiting a limited amount of time until one exists.
        Specified by:
        rd in interface Space<K,​V>
        Parameters:
        key - Entry's key
        timeout - millis to wait
        Returns:
        value or null
      • nrd

        public void nrd​(java.lang.Object key)
        Description copied from interface: Space
        Nrd (not read) waits forever until Key is not present in space Resolution for expiring entries is implementation dependant, but a minimum one-second is suggested.
        Specified by:
        nrd in interface Space<K,​V>
        Parameters:
        key - Entry's key
      • nrd

        public V nrd​(java.lang.Object key,
                     long timeout)
        Description copied from interface: Space
        Nrd (not read) waits up to timeout until Key is not present in space Resolution for expiring entries is implementation dependant, but a minimum one-second is suggested.
        Specified by:
        nrd in interface Space<K,​V>
        Parameters:
        key - Entry's key
        timeout - millis to wait
        Returns:
        value or null
      • size

        public long size​(java.lang.Object key)
        Parameters:
        key - the Key
        Returns:
        aproximately queue size
      • existAny

        public boolean existAny​(java.lang.Object[] keys)
        Specified by:
        existAny in interface Space<K,​V>
        Parameters:
        keys - array of keys to check
        Returns:
        true if one or more keys are available in the space
      • existAny

        public boolean existAny​(java.lang.Object[] keys,
                                long timeout)
        Specified by:
        existAny in interface Space<K,​V>
        Parameters:
        keys - array of keys to check
        timeout - to wait for any of the entries to become available in millis
        Returns:
        true if one or more keys are available in the space
      • put

        public void put​(K key,
                        V value,
                        long timeout)
        Description copied from interface: Space
        Write a single entry at the head of the queue discarding the other entries, with timeout.
        Specified by:
        put in interface Space<K,​V>
        Parameters:
        key - Entry's key
        value - Object value
        timeout - timeout value in millis
      • put

        public void put​(K key,
                        V value)
        Description copied from interface: Space
        Write a single entry at the head of the queue discarding the other entries
        Specified by:
        put in interface Space<K,​V>
        Parameters:
        key - Entry's key
        value - Object value
      • run

        public void run()
        Specified by:
        run in interface java.lang.Runnable
        Specified by:
        run in class java.util.TimerTask
      • gc

        public void gc()
        garbage collector. removes expired entries
      • getKeys

        public java.lang.String getKeys()