Class StripedExecutorServiceMonitorNotificationServiceFactory
- java.lang.Object
-
- org.epics.ca.impl.monitor.striped.StripedExecutorServiceMonitorNotificationServiceFactory
-
- All Implemented Interfaces:
java.lang.AutoCloseable,MonitorNotificationServiceFactory
public class StripedExecutorServiceMonitorNotificationServiceFactory extends java.lang.Object implements MonitorNotificationServiceFactory, java.lang.AutoCloseable
-
-
Constructor Summary
Constructors Constructor Description StripedExecutorServiceMonitorNotificationServiceFactory(int numberOfThreads)Creates a new factory with the capability of generating MonitorNotificationService instances for each Consumer.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description voidclose()Closes down this service factory and releases all underlying resources.intgetQosMetricBufferSizePerConsumer()Returns an indication of the size of each consumer's notification buffer (for service implementations which provide buffering).booleangetQosMetricIsBuffered()Returns an indication of whether this service implementation can be expected to drop notifications or whether it will buffer them in situations where the publication rate exceeds the rate at which the consumers can process the data.booleangetQosMetricIsNullPublishable()Returns an indication of whether the publish method accepts null as a valid token to be sent to the Coinsumer.intgetQosMetricNumberOfNotificationThreadsPerConsumer()Returns an indication of how many threads the consumer may be called back on.intgetServiceCount()Returns the count of service instances created by this provider.<T> MonitorNotificationService<T>getServiceForConsumer(java.util.function.Consumer<? super T> consumer)Returns a service instance which will publish events to the specified Consumer.
-
-
-
Constructor Detail
-
StripedExecutorServiceMonitorNotificationServiceFactory
public StripedExecutorServiceMonitorNotificationServiceFactory(int numberOfThreads)
Creates a new factory with the capability of generating MonitorNotificationService instances for each Consumer. This factory provides service instances based on a StripedExecutorService, multiple notification threads and an unbounded value notification buffer.- Parameters:
numberOfThreads- the number of threads that for the StripedExecutorService.
-
-
Method Detail
-
getServiceForConsumer
public <T> MonitorNotificationService<T> getServiceForConsumer(java.util.function.Consumer<? super T> consumer)
Returns a service instance which will publish events to the specified Consumer.- Specified by:
getServiceForConsumerin interfaceMonitorNotificationServiceFactory- Type Parameters:
T- the type of events that this service instance will publish.- Parameters:
consumer- the consumer to publish to.- Returns:
- the service instance.
-
close
public void close()
Closes down this service factory and releases all underlying resources. This implementation calls close on all service instances that it previously created.- Specified by:
closein interfacejava.lang.AutoCloseable- Specified by:
closein interfaceMonitorNotificationServiceFactory
-
getServiceCount
public int getServiceCount()
Returns the count of service instances created by this provider.- Specified by:
getServiceCountin interfaceMonitorNotificationServiceFactory- Returns:
- the result.
-
getQosMetricNumberOfNotificationThreadsPerConsumer
public int getQosMetricNumberOfNotificationThreadsPerConsumer()
Returns an indication of how many threads the consumer may be called back on. Where multiple threads are involved the consumer may wish to synchronize their accept method to force serialisation of the notification sequence so that events get notified in the same sequence as they were published.- Specified by:
getQosMetricNumberOfNotificationThreadsPerConsumerin interfaceMonitorNotificationServiceFactory- Returns:
- the result.
- Implementation Note:
- Returns the value that was configured during class construction.
-
getQosMetricIsNullPublishable
public boolean getQosMetricIsNullPublishable()
Returns an indication of whether the publish method accepts null as a valid token to be sent to the Coinsumer.- Specified by:
getQosMetricIsNullPublishablein interfaceMonitorNotificationServiceFactory- Returns:
- the result.
- Implementation Note:
- False for this service factory.
-
getQosMetricIsBuffered
public boolean getQosMetricIsBuffered()
Returns an indication of whether this service implementation can be expected to drop notifications or whether it will buffer them in situations where the publication rate exceeds the rate at which the consumers can process the data.- Specified by:
getQosMetricIsBufferedin interfaceMonitorNotificationServiceFactory- Returns:
- the result.
- Implementation Note:
- True for this service factory.
-
getQosMetricBufferSizePerConsumer
public int getQosMetricBufferSizePerConsumer()
Returns an indication of the size of each consumer's notification buffer (for service implementations which provide buffering). Returns 1 in the case that the service implementation is not buffered.- Specified by:
getQosMetricBufferSizePerConsumerin interfaceMonitorNotificationServiceFactory- Returns:
- the result.
- Implementation Note:
- Unbounded in size for this service factory.
-
-