package com.emc.storageos.volumecontroller.impl; import com.emc.storageos.coordinator.client.service.DistributedQueueItemProcessedCallback; import com.emc.storageos.coordinator.client.service.impl.DistributedLockQueueTaskConsumerCallback; import com.emc.storageos.coordinator.client.service.impl.DistributedLockQueueTaskConsumer; import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** * Consume ControlRequest instances for the purpose of queueing them back onto the {@link Dispatcher}. * * @author Ian Bibby */ public class ControlRequestTaskConsumer extends DistributedLockQueueTaskConsumer<ControlRequest> { private static final Logger log = LoggerFactory.getLogger(ControlRequestTaskConsumer.class); private Dispatcher dispatcher; public void setDispatcher(Dispatcher dispatcher) { this.dispatcher = dispatcher; } @Override public void consumeTask(ControlRequest task, final DistributedLockQueueTaskConsumerCallback callback) { try { log.info("Sending locked ControlRequest to the dispatcher"); dispatcher.queue(task); callback.taskConsumed(); } catch (Exception e) { log.error("Error occurred consuming task.", e); } } }