Class SessionInfo
- java.lang.Object
- com.iizix.SessionInfo
- All Implemented Interfaces:
IPrivateStorage
,java.lang.Cloneable
public class SessionInfo extends java.lang.Object implements IPrivateStorage, java.lang.Cloneable
This class contains information of the remote party and its connection, etc.- Author:
- Christopher Mindus
Field Summary
Fields Modifier and Type Field Description static int
API_TRACE_INDEX
The index for API trace.static int
COMMUNICATION_TRACE_INDEX
The index for Communication trace.static int
CONNECTOR_TRACE_INDEX
The index for Connector trace.long
creationTime
The creation time in milliseconds.static int
ENDPOINT_TRACE_INDEX
The index for EndPoint trace.static int
TRACE_BIT_BINARY
The trace level bits.static int
TRACE_BIT_VERBOSE
The trace level bits for verbose trace.byte[]
traceLevels
The trace levels of the subsystems Communication, Connector, EndPoint, API.SessionUserIdentifier
user
The session user identifier, null if not defined properly.
Constructor Summary
Constructors Constructor Description SessionInfo(long connectionID, byte[] defaultTrace, java.net.InetSocketAddress remoteAddress, java.lang.String hostName)
The full constructor with all parameters.SessionInfo(long connectionID, java.net.InetSocketAddress remoteAddress, java.lang.String hostName)
The constructor initiates the trace levels to defaults, and no User ID.SessionInfo(java.net.InetSocketAddress remoteAddress)
The constructor initiates the connection ID to -1 (none), the trace levels to defaults, and no User ID.
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description void
assignRemoteAddress(java.net.InetSocketAddress remoteAddress, java.lang.String hostName, java.lang.String domain, int port, boolean isSecure)
Assigns a remote address.void
assignServerSessionID(long serverSessionID)
Assigns the connection ID for a Server Session ID.boolean
assignThread()
Temporarily assigns a SessionInfo object to a thread.SessionInfo
createClone()
Creates a copy of an instance of this instance.void
dispose()
Disposes of this instance and cleans up thread usage.boolean
doAPIBinaryTrace()
Checks if API binary trace is on.boolean
doAPIVerboseTrace()
Checks if API verbose trace is on.boolean
doCommunicationBinaryTrace()
Checks if Communication binary trace is on.boolean
doCommunicationVerboseTrace()
Checks if Communication verbose trace is on.boolean
doConnectorBinaryTrace()
Checks if Connector binary trace is on.boolean
doConnectorVerboseTrace()
Checks if Connector verbose trace is on.boolean
doEndPointBinaryTrace()
Checks if EndPoint binary trace is on.boolean
doEndPointVerboseTrace()
Checks if EndPoint verbose trace is on.long
getConnectionID()
Gets the connection ID.java.lang.String
getConnectionIDString()
Gets the connection ID as a string.static java.lang.String
getConnectionIDString(SessionInfo sessionInfo)
Gets the connection ID as a string.static java.lang.String
getConnectionIDString(SessionInfo sessionInfo, java.lang.String threadName, java.lang.String threadID)
Gets the connection ID as a string.java.lang.String
getDomain()
Gets the domain name of the server.java.lang.String
getHostName()
Gets the host name, as provided by the (web) server for the connection without looking up using reverse DNS, null indicates not set.static java.lang.String
getIDString(long id)
Converts an ID into a string.static long
getNextID()
For Editor, used to get the Session ID.int
getPort()
Gets the port used for the connection.java.util.Map<java.lang.String,java.lang.Object>
getPrivateStorageMap()
Gets the concurrent hash map used to store the private data.IGProp<?>
getReferenceLookupProperty()
Gets the Session's reference look-up property.java.net.InetSocketAddress
getRemoteAddress()
Gets the address of the remote party, null if none is yet provided.SessionID
getSessionID()
Gets the session ID.static SessionInfo
getSessionInfo()
Tries to extract the SessionInfo from the current thread or the thread group.static SessionInfo
getSessionInfoFBTS()
Tries to extract the SessionInfo from the current thread or the thread group.static java.lang.String
getTabDelimitedConnectionIDString(SessionInfo sessionInfo, java.lang.String threadName, java.lang.String threadID)
Gets the connection ID as a string.java.util.UUID
getUUID()
Gets the unique session UUID for client reconnection purposes.java.lang.String
getUUIDString()
Gets the unique session UUID for client reconnection purposes.Worker
getWorker()
Gets the worker for the session.boolean
isSecure()
Return if the connection is secured using SSL/TLS.void
setWorker(Worker worker)
Sets the worker for the session.java.lang.String
toString()
Gets the string representation of the information in this instance.static void
unassignThread()
Cleans up after assigning a SessionInfo object to a thread.Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
Methods inherited from interface com.iizix.api.IPrivateStorage
getPrivateData, getPrivateData, setPrivateData
Field Detail
COMMUNICATION_TRACE_INDEX
public static final int COMMUNICATION_TRACE_INDEX
The index for Communication trace.- See Also:
- Constant Field Values
CONNECTOR_TRACE_INDEX
public static final int CONNECTOR_TRACE_INDEX
The index for Connector trace.- See Also:
- Constant Field Values
ENDPOINT_TRACE_INDEX
public static final int ENDPOINT_TRACE_INDEX
The index for EndPoint trace.- See Also:
- Constant Field Values
API_TRACE_INDEX
public static final int API_TRACE_INDEX
The index for API trace.- See Also:
- Constant Field Values
TRACE_BIT_BINARY
public static final int TRACE_BIT_BINARY
The trace level bits.- See Also:
- Constant Field Values
TRACE_BIT_VERBOSE
public static final int TRACE_BIT_VERBOSE
The trace level bits for verbose trace.- See Also:
- Constant Field Values
user
public SessionUserIdentifier user
The session user identifier, null if not defined properly.
traceLevels
public final byte[] traceLevels
The trace levels of the subsystems Communication, Connector, EndPoint, API. The values are initially set to -1 indicating it used the default trace setting. The range of the trace is 0-3, or -1 for default.The values are:
-1 = default trace,
0 = no trace,
1 = binary trace,
2 = verbose trace,
3 = binary and verbose trace.The indexes are:
0 = Communication,
1 = Connector,
2 = EndPoint,
3 = API.
creationTime
public final long creationTime
The creation time in milliseconds.
Constructor Detail
SessionInfo
public SessionInfo(java.net.InetSocketAddress remoteAddress)
The constructor initiates the connection ID to -1 (none), the trace levels to defaults, and no User ID.- Parameters:
remoteAddress
- The remote address of the party.
SessionInfo
public SessionInfo(long connectionID, java.net.InetSocketAddress remoteAddress, java.lang.String hostName)
The constructor initiates the trace levels to defaults, and no User ID.- Parameters:
connectionID
- The connection ID.remoteAddress
- The remote address of the party.hostName
- The host name of the remote party.
SessionInfo
public SessionInfo(long connectionID, byte[] defaultTrace, java.net.InetSocketAddress remoteAddress, java.lang.String hostName)
The full constructor with all parameters.- Parameters:
connectionID
- The connection ID.defaultTrace
- The array of trace settings, non-null.remoteAddress
- The remote address of the party.hostName
- The host name of the remote party.- Throws:
java.lang.NullPointerException
- IfdefaultTrace
is null.java.lang.IllegalArgumentException
- IfdefaultTrace
is is not of length 4.
Method Detail
getNextID
public static long getNextID()
For Editor, used to get the Session ID.- Returns:
- The next unique Session ID.
getSessionInfo
public static SessionInfo getSessionInfo()
Tries to extract the SessionInfo from the current thread or the thread group.- Returns:
- The SessionInfo instance for the current calling thread or thread group, or null if not found.
getSessionInfoFBTS
public static SessionInfo getSessionInfoFBTS()
Tries to extract the SessionInfo from the current thread or the thread group.- Returns:
- The SessionInfo instance for the current calling thread or thread group, or the System SessionInfo if no other was found (FBS=FallBackToSystem).
unassignThread
public static void unassignThread()
Cleans up after assigning a SessionInfo object to a thread.This call is intended to be used with threads in thread-pools.
This is needed to be called in order not to leak memory. When a SessionInfo object is disposed, it performs a clean-up.
getPrivateStorageMap
public java.util.Map<java.lang.String,java.lang.Object> getPrivateStorageMap()
Gets the concurrent hash map used to store the private data.- Specified by:
getPrivateStorageMap
in interfaceIPrivateStorage
- Returns:
- The private storage map.
getUUID
public java.util.UUID getUUID()
Gets the unique session UUID for client reconnection purposes.- Returns:
- The unique UUID.
getUUIDString
public java.lang.String getUUIDString()
Gets the unique session UUID for client reconnection purposes.- Returns:
- String The unique session UUID as
.UUID.toString()
assignRemoteAddress
public void assignRemoteAddress(java.net.InetSocketAddress remoteAddress, java.lang.String hostName, java.lang.String domain, int port, boolean isSecure)
Assigns a remote address.- Parameters:
remoteAddress
- The remote address.hostName
- The host name.domain
- The domain name.port
- The port number used for the connection, or zero for none specified.isSecure
- The secure (SSL/TLS) flag.- Throws:
java.lang.IllegalStateException
- If the domain name is already set to another value.
assignServerSessionID
public void assignServerSessionID(long serverSessionID)
Assigns the connection ID for a Server Session ID.- Parameters:
serverSessionID
- The server session ID to assign.
getRemoteAddress
public java.net.InetSocketAddress getRemoteAddress()
Gets the address of the remote party, null if none is yet provided.- Returns:
- The address, or null if not yet assigned.
getHostName
public java.lang.String getHostName()
Gets the host name, as provided by the (web) server for the connection without looking up using reverse DNS, null indicates not set.- Returns:
- The host name, or null if not set.
getDomain
public java.lang.String getDomain()
Gets the domain name of the server.- Returns:
- The domain name.
getPort
public int getPort()
Gets the port used for the connection.- Returns:
- The port number, or zero for none specified.
isSecure
public boolean isSecure()
Return if the connection is secured using SSL/TLS.- Returns:
- The secure flag. Please note that if the server is behind a proxy, the connection might be secure anyway.
assignThread
public boolean assignThread()
Temporarily assigns a SessionInfo object to a thread.This call is intended to be used with threads in thread-pools.
It is very important to clean-up with a "fails-safe" try-finally or similar to call the
unassignThread()
method. This is needed EVEN if the thread will not be used for other purposes. Failure in doing so will cause a memory leak until this instance of SessionInfo is disposed of. It is ALSO very important to check the return code whether to callSessionInfo.unassignThread()
or not.- Returns:
- true for successfully assigned and that a call to
SessionInfo.unassignThread()
in the try-finally clauseMUST
be done, false if already assigned andSessionInfo.unassignThread()
SHOULD NOT be called.
createClone
public SessionInfo createClone()
Creates a copy of an instance of this instance. This is used in the Administration Interface. The session ID and worker instances are cleared.- Returns:
- A cloned SessionInfo instance.
getConnectionID
public long getConnectionID()
Gets the connection ID.- Returns:
- This connection ID.
getConnectionIDString
public static java.lang.String getConnectionIDString(SessionInfo sessionInfo)
Gets the connection ID as a string. If no data exists, i.e. source is null or -1, the string "<system>" is returned.- Parameters:
sessionInfo
- The session information, or null for system.- Returns:
- The string for the session ID in the parameter.
getConnectionIDString
public static java.lang.String getConnectionIDString(SessionInfo sessionInfo, java.lang.String threadName, java.lang.String threadID)
Gets the connection ID as a string. If no data exists, i.e. source is null or -1, the string "<system>" is returned.- Parameters:
sessionInfo
- The session information.threadName
- The name of the thread.threadID
- The thread ID.- Returns:
- A string delimited with double spaces.
getTabDelimitedConnectionIDString
public static java.lang.String getTabDelimitedConnectionIDString(SessionInfo sessionInfo, java.lang.String threadName, java.lang.String threadID)
Gets the connection ID as a string. If no data exists, i.e. source is null or -1, the string "<system>" is returned. The parameters are tab delimited instead of filled out with spaces.- Parameters:
sessionInfo
- The session information.threadName
- The name of the thread.threadID
- The thread ID.- Returns:
- A tab delimited string.
getConnectionIDString
public java.lang.String getConnectionIDString()
Gets the connection ID as a string. If no data exists, i.e. source is -1, the string "<system>" is returned.- Returns:
- The ID as a string or "<system>" when no ID is present.
getIDString
public static java.lang.String getIDString(long id)
Converts an ID into a string.- Parameters:
id
- The ID.- Returns:
- The ID as a String with leading zero's.
doCommunicationBinaryTrace
public boolean doCommunicationBinaryTrace()
Checks if Communication binary trace is on.- Returns:
- true if the trace option is selected.
doCommunicationVerboseTrace
public boolean doCommunicationVerboseTrace()
Checks if Communication verbose trace is on.- Returns:
- true if the trace option is selected.
doConnectorBinaryTrace
public boolean doConnectorBinaryTrace()
Checks if Connector binary trace is on.- Returns:
- true if the trace option is selected.
doConnectorVerboseTrace
public boolean doConnectorVerboseTrace()
Checks if Connector verbose trace is on.- Returns:
- true if the trace option is selected.
doEndPointBinaryTrace
public boolean doEndPointBinaryTrace()
Checks if EndPoint binary trace is on.- Returns:
- true if the trace option is selected.
doEndPointVerboseTrace
public boolean doEndPointVerboseTrace()
Checks if EndPoint verbose trace is on.- Returns:
- true if the trace option is selected.
doAPIBinaryTrace
public boolean doAPIBinaryTrace()
Checks if API binary trace is on.- Returns:
- true if the trace option is selected.
doAPIVerboseTrace
public boolean doAPIVerboseTrace()
Checks if API verbose trace is on.- Returns:
- true if the trace option is selected.
setWorker
public void setWorker(Worker worker)
Sets the worker for the session. This can only be done once. This method should only be used internally by the server.- Parameters:
worker
- The worker to assign to the session.- Throws:
java.lang.NullPointerException
- If worker is null.java.lang.IllegalStateException
- If a call to setWorker already has been made.
getWorker
public Worker getWorker()
Gets the worker for the session.- Returns:
- The worker for the session or null if none is available or yet assigned.
getSessionID
public SessionID getSessionID()
Gets the session ID.- Returns:
- The session ID or null if not set.
toString
public java.lang.String toString()
Gets the string representation of the information in this instance.- Overrides:
toString
in classjava.lang.Object
- Returns:
- A string representation of the information of the session instance.
dispose
public void dispose()
Disposes of this instance and cleans up thread usage.
getReferenceLookupProperty
public IGProp<?> getReferenceLookupProperty()
Gets the Session's reference look-up property.- Returns:
- The property to use for global look-ups with full references.