public final class ConnectionSettingsNegotiator extends SettingsNegotiator
SettingsNegotiator
parent class,
ConnectionSettingsNegotiator
instances provide all methods necessary for text parameter negotiation and for
creating Settings
objects, which allow access to the current parameters.
Each instance of this class belongs to one Connection
, for which it manages all connection-specific
parameters. A similar association exists between the connection's enclosing TargetSession
and the
sessionSettingsNegotiator
member variable.
A negotiation sequence consists of the following steps, performed in the given order:
beginNegotiation()
until it returns true
.negotiate(TargetServer, LoginStage, boolean, boolean, List, List)
. The method will return false
if there was a problem.checkConstraints()
to check more complex requirements. The method will return false
if
there was a problem.finishNegotiation(boolean)
with the appropriate parameter. This step is mandatory.backUpEntries, entries
Constructor and Description |
---|
ConnectionSettingsNegotiator(SessionSettingsNegotiator sessionSettingsNegotiator)
The
ConnectionSettingsNegotiator constructor. |
Modifier and Type | Method and Description |
---|---|
boolean |
beginNegotiation()
This method must be called at the beginning of a parameter negotiation sequence.
|
boolean |
checkConstraints()
Checks constraints that cannot be checked at the
Entry level, e.g. |
void |
finishNegotiation(boolean commitChanges)
This method must be called at the end of a negotiation sequence.
|
Settings |
getSettings()
This method checks if any parameter changes have been committed since the last call and, if so, creates a new
Settings object reflecting the current parameters. |
protected void |
initializeEntries()
Adds a properly initialized
Entry object to SettingsNegotiator.entries for every parameter managed by this
SettingsNegotiator . |
boolean |
negotiate(TargetServer target,
org.jscsi.parser.login.LoginStage loginStage,
boolean leadingConnection,
boolean initialPdu,
List<String> requestKeyValuePairs,
List<String> responseKeyValuePairs)
Processes one or more key-value pairs sent by the initiator, formulates response key-value pairs
and changes the involved
Entry instances accordingly. |
protected void |
updateSettingsBuilderComponent()
Updates
ConnectionSettingsBuilderComponent with the currently valid parameters retrieved from the
elements of SettingsNegotiator.entries . |
backUpEntries, commitOrRollBackChanges, copy
public ConnectionSettingsNegotiator(SessionSettingsNegotiator sessionSettingsNegotiator)
ConnectionSettingsNegotiator
constructor.sessionSettingsNegotiator
- the SessionSettingsNegotiator
maintaining all Entry
objects for
session-wide parameterspublic boolean beginNegotiation()
This method will block until no other ConnectionSettingsNegotiator
is negotiating and will return
true
if negotiations may proceed, or false
, if the request for the permission to
negotiate was denied.
true
if and only if the caller is allowed to negotiate parametersfinishNegotiation(boolean)
public void finishNegotiation(boolean commitChanges)
Entry
objects must be discarded by setting the commitChanges parameter to
false
. If it is true
, then the parameter changes will be incorporated into the updated
settings
.
Calling this method should be ensured by a try ... catch ...
finally
block.
commitChanges
- true
if and only if the negotiated parameter changes are to be committedpublic boolean negotiate(TargetServer target, org.jscsi.parser.login.LoginStage loginStage, boolean leadingConnection, boolean initialPdu, List<String> requestKeyValuePairs, List<String> responseKeyValuePairs)
Entry
instances accordingly.loginStage
- specifies the current stage or phaseleadingConnection
- true
if and only if the connection is the first connection of the enclosing
sessioninitialPdu
- true
if and only if the key-value pairs were sent in the first
ProtocolDataUnit
received on this connectionrequestKeyValuePairs
- contains the key-value pairs from the initiator; processed elements will be
removedresponseKeyValuePairs
- will contain the key-value pairs from the jSCSI targettrue
if everything went fine and false
if there was an irreconcilable problempublic boolean checkConstraints()
SettingsNegotiator
Entry
level, e.g. because they depend on the values of
multiple parameters.checkConstraints
in class SettingsNegotiator
true
if everything is fine, false
if that is not the casepublic Settings getSettings()
Settings
object reflecting the current parameters.protected void initializeEntries()
SettingsNegotiator
Entry
object to SettingsNegotiator.entries
for every parameter managed by this
SettingsNegotiator
.initializeEntries
in class SettingsNegotiator
protected void updateSettingsBuilderComponent()
ConnectionSettingsBuilderComponent
with the currently valid parameters retrieved from the
elements of SettingsNegotiator.entries
.Copyright © 2013 University of Konstanz, Distributed Systems Group. All Rights Reserved.