Class StandardHubProfile

  • All Implemented Interfaces:
    HubProfile, ProfileToken

    public class StandardHubProfile
    extends java.lang.Object
    implements HubProfile
    HubProfile implementation for the SAMP Standard Profile.
    Since:
    31 Jan 2011
    Author:
    Mark Taylor
    • Field Detail

      • lockfile_

        private final java.io.File lockfile_
      • secret_

        private final java.lang.String secret_
      • lockUrl_

        private java.net.URL lockUrl_
      • logger_

        private static final java.util.logging.Logger logger_
      • random_

        private static final java.util.Random random_
    • Constructor Detail

      • StandardHubProfile

        public StandardHubProfile​(SampXmlRpcClientFactory xClientFactory,
                                  SampXmlRpcServerFactory xServerFactory,
                                  java.io.File lockfile,
                                  java.lang.String secret)
        Constructs a hub profile with given configuration information. If the supplied lockfile is null, no lockfile will be written at hub startup.
        Parameters:
        xClientFactory - XML-RPC client factory implementation
        xServerFactory - XML-RPC server implementation
        lockfile - location to use for hub lockfile, or null
        secret - value for samp.secret lockfile key
      • StandardHubProfile

        public StandardHubProfile()
                           throws java.io.IOException
        Constructs a hub profile with default configuration.
        Throws:
        java.io.IOException
    • Method Detail

      • getMessageRestriction

        public MessageRestriction getMessageRestriction()
        Description copied from interface: ProfileToken
        Returns a MessageRestriction object which controls what messages may be sent by clients registering under ths profile. If null is returned, any messages may be sent.
        Specified by:
        getMessageRestriction in interface ProfileToken
        Returns:
        message restriction, or null
      • start

        public void start​(ClientProfile profile)
                   throws java.io.IOException
        Description copied from interface: HubProfile
        Starts this profile's activity allowing access to a given supplier of hub connections.
        Specified by:
        start in interface HubProfile
        Parameters:
        profile - object which can provide hub connections
        Throws:
        java.io.IOException
      • isRunning

        public boolean isRunning()
        Description copied from interface: HubProfile
        Indicates whether this profile is currently running.
        Specified by:
        isRunning in interface HubProfile
        Returns:
        true iff profile is running
      • stop

        public void stop()
        Description copied from interface: HubProfile
        Ends this profile's activity on behalf of the hub. Any resources associated with the profile should be released. This does not include messaging registered clients about profile termination; that should be taken care of by the user of this profile.
        Specified by:
        stop in interface HubProfile
      • getLockInfo

        public LockInfo getLockInfo()
        Returns the lockfile information associated with this object. Only present when running.
        Returns:
        lock info
      • publishLockfile

        public java.net.URL publishLockfile()
                                     throws java.io.IOException
        Returns an HTTP URL at which the lockfile for this hub can be found. The first call to this method causes the lockfile to be published in this way; subsequent calls return the same value.

        Use this with care; publishing your lockfile means that other people can connect to your hub and potentially do disruptive things.

        Returns:
        lockfile information URL
        Throws:
        java.io.IOException
      • createSecret

        public static java.lang.String createSecret()
        Returns a string suitable for use as a Standard Profile Secret.
        Returns:
        new secret
      • isHubAlive

        private static boolean isHubAlive​(SampXmlRpcClientFactory xClientFactory,
                                          java.io.File lockfile)
        Attempts to determine whether a given lockfile corresponds to a hub which is still alive.
        Parameters:
        xClientFactory - XML-RPC client factory implementation
        lockfile - lockfile location
        Returns:
        true if the hub described at lockfile appears to be alive and well
      • readLockFile

        private static LockInfo readLockFile​(java.io.File lockFile)
                                      throws java.io.IOException
        Reads lockinfo from a file.
        Parameters:
        lockFile - file
        Returns:
        info from file
        Throws:
        java.io.IOException
      • writeLockInfo

        private static void writeLockInfo​(LockInfo info,
                                          java.io.OutputStream out)
                                   throws java.io.IOException
        Writes lockfile information to a given output stream. The stream is not closed.
        Parameters:
        info - lock info to write
        out - destination stream
        Throws:
        java.io.IOException