Class SubscriptionMatcher
- java.lang.Object
-
- org.ovirt.vdsm.jsonrpc.client.events.SubscriptionMatcher
-
public class SubscriptionMatcher extends java.lang.Object
Matcher is responsible for holding all subscriptions and match them to incoming events. Matching process is based on subscription id which is represented by 4 subscription types: <receiver>.<component>.<operation_id>.<unique_id> <receiver> - Uniquely identifies host from which event arrived <component> - Logical component like: Storage, Virt etc <operation_id> - Operation identifier like Image.create <unique_id> - Identifier of a specific operation User can subscribe to all events by defining '*' for each subscription type. Registration for all possible events like '*|*|*|*' is not allowed. User can register for specific component operation using '*|storage|*|*' which means that all events triggered by storage component are delivered to a subscriber.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description private static interface
SubscriptionMatcher.Predicate
-
Field Summary
Fields Modifier and Type Field Description private java.util.List<SubscriptionHolder>
allSubscriptions
private java.util.concurrent.ConcurrentMap<java.lang.String,java.util.List<SubscriptionHolder>>
component
private java.util.concurrent.ConcurrentMap<java.lang.String,java.util.List<SubscriptionHolder>>
operation
private java.util.concurrent.ConcurrentMap<java.lang.String,java.util.List<SubscriptionHolder>>
receiver
private java.util.concurrent.ConcurrentMap<java.lang.String,SubscriptionHolder>
unique_id
-
Constructor Summary
Constructors Constructor Description SubscriptionMatcher()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
add(SubscriptionHolder holder)
Adds aSubscriptionHolder
which will be used for event matchingprivate void
addHolders(java.util.Set<SubscriptionHolder> holders, java.util.concurrent.ConcurrentMap<java.lang.String,java.util.List<SubscriptionHolder>> map, int key, java.lang.String[] ids, SubscriptionMatcher.Predicate predicate)
private void
clean(java.util.concurrent.ConcurrentMap<java.lang.String,java.util.List<SubscriptionHolder>> map, java.lang.String key, SubscriptionHolder holder)
java.util.List<SubscriptionHolder>
getAllSubscriptions()
java.util.Set<SubscriptionHolder>
match(JsonRpcEvent event)
Matches current subscriptions to an event and returns aSet
containing all subscriptions that match for this event processing.void
remove(SubscriptionHolder holder)
Used during removal of a subscription.private void
update(java.util.concurrent.ConcurrentMap<java.lang.String,java.util.List<SubscriptionHolder>> map, java.lang.String key, SubscriptionHolder holder)
private void
validateKey(java.lang.String key)
-
-
-
Field Detail
-
receiver
private java.util.concurrent.ConcurrentMap<java.lang.String,java.util.List<SubscriptionHolder>> receiver
-
component
private java.util.concurrent.ConcurrentMap<java.lang.String,java.util.List<SubscriptionHolder>> component
-
operation
private java.util.concurrent.ConcurrentMap<java.lang.String,java.util.List<SubscriptionHolder>> operation
-
unique_id
private java.util.concurrent.ConcurrentMap<java.lang.String,SubscriptionHolder> unique_id
-
allSubscriptions
private java.util.List<SubscriptionHolder> allSubscriptions
-
-
Method Detail
-
add
public void add(SubscriptionHolder holder)
Adds aSubscriptionHolder
which will be used for event matching- Parameters:
holder
- Instance holding subscription information.
-
update
private void update(java.util.concurrent.ConcurrentMap<java.lang.String,java.util.List<SubscriptionHolder>> map, java.lang.String key, SubscriptionHolder holder)
-
validateKey
private void validateKey(java.lang.String key)
-
match
public java.util.Set<SubscriptionHolder> match(JsonRpcEvent event)
Matches current subscriptions to an event and returns aSet
containing all subscriptions that match for this event processing.- Parameters:
event
- Incoming event used to match subscribers.- Returns:
- A
Set
with matched subscriptions.
-
addHolders
private void addHolders(java.util.Set<SubscriptionHolder> holders, java.util.concurrent.ConcurrentMap<java.lang.String,java.util.List<SubscriptionHolder>> map, int key, java.lang.String[] ids, SubscriptionMatcher.Predicate predicate)
-
remove
public void remove(SubscriptionHolder holder)
Used during removal of a subscription.- Parameters:
holder
- Object holding information about subscription being removed.
-
clean
private void clean(java.util.concurrent.ConcurrentMap<java.lang.String,java.util.List<SubscriptionHolder>> map, java.lang.String key, SubscriptionHolder holder)
-
getAllSubscriptions
public java.util.List<SubscriptionHolder> getAllSubscriptions()
-
-