Class EventPublisher
- java.lang.Object
-
- org.ovirt.vdsm.jsonrpc.client.events.EventPublisher
-
- All Implemented Interfaces:
Publisher<java.util.Map<java.lang.String,java.lang.Object>,EventSubscriber>
public class EventPublisher extends java.lang.Object implements Publisher<java.util.Map<java.lang.String,java.lang.Object>,EventSubscriber>
Jsonrpc implementation ofPublisher
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description (package private) class
EventPublisher.EventCallable
Event processing task which is submit to aExecutorService
for processing.
-
Field Summary
Fields Modifier and Type Field Description private EventDecomposer
decomposer
private int
eventTimeoutInHours
private java.util.concurrent.ExecutorService
executorService
private static org.slf4j.Logger
log
private SubscriptionMatcher
matcher
private java.util.concurrent.ScheduledExecutorService
scheduledExecutorService
-
Constructor Summary
Constructors Constructor Description EventPublisher(java.util.concurrent.ExecutorService executorService, int eventTimeoutInHours)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description private void
clean(SubscriptionHolder holder)
void
cleanupOldEvents()
void
close()
int
countEvents(JsonRpcEvent event)
private void
process(SubscriptionHolder holder)
void
process(JsonRpcEvent event)
This method is used by @linkResponseWorker
to submit an @linkJsonRpcEvent
for processing.void
publish(java.lang.String subscriptionId, java.util.Map<java.lang.String,java.lang.Object> params)
RequestPublisher
to send data.private void
scheduleCleanupTask()
void
subscribe(EventSubscriber subscriber)
RequestPublisher
to start streaming data.
-
-
-
Field Detail
-
log
private static org.slf4j.Logger log
-
executorService
private java.util.concurrent.ExecutorService executorService
-
scheduledExecutorService
private java.util.concurrent.ScheduledExecutorService scheduledExecutorService
-
matcher
private SubscriptionMatcher matcher
-
decomposer
private EventDecomposer decomposer
-
eventTimeoutInHours
private int eventTimeoutInHours
-
-
Method Detail
-
scheduleCleanupTask
private void scheduleCleanupTask()
-
cleanupOldEvents
public void cleanupOldEvents()
-
subscribe
public void subscribe(EventSubscriber subscriber)
Description copied from interface:Publisher
RequestPublisher
to start streaming data.This is a "factory method" and can be called multiple times, each time starting a new
Subscription
.Each
Subscription
will work for only a singleSubscriber
.A
Subscriber
should only subscribe once to a singlePublisher
.If the
Publisher
rejects the subscription attempt or otherwise fails it will signal the error viaSubscriber.onError(java.lang.Throwable)
.- Specified by:
subscribe
in interfacePublisher<java.util.Map<java.lang.String,java.lang.Object>,EventSubscriber>
- Parameters:
subscriber
- theSubscriber
that will consume signals from thisPublisher
-
publish
public void publish(java.lang.String subscriptionId, java.util.Map<java.lang.String,java.lang.Object> params) throws java.io.IOException
Description copied from interface:Publisher
RequestPublisher
to send data.- Specified by:
publish
in interfacePublisher<java.util.Map<java.lang.String,java.lang.Object>,EventSubscriber>
- Parameters:
subscriptionId
- the identifier forSubscriber
who will consume the eventparams
- the data that needs to be sent to theSubscriber
- Throws:
java.io.IOException
- an exception is thrown if the params cannot be serialized
-
process
private void process(SubscriptionHolder holder)
-
clean
private void clean(SubscriptionHolder holder)
-
process
public void process(JsonRpcEvent event)
This method is used by @linkResponseWorker
to submit an @linkJsonRpcEvent
for processing.- Parameters:
event
- which is submitted for processing.
-
countEvents
public int countEvents(JsonRpcEvent event)
-
close
public void close()
-
-