[
https://issues.apache.org/jira/browse/QPID-7658?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Lorenz Quack updated QPID-7658:
-------------------------------
Description:
Currently the AbstractVirtualHost has a Map<remoteContainerId, LinkRegistry>.
The handling of the remoteContainerId should also be encapsulated in the
LinkRegistry giving each VH only a single LinkRegistry.
The LinkRegistry is responsible for ensuring Link uniqueness and persistence
(separate JIRA).
Furthermore, the following change to the LinkRegistry is proposed:
* LinkRegistry.getSendvingLink(String remoteContrainerId, String linkName) ->
Link
* LinkRegistry.getReceivingLink(String remoteContrainerId, String linkName) ->
Link
These should always return a non-null Link. The caller (session) is responsible
for checking that the link has valid Source and Targets.
They also need to be thread-safe (e.g., two calls with the same arguments
should return the same object).
The LinkRegistry should also provide facilities to the Link to remove itself
from the Registry (for example on Link close, or error) and to update the
Termini upon resuming a Link.
If possible this should not be part of the public API. possible API:
* LinkRegistry.removeSendingLink(String localContainerId, String
remoteContrainerId, String linkName)
* LinkRegistry.removeReceivingLink(String localContainerId, String
remoteContrainerId, String linkName)
* LinkRegistry.updateLinkTermini(Link link, Source source, Target target)
The implementation of which must be thread-safe because the LinkRegistry will
be accessed on multiple threads concurrently.
was:
Currently the AbstractVirtualHost has a Map<remoteContainerId, LinkRegistry>.
The handling of the remoteContainerId should also be encapsulated in the
LinkRegistry giving each VH only a single LinkRegistry.
Furthermore the following change to the LinkRegistry is proposed:
* LinkRegistry.putSendingLinkIfAbsent(String localContainerId, String
remoteContrainerId, String linkName, Source source, Target target) ->
Pair<Source, Target>
* LinkRegistry.putReceivingLinkIfAbsent(String localContainerId, String
remoteContrainerId, String linkName, Source source, Target target) ->
Pair<Source, Target>
* LinkRegistry.getSendvingLink(String localContainerId, String
remoteContrainerId, String linkName) -> Pair<Source, Target>
* LinkRegistry.getReceivingLink(String localContainerId, String
remoteContrainerId, String linkName) -> Pair<Source, Target>
* LinkRegistry.removeSendingLink(String localContainerId, String
remoteContrainerId, String linkName) -> Pair<Source, Target>
* LinkRegistry.removeReceivingLink(String localContainerId, String
remoteContrainerId, String linkName) -> Pair<Source, Target>
The implementation of which must be thread-safe because the LinkRegistry will
be accessed on multiple threads concurrently.
> [Java Broker] Improve LinkRegistry
> ----------------------------------
>
> Key: QPID-7658
> URL: https://issues.apache.org/jira/browse/QPID-7658
> Project: Qpid
> Issue Type: Task
> Components: Java Broker
> Reporter: Lorenz Quack
> Fix For: qpid-java-7.0
>
>
> Currently the AbstractVirtualHost has a Map<remoteContainerId, LinkRegistry>.
> The handling of the remoteContainerId should also be encapsulated in the
> LinkRegistry giving each VH only a single LinkRegistry.
> The LinkRegistry is responsible for ensuring Link uniqueness and persistence
> (separate JIRA).
> Furthermore, the following change to the LinkRegistry is proposed:
> * LinkRegistry.getSendvingLink(String remoteContrainerId, String linkName) ->
> Link
> * LinkRegistry.getReceivingLink(String remoteContrainerId, String linkName)
> -> Link
> These should always return a non-null Link. The caller (session) is
> responsible for checking that the link has valid Source and Targets.
> They also need to be thread-safe (e.g., two calls with the same arguments
> should return the same object).
> The LinkRegistry should also provide facilities to the Link to remove itself
> from the Registry (for example on Link close, or error) and to update the
> Termini upon resuming a Link.
> If possible this should not be part of the public API. possible API:
> * LinkRegistry.removeSendingLink(String localContainerId, String
> remoteContrainerId, String linkName)
> * LinkRegistry.removeReceivingLink(String localContainerId, String
> remoteContrainerId, String linkName)
> * LinkRegistry.updateLinkTermini(Link link, Source source, Target target)
> The implementation of which must be thread-safe because the LinkRegistry will
> be accessed on multiple threads concurrently.
--
This message was sent by Atlassian JIRA
(v6.3.15#6346)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]