public class ConnectorTracker extends Object implements Serializable
ClientConnector
s for a
UI.
Provides getConnector(String)
which can be used to lookup a
connector from its id. This is for framework use only and should not be
needed in applications.
Tracks which ClientConnector
s are dirty so they can be updated to the
client when the following response is sent. A connector is dirty when an
operation has been performed on it on the server and as a result of this
operation new information needs to be sent to its
ServerConnector
.
Constructor and Description |
---|
ConnectorTracker(UI uI)
Creates a new ConnectorTracker for the given uI.
|
Modifier and Type | Method and Description |
---|---|
void |
addMarkedAsDirtyListener(MarkedAsDirtyListener listener)
Adds a marked as dirty listener that will be called when a client
connector is marked as dirty.
|
void |
addStreamVariable(String connectorId,
String variableName,
StreamVariable variable)
Adds a StreamVariable of the given name to the indicated connector.
|
void |
cleanConnectorMap()
Cleans the connector map from all connectors that are no longer attached
to the application.
|
void |
cleanStreamVariable(String connectorId,
String variableName)
Removes any StreamVariable of the given name from the indicated
connector.
|
ClientConnector |
getConnector(String connectorId)
Gets a connector by its id.
|
int |
getCurrentSyncId()
Gets the most recently generated server sync id.
|
JsonObject |
getDiffState(ClientConnector connector) |
Collection<ClientConnector> |
getDirtyConnectors()
Returns a collection of all connectors which have been marked as dirty.
|
ArrayList<ClientConnector> |
getDirtyVisibleConnectors()
Returns a collection of those
dirty
connectors that are actually visible to the client. |
String |
getSeckey(StreamVariable variable)
Returns the security key associated with the given StreamVariable.
|
StreamVariable |
getStreamVariable(String connectorId,
String variableName)
Checks if the indicated connector has a StreamVariable of the given name
and returns the variable if one is found.
|
boolean |
hasDirtyConnectors()
Checks if there a dirty connectors.
|
boolean |
isClientSideInitialized(ClientConnector connector)
Checks whether the given connector has already been initialized in the
browser.
|
boolean |
isDirty(ClientConnector connector) |
boolean |
isWritingResponse()
Checks whether the response is currently being written.
|
void |
markAllClientSidesUninitialized()
Marks all currently registered connectors as uninitialized.
|
void |
markAllConnectorsClean()
Mark all connectors in this uI as clean.
|
void |
markAllConnectorsDirty()
Mark all connectors in this uI as dirty.
|
void |
markClean(ClientConnector connector)
Mark the connector as clean.
|
void |
markClientSideInitialized(ClientConnector connector)
Marks the given connector as initialized, meaning that the client-side
state has been initialized for the connector.
|
void |
markDirty(ClientConnector connector)
Mark the connector as dirty and notifies any marked as dirty listeners.
|
void |
notifyMarkedAsDirtyListeners(ClientConnector connector)
Notify all registered MarkedAsDirtyListeners the given client connector
has been marked as dirty.
|
void |
registerConnector(ClientConnector connector)
Register the given connector.
|
void |
removeMarkedAsDirtyListener(MarkedAsDirtyListener listener)
Removes a marked as dirty listener.
|
void |
setDiffState(ClientConnector connector,
JsonObject diffState) |
void |
setWritingResponse(boolean writingResponse)
Sets the current response write status.
|
void |
unregisterConnector(ClientConnector connector)
Unregister the given connector.
|
public ConnectorTracker(UI uI)
ConnectorTracker
.uI
- The uI to attach to. Cannot be null.public void registerConnector(ClientConnector connector)
The lookup method getConnector(String)
only returns registered
connectors.
connector
- The connector to register.public void unregisterConnector(ClientConnector connector)
The lookup method getConnector(String)
only returns registered
connectors.
connector
- The connector to unregisterpublic boolean isClientSideInitialized(ClientConnector connector)
connector
- the client connector to checktrue
if the initial state has previously been sent
to the browser, false
if the client-side doesn't
already know anything about the connector.public void markClientSideInitialized(ClientConnector connector)
connector
- the connector that should be marked as initializedisClientSideInitialized(ClientConnector)
public void markAllClientSidesUninitialized()
isClientSideInitialized(ClientConnector)
public ClientConnector getConnector(String connectorId)
connectorId
- The connector id to look forpublic void cleanConnectorMap()
public void markDirty(ClientConnector connector)
connector
- The connector that should be marked clean.getDirtyConnectors()
,
isWritingResponse()
public void markClean(ClientConnector connector)
connector
- The connector that should be marked clean.public void markAllConnectorsDirty()
public void markAllConnectorsClean()
public Collection<ClientConnector> getDirtyConnectors()
The state and pending RPC calls for dirty connectors are sent to the client in the following request.
public boolean hasDirtyConnectors()
public ArrayList<ClientConnector> getDirtyVisibleConnectors()
dirty
connectors
that are actually visible to the client.public JsonObject getDiffState(ClientConnector connector)
public void setDiffState(ClientConnector connector, JsonObject diffState)
public boolean isDirty(ClientConnector connector)
public boolean isWritingResponse()
true
if the response is currently being written,
false
if outside the response writing phase.setWritingResponse(boolean)
,
markDirty(ClientConnector)
public void setWritingResponse(boolean writingResponse)
This method has a side-effect of incrementing the sync id by one (see
getCurrentSyncId()
), if isWritingResponse()
returns
true
and writingResponse
is set to
false
.
writingResponse
- the new response status.IllegalArgumentException
- if the new response status is the same as the previous value.
This is done to help detecting problems caused by missed
invocations of this method.markDirty(ClientConnector)
,
isWritingResponse()
,
getCurrentSyncId()
public StreamVariable getStreamVariable(String connectorId, String variableName)
connectorId
- variableName
- public void addStreamVariable(String connectorId, String variableName, StreamVariable variable)
connectorId
- variableName
- variable
- public void cleanStreamVariable(String connectorId, String variableName)
connectorId
- variableName
- public String getSeckey(StreamVariable variable)
variable
- public int getCurrentSyncId()
The sync id is incremented by one whenever a new response is being written. This id is then sent over to the client. The client then adds the most recent sync id to each communication packet it sends back to the server. This way, the server knows at what state the client is when the packet is sent. If the state has changed on the server side since that, the server can try to adjust the way it handles the actions from the client side.
The sync id value -1
is ignored to facilitate testing with
pre-recorded requests.
setWritingResponse(boolean)
,
#connectorWasPresentAsRequestWasSent(String, long)
public void addMarkedAsDirtyListener(MarkedAsDirtyListener listener)
listener
- listener to addpublic void removeMarkedAsDirtyListener(MarkedAsDirtyListener listener)
listener
- listener to removepublic void notifyMarkedAsDirtyListeners(ClientConnector connector)
connector
- client connector marked as dirtyCopyright © 2019 Vaadin Ltd. All rights reserved.