anon.infoservice
Class MixInfo

java.lang.Object
  extended by anon.infoservice.AbstractDatabaseEntry
      extended by anon.infoservice.AbstractDistributableDatabaseEntry
          extended by anon.infoservice.AbstractDistributableCertifiedDatabaseEntry
              extended by anon.infoservice.MixInfo
All Implemented Interfaces:
IVerifyable, IDistributable, IXMLEncodable

public class MixInfo
extends AbstractDistributableCertifiedDatabaseEntry
implements IVerifyable

Holds the information of one single mix.


Nested Class Summary
 
Nested classes/interfaces inherited from class anon.infoservice.AbstractDistributableDatabaseEntry
AbstractDistributableDatabaseEntry.SerialDBEntry, AbstractDistributableDatabaseEntry.Serials
 
Field Summary
static java.lang.String DEFAULT_NAME
           
static int FIRST_MIX
           
static int LAST_MIX
           
private  boolean m_bFromCascade
          If this MixInfo has been recevied directly from a cascade connection.
private  boolean m_dynamic
          LERNGRUPPE Indicates if this mix is available for dynamic cascades
private  boolean m_freeMix
          Stores whether the mix is waiting for a cascade assignment.
private  long m_lastUpdate
          Time (see System.currentTimeMillis()) when the mix has sent this HELO message.
private  JAPCertificate m_mixCertificate
          Stores the certificate for this mix.
private  CertPath m_mixCertPath
          Stores the certPath for this mix.
private  java.lang.String m_mixId
          This is the ID of the mix.
private  ServiceLocation m_mixLocation
          Some information about the location of the mix.
private  ServiceOperator m_mixOperator
          Some information about the operator of the mix.
private  XMLSignature m_mixSignature
          Stores the signature element for this mix.
private  ServiceSoftware m_mixSoftware
          Some information about the used mix software.
private  java.lang.String m_name
          The name of the mix.
private  long m_serial
           
private  int m_type
          LERNGRUPPE This is the type of the mix
private  org.w3c.dom.Element m_xmlStructure
          Stores the XML structure for this mix.
static int MIDDLE_MIX
           
static java.lang.String XML_ELEMENT_CONTAINER_NAME
           
static java.lang.String XML_ELEMENT_NAME
           
 
Fields inherited from class anon.infoservice.AbstractDistributableDatabaseEntry
XML_ATTR_LAST_UPDATE, XML_ATTR_SERIAL, XML_ATTR_VALID, XML_ATTR_VERIFIED
 
Fields inherited from class anon.infoservice.AbstractDatabaseEntry
XML_LAST_UPDATE
 
Fields inherited from interface anon.infoservice.IDistributable
FIELD_HTTP_REQUEST_STRING, FIELD_HTTP_SERIALS_REQUEST_STRING
 
Fields inherited from interface anon.util.IXMLEncodable
FIELD_XML_ELEMENT_CONTAINER_NAME, FIELD_XML_ELEMENT_NAME, XML_ATTR_ID, XML_ATTR_VERSION
 
Constructor Summary
MixInfo(org.w3c.dom.Element a_mixNode)
          Creates a new MixInfo from XML description (Mix node).
MixInfo(org.w3c.dom.Element a_mixNode, long a_expireTime)
          Creates a new MixInfo from XML description (Mix node).
MixInfo(org.w3c.dom.Element a_mixNode, long a_expireTime, boolean a_bFromCascade)
          Creates a new MixInfo from XML description (Mix node).
MixInfo(java.lang.String a_mixID, CertPath a_certPath)
           
 
Method Summary
 JAPCertificate getCertificate()
          Returns the certificate of the mix For MixInfo-Objects in the InfoService the certificate is null
 CertPath getCertPath()
          Returns the CertPath of the mix For MixInfo-Objects in the InfoService the CertPath is null
 java.lang.String getFirstHostName()
          LERNGRUPPE Extracts the host name from first listenerinterface.
 int getFirstPort()
          LERNGRUPPE Extracts the port from first listenerinterface.
 java.lang.String getId()
          Returns the ID of the mix.
 long getLastUpdate()
          Returns the time (see System.currentTimeMillis()), when the mix has sent this MixInfo to an infoservice.
 java.lang.String getName()
          Returns the name of the mix.
 java.lang.String getPostFile()
          This returns the filename (InfoService command), where this mix entry is posted at other InfoServices.
 ServiceLocation getServiceLocation()
          Returns the location of the mix.
 ServiceOperator getServiceOperator()
          Returns information about the operator of this mix.
 ServiceSoftware getServiceSoftware()
          Returns information about the used software in this mix.
 int getType()
          LERNGRUPPE Returns the type of this mix
 java.lang.String getTypeAsString()
          LERNGRUPPE Returns the type of this mix
 long getVersionNumber()
          Returns the time when this mix entry was created by the origin mix.
 org.w3c.dom.Element getXmlStructure()
          Returns the XML structure for this mix entry.
 boolean isDynamic()
          LERNGRUPPE Returns true if this mix is available for dynamic cascades, false otherwise.
 boolean isFreeMix()
          Returns whether the mix is waiting for a cascade assignment.
 boolean isFromCascade()
          Returns if this MixInfo has been recevied directly from a cascade connection.
 boolean isValid()
          Returns if the object is valid at this time
 boolean isVerified()
          Returns if this entry has been verified with a certificate chain.
private  int parseMixType(java.lang.String nodeValue)
          LERNGRUPPE Parse the given textual MixType to our constants
 void setFreeMix(boolean a_freeMix)
          Changes the state of this mix (whether it is free or not).
 
Methods inherited from class anon.infoservice.AbstractDistributableCertifiedDatabaseEntry
checkId
 
Methods inherited from class anon.infoservice.AbstractDistributableDatabaseEntry
getHttpRequestString, getHttpSerialsRequestString, getPostData, getPostEncoding, toXmlElement
 
Methods inherited from class anon.infoservice.AbstractDatabaseEntry
getCreationTime, getExpireTime, isNewerThan, isUserDefined, resetCreationTime
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

DEFAULT_NAME

public static final java.lang.String DEFAULT_NAME
See Also:
Constant Field Values

XML_ELEMENT_CONTAINER_NAME

public static final java.lang.String XML_ELEMENT_CONTAINER_NAME
See Also:
Constant Field Values

XML_ELEMENT_NAME

public static final java.lang.String XML_ELEMENT_NAME
See Also:
Constant Field Values

FIRST_MIX

public static final int FIRST_MIX
See Also:
Constant Field Values

MIDDLE_MIX

public static final int MIDDLE_MIX
See Also:
Constant Field Values

LAST_MIX

public static final int LAST_MIX
See Also:
Constant Field Values

m_type

private int m_type
LERNGRUPPE This is the type of the mix


m_dynamic

private boolean m_dynamic
LERNGRUPPE Indicates if this mix is available for dynamic cascades


m_mixId

private java.lang.String m_mixId
This is the ID of the mix.


m_lastUpdate

private long m_lastUpdate
Time (see System.currentTimeMillis()) when the mix has sent this HELO message.


m_serial

private long m_serial

m_name

private java.lang.String m_name
The name of the mix.


m_mixLocation

private ServiceLocation m_mixLocation
Some information about the location of the mix.


m_mixOperator

private ServiceOperator m_mixOperator
Some information about the operator of the mix.


m_mixSoftware

private ServiceSoftware m_mixSoftware
Some information about the used mix software.


m_freeMix

private boolean m_freeMix
Stores whether the mix is waiting for a cascade assignment. This value is only true, if the mix is sending configure requests instead of HELO messages and if it is not already assigned to a cascade. This value is only meaningful within the context of the infoservice.


m_xmlStructure

private org.w3c.dom.Element m_xmlStructure
Stores the XML structure for this mix.


m_mixCertificate

private JAPCertificate m_mixCertificate
Stores the certificate for this mix. The certificate is not set (null) if the MixInfo-Object is in the InfoService


m_mixCertPath

private CertPath m_mixCertPath
Stores the certPath for this mix. The CertPath is not set (null) if the MixInfo-Object is in the InfoService


m_mixSignature

private XMLSignature m_mixSignature
Stores the signature element for this mix. The CertPath is not set (null) if the MixInfo-Object is in the InfoService


m_bFromCascade

private boolean m_bFromCascade
If this MixInfo has been recevied directly from a cascade connection.

Constructor Detail

MixInfo

public MixInfo(org.w3c.dom.Element a_mixNode)
        throws XMLParseException
Creates a new MixInfo from XML description (Mix node). The state of the mix will be set to non-free (only meaningful within the context of the infoservice).

Parameters:
a_mixNode - The Mix node from an XML document.
Throws:
XMLParseException

MixInfo

public MixInfo(org.w3c.dom.Element a_mixNode,
               long a_expireTime)
        throws XMLParseException
Creates a new MixInfo from XML description (Mix node). The state of the mix will be set to non-free (only meaningful within the context of the infoservice).

Parameters:
a_mixNode - The Mix node from an XML document.
a_expireTime - forces a specific expire time; takes default expire time if <= 0
Throws:
XMLParseException

MixInfo

public MixInfo(java.lang.String a_mixID,
               CertPath a_certPath)

MixInfo

public MixInfo(org.w3c.dom.Element a_mixNode,
               long a_expireTime,
               boolean a_bFromCascade)
        throws XMLParseException
Creates a new MixInfo from XML description (Mix node). The state of the mix will be set to non-free (only meaningful within the context of the infoservice).

Parameters:
a_mixNode - The Mix node from an XML document.
a_expireTime - forces a specific expire time; takes default expire time if <= 0
a_bFromCascade - if this is a MixInfo node directly received from a cascade (it is stripped) if true, the last update value is set to 0
Throws:
XMLParseException
Method Detail

parseMixType

private int parseMixType(java.lang.String nodeValue)
                  throws XMLParseException
LERNGRUPPE Parse the given textual MixType to our constants

Parameters:
nodeValue - The textual MixType (FirstMix, MiddleMix, LastMix)
Returns:
FIRST_MIX, MIDDLE_MIX or LAST_MIX
Throws:
XMLParseException

getId

public java.lang.String getId()
Returns the ID of the mix.

Specified by:
getId in interface IDistributable
Specified by:
getId in class AbstractDatabaseEntry
Returns:
The ID of this mix.

isFromCascade

public boolean isFromCascade()
Returns if this MixInfo has been recevied directly from a cascade connection.

Returns:
if this MixInfo has been recevied directly from a cascade connection

getLastUpdate

public long getLastUpdate()
Returns the time (see System.currentTimeMillis()), when the mix has sent this MixInfo to an infoservice.

Specified by:
getLastUpdate in class AbstractDatabaseEntry
Returns:
The send time of this MixInfo from the mix.

getVersionNumber

public long getVersionNumber()
Returns the time when this mix entry was created by the origin mix.

Specified by:
getVersionNumber in class AbstractDatabaseEntry
Returns:
A version number which is used to determine the more recent mix entry, if two entries are compared (higher version number -> more recent entry); 0 if no version number was found in this MixInfo object

getName

public java.lang.String getName()
Returns the name of the mix.

Returns:
The name of this mix.

isVerified

public boolean isVerified()
Description copied from class: AbstractDistributableCertifiedDatabaseEntry
Returns if this entry has been verified with a certificate chain.

Specified by:
isVerified in interface IVerifyable
Specified by:
isVerified in class AbstractDistributableCertifiedDatabaseEntry
Returns:
if this entry has been verified with a certificate chain

isValid

public boolean isValid()
Description copied from interface: IVerifyable
Returns if the object is valid at this time

Specified by:
isValid in interface IVerifyable
Returns:
if the object is valid at this time

getCertificate

public JAPCertificate getCertificate()
Returns the certificate of the mix For MixInfo-Objects in the InfoService the certificate is null

Specified by:
getCertificate in class AbstractDistributableCertifiedDatabaseEntry
Returns:
the certificate of the mix

getCertPath

public CertPath getCertPath()
Returns the CertPath of the mix For MixInfo-Objects in the InfoService the CertPath is null

Specified by:
getCertPath in interface IVerifyable
Returns:
the CertPath of the mix

getServiceLocation

public ServiceLocation getServiceLocation()
Returns the location of the mix.

Returns:
The location information for this mix.

getServiceOperator

public ServiceOperator getServiceOperator()
Returns information about the operator of this mix.

Returns:
The operator information for this mix.

getServiceSoftware

public ServiceSoftware getServiceSoftware()
Returns information about the used software in this mix.

Returns:
The software information for this mix.

isFreeMix

public boolean isFreeMix()
Returns whether the mix is waiting for a cascade assignment. This value is only true, if the mix is sending configure requests instead of HELO messages and if it is not already assigned to a cascade. The returned value is only meaningful within the context of the infoservice.

Returns:
Whether this mix is currently free and can be assigned to a mixcascade.

setFreeMix

public void setFreeMix(boolean a_freeMix)
Changes the state of this mix (whether it is free or not). If the mix is free, it will appear in the list of free mixes. This mixes can be assigned to new cascades. If the specified value is false, it will not appear in the list and cannot be assigned to new cascades. This value is only meaningful within the context of the infoservice.

Parameters:
a_freeMix - Whether to treat this mix as free (true) or not (false).

getPostFile

public java.lang.String getPostFile()
This returns the filename (InfoService command), where this mix entry is posted at other InfoServices. It's '/helo' if the mix is not treated as free of '/configure' if this mix is currently free and needs to be assigned to a mixcascade.

Specified by:
getPostFile in interface IDistributable
Returns:
The filename where the information about this mix is posted at other infoservices when this entry is forwarded.

getXmlStructure

public org.w3c.dom.Element getXmlStructure()
Returns the XML structure for this mix entry.

Specified by:
getXmlStructure in class AbstractDistributableDatabaseEntry
Returns:
The XML node for this mix entry (Mix node).

getType

public int getType()
LERNGRUPPE Returns the type of this mix

Returns:
The type

getTypeAsString

public java.lang.String getTypeAsString()
LERNGRUPPE Returns the type of this mix

Returns:
The type as string

isDynamic

public boolean isDynamic()
LERNGRUPPE Returns true if this mix is available for dynamic cascades, false otherwise.

Returns:
Returns true if this mix is available for dynamic cascades, false otherwise.

getFirstHostName

public java.lang.String getFirstHostName()
                                  throws java.lang.Exception
LERNGRUPPE Extracts the host name from first listenerinterface.

Returns:
host
Throws:
java.lang.Exception

getFirstPort

public int getFirstPort()
                 throws java.lang.Exception
LERNGRUPPE Extracts the port from first listenerinterface.

Returns:
host
Throws:
java.lang.Exception