Class SubscriptionMatcher
- java.lang.Object
-
- org.ovirt.vdsm.jsonrpc.client.events.SubscriptionMatcher
-
public class SubscriptionMatcher extends java.lang.ObjectMatcher 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 interfaceSubscriptionMatcher.Predicate
-
Field Summary
Fields Modifier and Type Field Description private java.util.List<SubscriptionHolder>allSubscriptionsprivate java.util.concurrent.ConcurrentMap<java.lang.String,java.util.List<SubscriptionHolder>>componentprivate java.util.concurrent.ConcurrentMap<java.lang.String,java.util.List<SubscriptionHolder>>operationprivate java.util.concurrent.ConcurrentMap<java.lang.String,java.util.List<SubscriptionHolder>>receiverprivate 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 voidadd(SubscriptionHolder holder)Adds aSubscriptionHolderwhich will be used for event matchingprivate voidaddHolders(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 voidclean(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 aSetcontaining all subscriptions that match for this event processing.voidremove(SubscriptionHolder holder)Used during removal of a subscription.private voidupdate(java.util.concurrent.ConcurrentMap<java.lang.String,java.util.List<SubscriptionHolder>> map, java.lang.String key, SubscriptionHolder holder)private voidvalidateKey(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 aSubscriptionHolderwhich 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 aSetcontaining all subscriptions that match for this event processing.- Parameters:
event- Incoming event used to match subscribers.- Returns:
- A
Setwith 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()
-
-